Standard ML of New Jersey
Version 110.81 NEWS
May 1, 2017



This release has some fairly substantial under-the-hood changes to the compiler to clean up the interface between the front-end and FLINT, and changes to the compiler and runtime system to prepare the ground for 64-bit support. The release also contains some bug fixes and adds additional support for Successor ML, which is an evolution of the Standard ML language.


Successor ML:

The 110.81 release adds additional support for Successor ML syntactic extensions. It is now possible to use record-punning syntax in expressions (as well as in patterns); e.g., you can write the following function definition

fun f x = {x}

which is equivalent to

fun f x = {x = x}

And we have added support for do syntax in let bindings.

We have also changed the way that Successor ML features are enabled from the REPL. Instead of assigning true to the Control.succML variable, one should use the function Control.setSuccML is used to enable or disable Successor ML (i.e., pass the argument true to enable Successor ML features).


This version eliminates dependencies on FLINT types in the front end. In particular, uses of PlambdaType have been eliminated.

SML/NJ Library:

Added the JSONUtil module to the JSON library. This module provides helper functions for deconstructing and editing the tree (aka DOM) representation of a JSON file.


Added --debug command-line option to ml-antlr. This flag causes ml-antlr to generate debug actions that print the left-hand-side non-terminal of the production.

Added %tokentype directive to ml-antlr, which allows user-defined datatypes to be used to represent tokens.


Changed the interface to AMD64Gen; the signBit and negateSignBit callback functions now return an MLTree.rexp (instead of a label).


Here is a list of tracked bugs fixed (or closed) with this release, please see the bug tracker for more details.

129Symbolic identifiers are allowed as strids
149Datatype replication exposes hidden constructors
153Enabling Successor ML features is delayed
175Executable stack on Linux
179ml-ulex writing debug messages to stdOut

The following unnumbered bugs were also fixed:

Supported systems:

We have verified that the system builds and runs on the following systems.

Architecture Operating System
PowerPC Mac OS X 10.5 (Leopard)
x86 Mac OS X 10.6 (Snow Leopard)
Mac OS X 10.7 (Lion)
Mac OS X 10.8 (Mountain Lion)
Mac OS X 10.9 (Mavericks)
Mac OS X 10.10 (Yosemite)
Mac OS X 10.11 (El Capitan)
macOS 10.12 (Sierra)
Ubuntu 14.04.3 (GNU/Linux 3.13.0)
Windows 7
Windows 10
Cygwin (hosted on Windows 7 or 10)

We believe that it runs on any recent Linux distribution that has support for 32-bit executables, as well as on BSD variants, SPARC/Solaris, and PPC/AIX, but we have not tested these systems.