Moscow ML

Moscow ML is a light-weight implementation of Standard ML (SML), a strict functional language widely used in teaching and research. Version 2.01 implements the full SML language, including SML Modules, and much of the SML Basis Library.

Latest news:
1 October 2013: Moscow ML 2.10 was released recently at It complies better with the published SML Standard Library, should be easier to install on modern operating systems, and supports dynamic linking with C code on a wide range of platforms.
5 March 2008: Due to a change in GNU malloc, Moscow ML may crash on 64 bit architectures as well as on those 32 bit architectures that use glibc 2.7. As simple fix for this problem is to use this version of mosml/src/runtime/gc_ctrl.c, which prevents malloc() from using mmap().

Moscow ML 2.10

Moscow 2.10 and future versions live at

Moscow ML 2.01

Moscow ML documentation

Valid for release 2.00 and 2.01.

Other on-line Standard ML resources

Other Standard ML implementations

Authors and credits

Moscow ML was created by Sergei Romanenko at the Keldysh Institute of Applied Mathematics, Russian Academy of Sciences, Moscow, Claudio Russo (then at Edinburgh University, now at Microsoft Research, Cambridge UK), Niels Kokholm at the IT University of Copenhagen (Moscow ML for .Net), Ken Friis Larsen at the IT University of Copenhagen, and Peter Sestoft at the Royal Veterinary and Agricultural University, Copenhagen, Denmark.

Moscow ML uses the entire runtime system and many other ideas from the Caml Light implementation created by Xavier Leroy and Damien Doligez.

Doug Currie created the MacOS port and considerably improved the bytecode interpreter.

Bugs and problems

Report bugs to Peter Sestoft (
Peter Sestoft ( 1995, 2014-03-07