What is the Reason 4 roadmap?


Lately I’ve seen less action on reason’s github, I would like to know the roadpmap of the project


If you check out #reason-core-dev on the reasonml discord there is a lot of talk about what is happening next:

Better error images in one I can think of at the top of my head


cool I will check out


Any specifics you would like to know? Perhaps they can be answered in this forum as well.


For example what happened with Async Await syntax, will be there an official repository for packages (redex is outdated), compiler improvements, the roadmap of the language, etc


Last I heard it is an open issue, https://github.com/facebook/reason/issues/1321

How so? Remember that Redex is self-service–you have to submit your package into the the index :slight_smile: It’s probably a good idea to link to it from the Reason website though–you could send a PR to do that.

The compiler is OCaml, so depending on the platform you can keep an eye on BuckleScript (for JavaScript compilation) or the upstream OCaml compiler (for native compilation) to stay up-to-date with improvements.

Unclear on what that means, but in general the language is OCaml, the syntax and tooling are Reason :slight_smile:


If you’re interested in changes to the actual programming language, Jane Street puts out great release write-ups: https://blog.janestreet.com/a-look-at-ocaml-4.08/



I have added a issue about that, I think it would be a good idea https://github.com/reasonml/reasonml.github.io/issues/407


There’s unfortunately an issue with the upstream service NPMS, which has been down for two months now and prevents redex from being updated. It’s also not the first time it’s had outages for over a month. From https://github.com/redex/redex-scripts/issues/1

NPMS seems to be more down than up these days, and since it’s an integral part of the data gathering process is blocking site updates.

NPMS is used because it gathers data from multiple sources, normalizes it and runs an analyzer which calculates quality, popularity and maintenance scores. These scores are useful for ranking packages, and gives at-a-glance information that makes it much easier to choose one package among the many alternatives that occasionally exist for a certain use-case.

Consider replacing it with the NPM API if it’s improved, a homegrown analyzer, or just give up on these features entirely.

Until this is resolved, redex is unfortunately dead in the water :frowning:

What's going to happen with Redex?

Oh, I see. That’s unfortunate. Maybe in the meantime we can swap out the advanced analytics features with maybe a ‘last updated on’ field which would at least give a rough estimate of project liveness?


Unfortunate with npms. How many packages exists? Couldn’t it just be manually maintained list of packages?

Edit: only 297, that could be maintained easier manually https://redex.github.io/all


Oh I thought it was abandoned because of it :confused:


:+1: It looks like the NPM registry API can provide most of the data, except for the analysis stuff. Download count could be used in lieu of a popularity score, and last updated as an indicator of liveliness.

It is manually maintained. But a few scripts are used to gather the data, mostly from NPMS. And maintaining that manually is really not feasible.


ReasonML is tight depend on BuckleScript, but BuckleScript platform itself is not in upstream with OCaml compiler. It is not even 4.06. Async/Await like features from OCaml 4.08 (let+, let*) is so far from BuckleScript platform support.


You are slightly out of date :slight_smile: Just to clear one misconception: ReasonML is decoupled from BuckleScript. BuckleScript however does ship with a copy of the Reason parser/printer/formatter so that people can use it out of the box.

BuckleScript 7 based on OCaml 4.06 is in testing, check the blog.

And people have backported the let-syntax to current BuckleScript, also experimentally right now. See https://github.com/jaredly/letop-bs-example . I am hopeful it will land in BuckleScript sooner than later.


Reason 4 would imply breaking changes. We are in fact accumulating a list of most frequently requested changes/improvements that would be considered breaking. But before that, let’s talk about 3.6 and 3.7 which will have a number of great improvements. The most anticipated improvement will be far superior error locations and recovery of invalid parses in editor (which improves autocomplete behavior, makes code-lenses in VSCode more stable, and gives much better/precise locations for parsing errors). We have already been testing those changes for several weeks now. I expect a small blog post to go over those improvements.
On the native side, @anmonteiro has sent a PR for new compiler versions, as well as new OCaml features such as inline opens open {module definition here}, as well as the “extensible let” syntax. Even though that feature targets more recent compiler versions than the one that Bucklescript is based on, @jaredly has added backporting of that feature even for older OCaml compiler versions! There may also be some other bonus features in there :wink:


We’ve also made a number of other good improvements that aren’t in the direct path of the user of Reason, but in the surrounding tooling, such as automated cross platform native builds and project templates that help accomplish that - this will help people develop prebuilt ppxs and distribute them on npm for example but it will also help people develop command line apps and have them be prebuilt for all platforms with much less CI tweaking. This helped me to bring back reason-cli (command line rtop repl), without having to invest a lot of continued time in maintaining it - it’s built on every master commit can be downloaded from the Azure CI page in the artifacts section. We can use that same automatic build pattern for other supporting tools and so can everyone else in the community.