SML/NJ 110.84 Release Notes

Standard ML of New Jersey
Version 110.84 NEWS
September 3, 2018

SML/NJ HOME:
  https://smlnj.org
FILES:
  https://smlnj.org/dist/working/110.84/

### Summary:

This is a minor release whose primary purpose is to support future changes to the compiler's implementation.

This release introduces a new implementation of the Abstract Syntax Description Library (ASDL). It also adds support for Mac OS X 10.14 (Mojave) and includes a few other enhancements and bug fixes.

### Details:

ASDL

  This release of SML/NJ includes a beta-version of a new implementation of the Abstract Syntax Description Library (ASDL), which was originally designed and implemented by Daniel Wang as part of the Zephyr project. ASDL allows one to declare a collection of inductive types and then use the asdlgen tool to generate an implementation of the types with pickler/unpickler operations. We plan to replace the compiler's current environment pickler with ASDL and eventually also use it in a new LLVM-based backend.

  While the previous versions of ASDL supported many different target languages, the new version currently only supports SML and C++ (note that C++ support is currently incomplete).

  See the ASDL Manual (Version 3.0) for details about the specification language and the asdlgen tool.

  Also note that ASDL is not currently part of the Windows installation.

Basis Library:

  This version adds support for the Basis Library proposal:

  [2018-002] Additional slice operations
    This proposal adds four functions to the various slice structures: triml, trimr, splitAt, and getVec.

  Note that this change is a proposal that have not yet been ratified and is subject to change!

SML/NJ Library

  Added pretty printing (structure SExpPP) to the S-Expression library.

Installer

  A couple of changes were made to the installer (base/base/system/smlnj/installer).

  - The name of build scripts used for the prog and dprog actions was changed from "build" to "build.sh" on Unix systems (it is still "build.bat" on Windows).
  - A new config action was added that causes a configuration script to be run. The script should be named config.sh (or config.bat on Windows).

### Bugs:

There are no numbered bug fixes in this release, but the following unnumbered bugs were fixed:

- Fixed a compiler bug ("arg ty lists have wrong length") in unifyTy that could occur when one of the type constructors is the ERRORtyc (because a type error had been previously detected).
- Fixed a bug in the implementation of monomorphic buffers: the functions CharBuffer.add1 and Word8Buffer.add1 had an incorrect length test.
- Fixed a bug in the SExp.same function, where lists of unequal length would compare as equal if the shorter list was a prefix of the longer list.
- Fixed a bug where the findi function in the various slice structures (e.g., Word8ArraySlice) passed the wrong index value to the predicate function (the index is supposed to be relative to the start of the slice, not the underlying vector or array).

### Supported systems:

> 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
> | macOS 10.14 (Mojave) | Tested (see note below)
> | Ubuntu 16.04.3 LTS | Tested
> | Other Linux variants |
> | BSD variants |
> | Windows 7 |
> | Windows 10 | Tested
> | Cygwin (hosted on Windows 7 or 10)

Apple is in the process of deprecating 32-bit support in macOS. With macOS 10.14 (Mojave), it is no longer possible to compile 32-bit applications, such as the SML/NJ runtime system. Thus, while it is possible to install SML/NJ using the installer, installing using the config/install.sh script will not work without extra effort.

We have been working on 64-bit support since 110.82 we expect to have it in place before the release of macOS 10.15.