Summary
This release contains over 100 (mostly minor) bug fixes for issues identified by Claude and reported by Skye Soss. There are also a number of other bug fixes and improvements.
Details
Compiler
-
Added constant folding for the rotation operators
-
Switch to using mixed records for live variables in
InvokeGC. -
Switch to using mixed records to represent closures that contain both uniform and raw free variables.
-
Switch to using mixed records when spilling excess function arguments to the heap.
-
Add sanity checking for the various integer controls in the
Control.Printstructure. For example, the REPL will now always print the top-most part of a value, even when theControl.Print.printDepthflag is less than1. -
for the amd64 (a.k.a. x86-64) target, we now assume a Haswell processor.
Runtime System
-
Changed the heap layout to include an arena for "mixed" records.
-
The codegen library now zeros the padding in the object-file, which should make builds more deterministic (and fixes the problem of not being able to compile to a fixed point).
Basis Library
A large number of *Basis Library bugs were fixed (see the list below for details).
SML/NJ Library
A large number of SML/NJ Library bugs were fixed (see the list below or the
smlnj-lib/CHANGES file for details).
-
The original
HTMLlibrary has been renamed toHTML3(the CM tilf is nowhtml3-lib.cm). The modules in the library have not been renamed. -
Added
listKeysfunction toHASH_TABLEandMONO_HASH_TABLEsignatures. -
Added the
Timestampmodule to the Utility library. This module supports generating timestamps that respect theSOURCE_DATE_EPOCHenvironment variable.
ML-LPT
-
Fixed regression in
ml-lex-mode(Issue #463) -
Fixed a bug in handling grammars where there is no
%startdeclaration, but the first nonterminal is declared as an%entry. -
Fixed a bug where the code generated by ml-antlr is invalid
Concurrent ML
-
Fixes to the
Barriermodule. -
Fixed a scheduling issue in
recv. -
Fixed several issues in the
TraceCMLmodule. -
Fixed the behavior of CML's
OS.Process.terminateto match the Basis Library specification. -
Fixed
TextIO.input1,TextIO.inputLine, andBinIO.input1to restore themVaron end of file.
Installation
-
A number of changes have been made to improve reproducibility of builds.
Bugs
Here is a list of the issues and pull requests that are closed with this release.
We also fixed the following bugs that did not have issues associated with them (or were bug fixes ported from the legacy repository):
-
updated the unused-variable checker for changes to the
Absyn.expdatatype -
avoid
Overflowexceptions when#linecomments are very large (there is now an upper bound on the allowed line/column numbers) -
fixed various boundary cases in the
Array2structure. -
Socket.Ctl.getRCVBUFandSocket.Ctl.setRCVBUFcontrolled theSNDBUF -
the
PackReal64structures had the byte orders backwards -
Word.-(0wx7FFFFFFFFFFFFFFF, x)produced incorrect results -
The
Real.scanfunction was too permissive -
Fixed dangling pointer bug when
SetVMCachefrees memory objects -
Fixed "unbounded" traversal of cyclic values when the
printDepth < 0 -
Rewrote
Real64.remto produce exact results. -
The compiler no longer raises overflow when checking real literals with excessively large exponents
-
The order of the "don’t route", "peek", and "out-of-band" flags for socket I/O operations was backwards in the runtime system.
-
Socket.recvVecFromcan corrupt the address data. -
Fix edge case of primitive readers/writers with chunk sizes < 1.
-
Fixed
Date.fromTimeUnivandDate.fromTimeLocalon negative time values. -
Fixed an issue where large strings were getting allocated as bytearrays, which broke the REPL printing.
-
(Mostly) fixed the behavior of rounding reals to integers. The ceiling, floor, and truncation functions are correct, but
roundandrealRounddo not break ties correctly.
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 |
||
macOS 11 (Big Sur) |
||
macOS 12 (Monterey) |
||
macOS 13 (Ventura) |
||
macOS 14 (Sonoma) |
||
macOS 15 (Sequoia) |
Tested |
|
macOS 26 (Tahoe) |
||
Ubuntu 20.04.6 LTS |
Tested |
|
Ubuntu 22.04.2 LTS |
Tested |
|
|
||
ARM64 |
||
macOS 11 (Big Sur) |
||
macOS 12 (Monterey) |
||
macOS 13 (Ventura) |
||
macOS 14 (Sonoma) |
||
macOS 15 (Sequoia) |
||
macOS 26 (Tahoe) |
Tested |
|
macOS 27 (Golden Gate) |
Tested |
|
Linux |
||
|