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
Basis Library
Added support for the following proposed Basis Library extensions:
SML/NJ Library
-
Added the
findAndRemove
function toORD_MAP
interface. -
Generalized comparisons on ordered maps; added
equiv
andextends
functions toORD_MAP
interface and made the type ofcollate
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 |
284 |
|
48 |
291 |
|
58 |
301 |
|
59 |
302 |
|
60 |
303 |
|
63 |
Word8VectorSlice: mapping a subslice produces wrong result or crashes SML/NJ |
306 |
64 |
307 |
|
65 |
308 |
|
66 |
SExp: parsing the output of the printer produces a different SExp |
309 |
67 |
Error when REPL tries to print value of type |
310 |
68 |
311 |
|
69 |
313 |
|
70 |
314 |
|
71 |
315 |
|
72 |
316 |
|
73 |
Conversion from string to real does not accept non-finite values |
317 |
74 |
318 |
|
75 |
319 |
|
81 |
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 |
270 |
|
253 |
|
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) |
||
|