Try MLKit!

The Standard ML Compiler and Toolkit



The Definition

The MLKit compiler covers all of Standard ML, as defined in the 1997 edition of the Definition of Standard ML. The MLKit implements most of the latest Standard ML Basis Library specification.

ML Basis Files

The MLKit compiles large programs, including itself, around 80.000 lines of Standard ML plus the Standard ML Basis Library. ML Basis Files, supported by both MLton and MLKit, makes it easy to compile large programs. MLKit's smart-recompilation scheme avoids recompilation upon changes of source code.

View details »


The MLKit integrates reference-tracing garbage collection with region-based memory management. Memory allocation directives (both allocation and deallocation) are inferred by the compiler, which uses a number of program analyses concerning lifetimes and storage layout.

View documentation »

Open Source

MLKit is open source; it is distributed under the GNU General Public License, version 2 (GPLv2). The runtime system and libraries are also distributed under the MIT licence, thus, executables constructed with the MLKit are non-restricted.

Region Profiling

Life profile

The MLKit includes a graphical region profiler, which helps gain detailed control over memory reuse. The example graph to the right shows a region profile (region sizes as a function of time) of two hundred generations of the `Game of Life'.

Good for Real-Time

Programmers who are interested in real-time programming can exploit the possibility of disabling reference-tracing garbage collection. In this case, there will be no interruptions of unbounded duration at runtime.

Interface to C

MLKit applications can call C functions using standard C calling conventions; the region scheme can even take care of allocating and deallocating regions used by C functions thus invoked.

No-Overhead Modules

The MLKit compiles Standard ML Modules, using a compilation scheme called Static Interpretation, which eliminates Modules entirely at compile time.

Two Backends

Two backends are provided, one that generates x86 native machine code for the Linux and MacOS operating systems and one that generates bytecode.

Hosted at Github

MLKit sources are hosted at Github, which makes it straightforward to browse code and collaborate on projects.

2016-03-09: MLKit 4.3.8 is released.
2014-10-02: Read how MLKit works nicely with Smackage!
2014-05-28: The MLKit has moved to Github!
2013-09-16: On Mac/Homebrew, just write brew install mlkit to install the MLKit...
2013-05-30: MLKit 4.3.7 is released.
SMLonline — Compile SML programs in your browser and save your programs in Dropbox.
SMLtoJs — Compile SML programs into JavaScript.
SMLserver — Use SML on the Web server.