October 25, 2020

Standard ML in 2020

Incredibly, Standard ML implementations are still actively developed. MLton, Poly/ML, MLKit, SML# and SML/NJ are the most prominent. Discussion on the future direction of Standard ML remains healthy as well.

And somehow OCaml's lesser known cousin still beats out OCaml for multicore threading support (in Poly/ML).

While MLton hasn't merged with MultiMLton or RTMLton to support multicore, a new fork of MLton with parallelism is pretty far along and in active development at CMU.

A commentor shared Manticore, another implementation with parallelism support in active development at UChicago.

Furthermore, the last few years have welcomed some entirely new implementations. WebML, by a prominent open source hacker, is written in Rust and compiles Standard ML to WebAssembly. SOSML is an interpreter written in TypeScript by former students of Saarland University. It features a nifty online IDE.

A commenter shared SomewhatML, an actively developing compiler for Standard ML written in Rust.

There have also been some new experimental spins on Standard ML in the last few years. Morel is an interpreter with some nice syntax extensions written in Java by the author of Apache Calcite. And Bright ML is a spin on Standard ML and OCaml written in Standard ML (and using the abandoned Moscow ML compiler of all implementations).

So if you're looking for an easy intro to the ML family of languages, I still recommend the simplicity and performance of Standard ML and its small but definitely, surprisingly, not dead community. :)

Additional resources:

Are you using Standard ML? Let me know how/why!