Standard ML of New Jersey
Release Notes


Version 110.88
May 15, 2019


Summary

This release does not have any user-visible changes. It consists of a reimplementation of the Int64.int and Word64.word types. With this new implementation in place, we expect to rebind the LargeWord, FixedInt, and Position structures to 64-bit implementations in the next release.

Details

Installation

While the installer for 110.88 works on macOS 10.14 Mojave, building from source requires some extra steps.

Compiler

Previously, 64-bit numbers were represented as pairs of 32-bit words and the Int64 and Word64 Basis Library structures were built on this implementation. While the compiler supported 64-bit literals, the compiler translated these to pairs of 32-bit words when converting to FLINT.

In order to support 64-bit targets, it is desirable to make 64-bit numbers a primitive type (just like Int32.int). In this version, we have replaced the old implementation of the Int64 and Word64 modules with compiler primops. A new pass, Num64Cnv, that runs before closure conversion is used to expand 64-bit operations into 32-bit operations on 32-bit targets. While the main purpose of this change is to make porting to 64-bit targets easier, the new implementation of Int64.int and Word64.word is faster and more space efficient than before.

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 (32-bit)

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

Ubuntu 16.04.3 LTS

Tested

Other Linux variants

BSD variants

Windows 7

Windows 10

Cygwin (32-bit)

A note about 64-bit support

Apple is in the process of deprecating 32-bit support in macOS. With macOS 10.14 Mojave, compiling 32-bit applications, such as the SML/NJ runtime system, requires using an older SDK. The SML/NJ installer, however, works without issue on macOS 10.14 Mojave.

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.