Standard ML of New Jersey Release Notes

Standard ML of New Jersey
Release Notes
Version 110.99.9
November 4, 2025

SML/NJ HOME

  https://smlnj.org

FILES

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

## Summary

This release fixes a number of bugs and enables running on macOS 26 (Tahoe).

## Details

### Runtime System

- Ported various fixes from the development repository.

### SML/NJ Library

- Added a number of operations to the `MONO_HASH_SET` interface to make it more compatible with the `ORD_SET` interface.

- Added `LEB128` module, which implements packed encoding and decoding of integer and word types using the Little Endian Base 128 encoding.

- moved the `JSON` structure from the JSON Library to the Util Library. This change was made to allow code to produce/consume JSON values without depending on the JSON library.

## Bugs

Here is a list of the issues that are fixed (or closed) with this release. We include the original bug numbers for bugs that were reported using the gforge bug tracker.

Issue | Description | Gforge Bug
--- | --- | ---
356 | Problem with `Real.fromString` evaluating non-whole number strings on 32-bit systems | n.a.
360 | Incorrect values returned by `Real.fromString` on strings with many digits | n.a.
362 | `Real.fromString` on negative inf/infinity returns positive infinity | n.a.
363 | "default word size" in the documentation for Util/Random | n.a.
366 | `SockUtil.recvVec` behaviour does not match documentation | n.a.
367 | Compile error on Fedora 40 64-bit | n.a.
370 | `Int32` operations do not properly raise `Overflow` | n.a.
372 | `Int32.toString` can generate an `Overflow` exception | n.a.

- Merged fix for the inverse power-of-five table from the development branch (see Pull Request #306).

- Merged fix for the `IntBinarySet` structure from the development branch (see Pull Request #308 and Issue #310).

- Merged fix for development repository Issue #319 (Nondeterministic import order).

- Merged fix for development repository Pull Request #322 (Fix heap export inconsistency caused by pair arena offsets).

- Merged fix for development repository Pull Request #323 (Fix memory leaks in the runtime system).

- Merged fix for development repository Pull Request #325 (`setPosOut` should return an `outstream`).

## 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
--- | --- | ---
AMD64 | FreeBSD 12.0 |
| macOS 10.14 (Mojave) |
| macOS 10.15 (Catalina) |
| macOS 11 (Big Sur) |
| macOS 12 (Monterey) |
| macOS 13 (Ventura) |
| macOS 14 (Sonoma) |
| macOS 15 (Sequoia) | Tested
| macOS 26 (Tahoe) | Tested
| Ubuntu 20.04.6 LTS | Tested
| Ubuntu 22.04.4 LTS | Tested
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) |
| macOS 10.13 (High Sierra) | Tested
| macOS 10.14 (Mojave) |
| Other Linux variants |
| FreeBSD 12.0 |
| Other BSD variants |
| Windows 7 |
| Windows 10 |
| Windows 11 | Lightly tested
| Cygwin (32-bit) |

The system also works on Apple Silicon using Rosetta2.

### 32-bit macOS issues

While the x86 installer for 110.99.9 works on macOs 10.14 Mojave, building from source requires some extra steps because the version of Xcode distributed for Mojave does not include a 32-bit SDK.

Another issue that you may encounter when building on macOs 10.14 Mojave is an error message for a shell script of the form

      /bin/sh: bad interpreter: Operation not permitted

This error arises because the `com.apple.quarantine` attribute is set on the shell script. To fix the problem, remove the attribute using the command

      xattr -d com.apple.quarantine shell-script

and resume the build.