The recently released 110.33 working version runs under Mac OS X. It also introduces Matthias Blume's new, experimental FFI, NLFFI ("No-Longer Foreign Function Interface"). Currently NLFFI is available only under x86-linux, but it is being ported to other architectures.
The original version of the Windows installer, smlnj.exe, for 110.0.7 had a problem when running under Windows 95/98/ME that caused error messages abound undefined strings like PRODUCT_NAME. This problem has been corrected in a new smlnj.exe now available in the usual 110.0.7 ftp and http distribution directories.
This new smlnj.exe (as of 23 March 01) also corrects a problem where installation only set the user PATH and CM_PATH environment variables. Now the installer sets these variables at the system level for all users. Installation must be done from an administrator account.
Two new SML-related projects have been started at SourceForge, a site and organization supporting collaborative development of open-source software. The Standard ML (sml) project at www.standardml.org supports all Standard ML implementations by encouraging sharing of resources such as test suites, benchmarks, libraries, and documentaion. The Standard ML of New Jersey (smlnj) project at www.smlnj.org is intended to be the future home of SML/NJ (including web pages, releases, CVS repository, etc.).
Riccardo Pucella has written an extensive new tutorial, Notes on Programming SML/NJ, which is available as postscript or PDF. This is a first draft of the Notes, and Riccardo welcomes corrections and suggestions.
Stefan Monnier's latest version, 3.9.5, of the sml-mode package for emacs has been added to the contrib/emacs directory.
A new minor release version 110.0.7 is now available. This is the sixth patch release for version 110 (110.0.4 was not released). This patch release fixes a long-standing bug in signal handling. It also includes a number of SML/NJ Library enhancements and fixes and some fixes to CM and eXene, and a small number of other bug fixes. See the 110-PATCH-HISTORY file for details. With this release, we are also making the distribution files available for download via http as well as ftp. See the 110.0.7 distribution page. [Note: The original smlnj.exe installer for Windows had incorrect CM tool paths. This has been corrected by a new smlnj.exe as of October 18, 2000.]
Meanwhile, work continues on the next release, which we hope to have ready for a beta release "real soon now". The next release will not contain any major language or Basis library changes, but there will be major internal changes, including:
In addition, there will be a couple significant language extensions: lazy datatypes and lazy functions over such datatypes, functional record concatenation (a "with" operation), and mutable records whose fields can be updated.
- A new runtime system with improved management of virtual memory.
- New support for foreign functions (C) based on IDL.
- Conformance with the soon to be published SML Basis spec.
- MLRISC code generators for all architectures.
- The FLINT representation has partially replaced the old cps representation in the back end.
Most features of Version 111 are implemented in current working versions. The main missing elements are the new runtime system and a MIPS code generator.
The latest working version is 110.36. It fixes a few important bugs. Like 110.35, it is based on a new organization of compiler source code into CM libraries, runs under the new Mac OS X, includes Matthias Blume's new, experimental FFI (NLFFI) for x86-linux and supports CML as well as eXene.
Since working version 110.9.1, major internal changes have been implemented and many changes are still in progress. Version 110.12 introduced fundamental changes in array, vector and string representations and a new garbage collector interface. Extensive changes have also been made to the ML-RISC code generators.
Starting with 110.20, a major overhaul of the CM compilation manager has been in progress, accompanied with a reorganization of the compiler itself into a set of libraries.
The next working release will incorporate an updated version of the FLINT middle end. At this point, we will change the way the code is managed by having a publically accessible CVS repository at Yale.
As usual, use the working versions at your own risk. Some working versions incorporate substantial changes that reduce stability and introduce bugs.