Standard ML of New Jersey
Release Notes


Version 110.99.7
December 28, 2024


Summary

Thie end-of-year release has a small number of bug fixes and changes.

Details

Compiler

  • Changed the version banner to match the format used in the development repository. This change means that the release date will be displayed instead of the build date.

Runtime System

  • Collecting basic statistics about memory allocation and GC is now enabled by default in the garbage collector. Access to this information is via the SMLofNJ.Internals.GC structure (see below).

Basis Library

  • Added the resetCounters and readCounters functions to the SMLofNJ.Internals.GC structure. These functions can be used to get the GC and allocation statistics maintained by the runtime system.

  • Added Unsafe.Array.create0 for creating zero-length polymorphic arrays.

  • Added gcCounterReset and gcCounterRead functions to SMLofNJ.Internal.GC structure. These functions provide access to some basic statistics about allocation and garbage collection.

SML/NJ Library

  • Added the decode_strategy mechanism to the UTF8 structure. This mechanism allows specifying how to handle incomplete/invalid multibyte sequences. See Pull Request 334 for more discussion.

  • Added rawArray and rawObject decoders to the JSONDecode structure in the SML/NJ 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

328

Real.fromString broken in 110.99.5 and 110.99.6

n.a.

329

Date.fmt fails on the %Z specifier for hand-constructed dates

n.a.

331

Array comparisons always result in polyEqual warning

n.a.

We also fixed the following bugs that did not have issues associated with them (or were bug fixes back-ported from the development repository):

  • fixed a further issue with Real.fromString.

  • fixed span in lexer for illegal string escapes (part of Pull Request 334).

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)

Tested

macOS 13 (Ventura)

Tested

macOS 14 (Sonoma)

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)

Tested

macOS 10.14 (Mojave)

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