Standard ML of New Jersey
Version 110.78 NEWS
December 24, 2014



The primary purpose of this release is improvements to libraries and tools, with some important bug fixes too.


SML/NJ compiler:

Major revision of the machinery for overloading resolution for both operators (vars) and literals, now using a common mechanism. These changes fixes bug #52 by improving the error message when an overloaded operator is inconsistent with its context. Updated 23 files, including major changes in overload.sml, types.sml, unify.sml, elabcore.sml, typesutil.sml. The overload declaration is still used in pervasives.sml, where the order of the specified instances of an ordering determines the default interpretation (i.e., the first one).

The SCHEME and LITERAL forms of tyvars are replaced by a new OVLD form that tracks potential instantiations of the type of the overloaded vars or literals.

SML/NJ Library:

A number of improvements and changes to the HTML4 library. Added the HTML4Attrs module, which provides help for constructing attribute-value pairs, and the HTML4Entities modules, which provides names for the standard HTML4 entities.

New implementation of ListMergeSort. This implementation is better than the previous implementation on sorted data (both ascending and descending) and faster on smaller lists. It is slower than the previous implementation on very large lists (e.g., 106 elements or more).

SML/NJ runtime:

Added -D_FILE_OFFSET_BITS=64 flag to x86-linux makefile. This flag is necessary to avoid spurious EOVERFLOW errors on some versions of Linux. The problem appears to be limited to large file systems that have more than 232 inodes.


Improved error message for when the lookahead computation fails in ml-antlr.

Improved error messages in ml-ulex for unclosed strings. Also made documentation improvements.

Added %value directive to ml-antlr; this addition improves the error repair choices by allowing non-nullary tokens to be inserted when making repairs.


Moved base/NOTES/HISTORY file to doc/src/changelog/HISTORY.txt and converted it to ASCIIDOC format. Also moved the README files from base/READMES to doc/src/release-notes. These changes are part of a general effort to rationalize and improve the documentation of the SML/NJ system.


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

52nonsensical type error message

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)
Ubuntu 12.04.4 (GNU/Linux 3.2.0)
Windows 7
Cygwin (hosted on Windows 7)

We believe that it runs on any recent Linux distribute 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.