ReScript is not a Facebook project. The compiler is licensed by Bloomberg LLP: https://github.com/rescript-lang/rescript-compiler/blob/60a1...
And the syntax is licensed by the ReScript team: https://github.com/rescript-lang/syntax/blob/72d9b7034fc28f3...
The ReScript team is comprised of both Facebook and folks outside Facebook.
- Reason+BuckleScript was confusing at best, having two websites and different release schedules.
- Reason's goal is to be a 100% mapped syntax for OCaml. This does not mesh well with the goal of producing readable JS, so ReScript will probably end up as a subset of OCaml features.
- Reason syntax changes apparently caused grief when applied to BuckleScript. This one was never very clear, but regardless now that the syntax is in-house the ReScript team can be more responsive with it.
The problem with this transition is that it was dropped on the community in an unfinished state and BuckleScript was retired completely. The goals of the change are, I think, mostly reasonable.
Purescript also shares this goal, and it is a bummer, performance-wise, in older browsers that don't handle currying and various other "readable" representations well.
Worse still, if your target output is readable, then someone might start touching the compiled runtime objects with Javascript and then... god help you as you watch the guarantees of your fancy type system unravel before your very eyes.
https://rescript-lang.org/docs/manual/latest/shared-data-typ...
- Uncurrying functions
- Compiling OCaml modules to idiomatic JavaScript objects
- Compiling OCaml record values to idiomatic JavaScript objects
- Compiling tail recursion to idiomatic while loops
- And so on.
> someone might start touching the compiled runtime objects with Javascript and then... god help you as you watch the guarantees of your fancy type system unravel before your very eyes.
That's exactly what genType is for--it produces JavaScript, TypeScript, and Flow interfaces for ReScript output code so that people in the JS world can consume it transparently.
I am rather disappointed and think F# 's Fable is a better alternative.
Here is a react binding for jsoo: https://github.com/jchavarri/jsoo-react .
There was actually some effort being made to keep OCaml tooling compatible with ReasonML (which is supported by dune[0] with no additional configuration) and BuckleScript integration with dune, which was being worked on before this rebrand, so it's kind of sad to see FB going off on their own with ReScript because they don't wanna do the work to upstream the changes they need.
By the way, regular OCaml also has its own JS backend[1] which is of course completely incompatible with BuckleScript.
0: https://dune.build/ 1: https://github.com/ocsigen/js_of_ocaml