Share something I have been working for a while

Dear ReScript users,

I am happy to share something that I have been working on recently, a platform for cloud and edge computing using Wasm. It is heavily influenced by my past experience when developing the ReScript toolchain. The main difference is that it is not for the web but for the cloud and edge computing.

Some key take aways from Rescript

  1. IDE first, fault tolerant type system, parallelizable and incremental type checking
  2. Debugger first, it is not there yet, but it is our top priority
  3. No t-first/t-last, OO style piple line with better toolchain support
  4. Limited ad-hoc polymorphism support in the MVP release
  5. Most good stuff inherited from ReScript, we plan to incorporate active patterns too

I have a detailed draft introducing this platform, feedback is more than welcome.

Note the ReScript toolchain is actively maintained by the community for more than a year, so don’t worry if you are a daily ReScript user.

17 Likes

I wonder why you’ve chosen Rust-like syntax, instead of Js-like which is the most popular language nowadays.

Also, I find this OO style pipe line syntax weird. Like php’s/rescript’s -> much more.

Great job anyways. These are just words from the ex Js dev who got used to the great ReScript syntax.

3 Likes

I wonder why you’ve chosen Rust-like syntax, instead of Js-like which is the most popular language nowadays.

We pick the syntax which does not feel foreign ( Rust, Go, JS all meets the bar). Rust/Go’s syntax is more carefully designed from the engineering point of view.

Also, I find this OO style pipe line syntax weird. Like php’s/rescript’s -> much more.

The difference is mostly in the IDE: x.iter.().map().filter() vs x->List.iter() -> List.map() -> List.filter()
IDE could figure out iter,map,filter and make the auto-completion much easier.

3 Likes

Does it mean that for every t, there’s a single canonical module where IDE looks to resolve iter, map, etc.?

1 Like

it is more close to rust, e.g,

type t 
impl t {
   func iter (self: t , ... ) // iter is associated to t
}
3 Likes

It is officially announced last month Moonbit: the fast, compact & user friendly language for WebAssembly | MoonBit (moonbitlang.com).

We have some cool demos MoonBit on X: “Today, we are celebrating our one-year anniversary🎉 We’ve achieved so much in such a short time: a modern programming language with a sophisticated compiler, a cloud-first IDE with real-time feedback, a fast build system, and more to come! See our incredible live coding demo👇 https://t.co/5cc01xPeUH” / X (twitter.com).

A lot of things are learnt from building the ReScript toolchain, I expect one day we can use ReScript together with Moonbit to build real world apps.

6 Likes

That Tetris demo with fast refresh (or however you call it in Moonbit) is amazing :heart_eyes:

2 Likes

Dear all, MoonBit have been public for a while, and we released a very fast JavaScript backend recently,
we are also going to ship a native backend this year.

If you love ReScript, you probably will enjoy MoonBit too, we are providing
a part-time job position for MoonBit advocate, you are welcome to reach out to me for more details.

Thank you – Hongbo

4 Likes