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.
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:
We also fixed a number of cases where our implementation of Basis functions did not agree with the specification. See the list of bug fixes for details.
Changed the internal representation of real literals from strings to a more structured representation (see compiler/Basics/reals/ for the code).
Changed the Absyn, PLambda, FLINT, and CPS IRs to represent integer and word literals as IntInf.int values. This change removes unnecessary complexity in code generation, improves constant folding, and lays the groundwork for 64-bit support.
Improved the reporting of errors involving literal values. We now use the original source text when describing the value in the error message. We also report an error in the front-end when real literals are too large to be represented (instead of letting the code generator fail).
Fixed a number of bugs where the compiler did not handle the language syntax as specified in the Definition. See the list of bug fixes for details.
Here is a list of tracked bugs fixed (or closed) with this release, please see the bug tracker for more details.
|Compiler crash when handling large reals
|Real.fromString overflows or hangs
|The AMD64.cm library is missing
|Parsing of explicit type variables and val rec is broken
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) macOS 10.12 (Sierra) Tested macOS 10.13 (High Sierra) Tested Ubuntu 16.04.3 LTS Tested Other Linux variants BSD variants Windows 7 Windows 10 Tested Cygwin (hosted on Windows 7 or 10)