This release is fairly substantial and incudes new Basis Library modules and the start of support for Successor ML, which is an evolution of the Standard ML language. It also has support for the latest version of Mac OS X (El Capitan) and Linux 4.x kernels, and many bug fixes.
This version continues to track proposed Basis Library improvements. Note that these improvements are proposals that have not yet been ratified and are subject to change! Specifically, the following proposals are supported by this version of SML/NJ:
It is very unlikely that these changes will break existing code, but there are a couple of scenarios in which the code might break. The first is conflicts created by the use of open. For example, the implementation of ml-yacc had declarations of the form
The second class of problem is when a module implements one of the affected Basis signatures. For example, the MLRISC library had two modules that implemented extensions of the ARRAY signature and which required modification to compile.
In such cases, we recommend updating the source code, but it is also possible to compile against the old version of the Basis Library by changing the line
in your CM files. Note that backward-compatible version of the Basis Library is only available if the old-basis target in config/targets was requested when SML/NJ was built (this target is requested by default).
Added the function Controls.help for getting the help string from a control.
Added the functions mkOption, mkOptionReqArg,
and mkOptionFlag to the Controls module.
These functions make it easier to package controls as command-line options.
They provide an alternative to the usual approach of using a "--C
Successor ML is collection of proposed enhancements to the Standard ML language. In collaboration with the MLton implementors, we are starting to add support for these features the SML/NJ. In this release, we have added support for the syntactic extensions to the language:
The Successor ML features can be enabled using the command-line option -Cparser.succ-ml=true or by using the assignment
at the REPL. It is also possible to mark individual source files as being "Successor ML" sources in a CM file. There are several ways to do so; the easiest is to specify that they should be handled by the "succ-ml" tool:
Alternatively, one can give the "succ-ml" argument to the "sml" tool:
It is also possible to enable them by setting the control flag using the with keyword in a CM file as illustrated by the following equivalent forms:
Here is a list of tracked bugs fixed (or closed) with this release, please see the bug tracker for more details.
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) Ubuntu 14.04.3 (GNU/Linux 3.13.0) Windows 7 Cygwin (hosted on Windows 7)
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.