This release continues the march toward 64-bit support (it looks to be a long march). There are many under-the-hood changes to the compiler to make supporting both 32-bit and 64-bit targets possible, as well as a number of bug fixes. It also adds support for macOS 10.13 (High Sierra).
Rationalized the treatment of primitive operators in Absyn and FLINT, and removed unused primitive operators. These changes affected the pickle format, which means that the --rebuild option must be used when building the compiler from sources.
Added Target structure to Basics; this module specifies properties of the target, such as the size of ML values and the size of the default int type.
Changed the way that the InlineT structure is defined to be target sensitive. For example, on 32-bit targets, there will be an InlineT.i31add function for adding the default int type, whereas on 64-bit targets the corresponding function will be InlineT.i63add.
Restored the pre-110.80 behavior of having the shell command sml foo.sml return a non-zero exit status when there is an error in the compilation of foo.sml (bug #183).
Changed the way that we test for allocation-space addresses in minor GCs. Instead of using the BIBOP, we now do a pointer range test; this change produces a small speedup on 32-bit machines, but we expect a bigger benefit on 64-bit machines, which use the 2-level BIBOP.
Various changes to prepare for 64-bit targets, including adding a 2-level BIBOP implementation, and splitting assyntax.h into 32-bit (assyntax.h) and 64-bit (assyntax64.h) versions.
Here is a list of tracked bugs fixed (or closed) with this release, please see the bug tracker for more details.
123 | missing warning for non-exaustive binding at top level. |
183 | status code returned by sml REPL. |
185 | Bring command line help text into parity with man page. |
The following unnumbered bugs were also fixed:
We believe that SML/NJ will build and run on the following systems, but have only tested some of them:
Architecture Operating System Status Power PC Mac OS X 10.5 (Leopard) AIX Sparc Solaris Linux 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) Tested macOS 10.12 (Sierra) Tested macOS 10.13 (High Sierra) Tested Ubuntu 14.04.3 (GNU/Linux 3.13.0) Tested Other Linux variants BSD variants Windows 7 Windows 10 Tested Cygwin (hosted on Windows 7 or 10)