Standard ML of New Jersey
Release Notes
Version 110.88
May 15, 2019

SML/NJ HOME

  https://smlnj.org

FILES

  https://smlnj.org/dist/working/110.88/

## 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.