Standard ML of New Jersey Release Notes

Standard ML of New Jersey
Release Notes
Version 110.99.8
April 25, 2025

SML/NJ HOME

  https://smlnj.org

FILES

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

## Summary

This release fixes a number of bugs,

## Details

### Compiler

- Fixed several bugs (including Issues #340 and #341) in the contraction of numeric conversions. Also added some missing fusion rules for conversions via the `IntInf.int` type.

- Moved the support for word/real bit casts to the MLRisc code generator.

- Made the translation of built-in numeric types to FLINT primitive types more consistent.

- Added the `CheckCPS` module, which implements some basic invariant checking on the CPS IR.

### Basis Library

- Added `numGens` and `nurserySizeInBytes` functions to the `SMLofNJ.Internals.GC` structure, with corresponding runtime-system support.

## 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
--- | --- | ---
337 | compiler bug aborts build of istari | n.a.
340 | `Word.toInt` does not raise an exception when out of range | n.a.
341 | Incorrect constant folding of word equality | n.a.
347 | `Unsafe.cast` causes Compiler bug | n.a.
348 | `PPAbsyn` raises exception when pattern matching on infix constructor | n.a.
349 | `PackReal64Big` and `PackReal64Little` export internals | n.a.
351 | Fix `Word8Buffer.contents` to return an object with `ByteVector` representation | n.a.
354 | Problem with `Real.fromString` on 32-bit systems | n.a.
355 | `Word8.toLargeInt` produces incorrect results on 32-bit platforms | n.a.

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

The system also works on Apple Silicon using Rosetta2.

### 32-bit macOS issues

While the x86 installer for 110.99.8 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.