Skip to content

Initial top-level roadmap design - #456

Merged
apoelstra merged 1 commit into
BlockstreamResearch:masterfrom
apoelstra:2026-11/roadmap
Nov 4, 2026
Merged

apoelstra merged 1 commit into
BlockstreamResearch:masterfrom
apoelstra:2026-11/roadmap

Conversation

@apoelstra

Copy link
Copy Markdown
Contributor

This is a draft of the new doc/roadmap/ tree. It doesn't fill in any of the design documents for the actual features, just adds a list. Please mention if something you care about is not on here (or if something you hate is on here).

My goal with this is just to get an exhaustive list and see if we're missing anything, and to organize to see what things are "unblocked" in the sense that we can start working on them without needing other design features in place.

@apoelstra
apoelstra requested a review from delta1 as a code owner November 1, 2026 23:57

@stringhandler stringhandler left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In a16f374

I see some of the links are missing. Would it perhaps be better to create them as empty documents? I think that might be better than trying to find broken links in future.

Otherwise, happy

Comment thread doc/roadmap/README.md Outdated
|--------|---------------------------------------|---------------------------------------------------------------------|---------------|--------------|-----|
| MOD | [Module system](MOD.md) | Rust-2018-style mod1les, external crates, content-based identity | — | - | - |
| MOD-1 | Internal modules | `mod x;` loads `x.simf`; `use` only brings names into scope | — | Needs design | - |
| MOD-2 | External crates | Dependency crates identified by Merkle-style `CrateId` hash | MOD-1 | Needs design | - |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In a16f374

These potentially are also dependent on IR-2

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I put an IR-2 and changed IR-1 to depend on MOD-1 rather than MOD-2 so that we wouldn't have a circle.

I expect that we won't be able to get these dependencies exactly correct until we're into the weeds on these. Especially since some things need to be done concurrently.

FWIW I think we could do an initial version of MOD-2 which literally just hashes the file contents rather than any creative hash. This would be very limiting, but that's why we have MOD-3.

Comment thread doc/roadmap/README.md
| SYN-4 | `return` expressions | syntax sugar for "early returns" | — | Needs design | — |
| SYN-5 | Better loops | More conventional-looking, still statically bounded loops | - | Needs design | — |
| SYN-6 | Unbounded loops | Recursion, unbounded loops, general `disconnect` support? | - | Needs design | — |
| SYN-7 | Universal sighash | Better sighashing, language support for "universal sighash" | - | Needs design | — |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In a16f374

Possibly dependent on SYN-6

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so. Though it may depend on the canonical CMR. I suspect this is a thing where we can theoretically implement the feature with no other dependencies, but it'll be extremely hard to use without more language features.

@apoelstra

Copy link
Copy Markdown
Contributor Author

Pushed to add a bunch of empty documents, and one of the missing dependencies that stringhandler suggested.

@LesterEvSe

Copy link
Copy Markdown
Collaborator

I'd also like to see a feature that adds a cost flag, which reports the cost in mWU (and maybe the size of the program in bytes, memory usage). It could help us start optimizing contracts, at least in std

@stringhandler stringhandler left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 962030e

@stringhandler

Copy link
Copy Markdown
Collaborator

I think let's merge this and then further comments can be PR's or issues

@KyrylR KyrylR left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK 962030e

LGTM as it is

If anything I believe it is better to iterate over the doc in the process of developing and delivering features

@KyrylR

KyrylR commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

I'd also like to see a feature that adds a cost flag, which reports the cost in mWU (and maybe the size of the program in bytes, memory usage). It could help us start optimizing contracts, at least in std

This, for example, can be discussed and added in a follow up PR (discussion can be started on the forum)

@apoelstra

Copy link
Copy Markdown
Contributor Author

Yeah, I think this "cost" thing might make sense as an entry under the empty DIAG category. But as a followup PR.

@apoelstra

Copy link
Copy Markdown
Contributor Author

On 962030e successfully ran local tests

@apoelstra
apoelstra merged commit 56e8f39 into BlockstreamResearch:master Nov 4, 2026
14 checks passed
@apoelstra
apoelstra deleted the 2026-11/roadmap branch November 4, 2026 16:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants