Standard ML of New Jersey
Release Notes


Version 110.99.3
July 27, 2022


Summary

This patch release fixes a large number of bugs in the "legacy" version of SML/NJ and adds some new functions to the SML/NJ Library.

GitHub Migration

With this release, we have migrated the legacy branch from our own svn server to a GitHub repository. This migration is the first step in migrating everything to GitHub.

In addition, we have retired the gforge bug-tracking infrastructure in favor of using GitHub issues. We have prepopulated the issues for the legacy repository with the entries from the gforge bug database.

Since issues are associated with a repository, we now have separate trackers for the legacy and main development versions. While most bugs that are present in one version will also be present in the other version, it is not necessary to create two issues when reporting a bug.

Details

SML/NJ Library

  • Added the findAndRemove function to ORD_MAP interface.

  • Generalized comparisons on ordered maps; added equiv and extends functions to ORD_MAP interface and made the type of collate more polymorphic.

  • The SExp library now uses Scheme syntax for string values.

  • The SExp parser accepts empty files as valid input (producing an empty list of S-Expressions).

Windows

The MSI installer now correctly sets the version of SML/NJ (see issue 59 for details). We also add a shortcut for uninstalling SML/NJ to the Program Menu.

32-bit macOS issues

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

Closed Issues

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 No. Description Gforge Bug

43

smlnj installation: error in first cm file memory.cm from nlffi

283

44

Compiler bug: Contract: UsageMap on 132

284

48

Signals are not delivered for corresponding events

291

58

ml-build fails on Windows with error

301

59

MSI installer for SMLNJ 110.99.2 reports as version 0.0.0.0

302

60

Use raises wrong exception

303

63

Word8VectorSlice: mapping a subslice produces wrong result or crashes SML/NJ

306

64

SExpParser.parseFile should return empty list on empty file

307

65

Add function for converting HTML4.html to string

308

66

SExp: parsing the output of the printer produces a different SExp

309

67

Error when REPL tries to print value of type Posix.FileSys.ST.stat

310

68

Unable to interrupt execution by using SIGINT

311

69

Real.fromLargeInt crashes on large integer input

313

70

IEEEReal.setRoundingMode is a no-op on Linux

314

71

IEEEReal.float_class does not match the Basis Library

315

72

Real.fromManExp does not return expected value if man = 0.0

316

73

Conversion from string to real does not accept non-finite values

317

74

IEEEReal.decimal_approx does not match the Basis Library

318

75

Type of Real.fromDecimal does not match the Basis Library

319

81

Garbage collection does not trigger sigGC

65

103

makeml and installml scripts do not like locations with spaces

90

177

Pretty printing of Absyn in error message does not respect fixity

204

241

Last branch of case expression omitted from PPAst

270

253

CM.make is unable to handle filenames that contain a backslash

312

The following unnumbered bug was also fixed:

  • Performance bug in the compilation of deeply-nested modules.

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)

Tested

macOS 11 (Big Sur)

Tested

macOS 12 (Monterey)

Tested

macOS 13 (Ventura)

Ubuntu 16.04.3 LTS

Ubuntu 18.04.3 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)

Ubuntu 16.04.3 LTS

Other Linux variants

FreeBSD 12.0

Other BSD variants

Windows 7

Windows 10

Cygwin (32-bit)