This page provides pointers to the SML/NJ software distributions and installation instructions.
The current release of SML/NJ is Version 110, originally introduced in February 1998. Version 110 runs under Unix, Windows 95 or Windows NT. (The the current release version number is 110.0.7, representing the 7th patch release of 110, but we will refer to this version as 110 for short.)
To download and install SML/NJ 110, follow these installation instructions.
The Distribution FilesNOTE: the names of the distribution files have changed in 110.0.7; the tarball files no longer have a "110-" prefix.The files making up the Version 110 distribution are available via http or ftp:http://cm.bell-labs.com/cm/cs/what/smlnj/dist/110.0.7.htmland at the following mirror sites (if you run a mirror site not listed here, please let us know):
- Stanford University (California)
- Yale University (Connecticut)
- DIKU (Denmark)
- Cambridge (UK)
- SunSITE (UK)
- National Technical Univ. of Athens (Greece)
- KAIST (Korea)
- Vienna Univ. of Technology, Austria ( ftp version)
Previous ReleaseUsers of the previous release, Version 0.93 (released in 1993) should migrate to Version 110 as soon as possible. Version 0.93 is available but is no longer supported. However, for the time being it is the only version that runs on Apple Macintoshes (on 68K machines, or PowerMacs under emulation with the aid of SoftwareFPU).
Potential Downloading Problems (Bell Labs site)
We have had reports of distribution files being corrupted when downloaded via a web browser. Using ftp directly may be more reliable, but be warned that Bell Labs ftp service is incompatible with some firewalls. The ftp service on ftp.research.bell-labs.com uses special stripped-down server software for security. This implementation deviates from the RFC standards in that the data call-back circuit does not originate from port 20 on the server host. Some firewalls count on this in their filtering rules. If the dir (ls) command doesn't work, this is probably the reason why. However, most ftp accesses (including browsers) these days use the passive command PASV, which has a better security model for a firewall. If all else fails, try one of the mirror sites listed above.
Working VersionsWorking versions are created for internal development purposes and vary in reliability and stability. Some are robust enough for noncritical research use, others are not. Please pay careful attention to the README or NEWS file for each version before attempting to use it. These working versions can be found at ftp.research.bell-labs.com.
Lal George maintains a mailing list for those adventurous souls who want to receive announcements of new working versions. Contact Lal if you want to be added to (or subtracted from) the list.
The following table gives access to README files for recent working versions and the ftp directories for working versions that are currently available for downloading. The installation instructions for the release version will generally work, mutatis mutandis, for working versions.
After version 110.9.1, the older "cmachine" (i.e. non-MLRISC) code generators have been eliminated, so a more limited range of architectures will be supported until the new MLRISC code generators are implemented. Other major changes involving FLINT and the transition to a new runtime system are under way, so expect some instability after 110.9.1.
Recent Working Versions
README Released Software Links 110.37
November 23, 2001
110.36 September 18, 2001 /dist/smlnj/working/110.36 110.35 August 24, 2001 /dist/smlnj/working/110.35 110.34 July 10, 2001 /dist/smlnj/working/110.34 110.33 May 23, 2001 /dist/smlnj/working/110.33 110.32 December 22, 2000 /dist/smlnj/working/110.32 110.31 December 8, 2000 /dist/smlnj/working/110.31 110.30 November 4, 2000 /dist/smlnj/working/110.30 110.29 July 25, 2000 /dist/smlnj/working/110.29 110.28 May 1, 2000 /dist/smlnj/working/110.28 110.27 April 10, 2000 /dist/smlnj/working/110.27 110.25 December 6, 1999 /dist/smlnj/working/110.25 110.24 November 1, 1999 /dist/smlnj/working/110.24 110.23 October 9, 1999 /dist/smlnj/working/110.23 110.22 September 9, 1999 /dist/smlnj/working/110.22 110.21 September 3, 1999 /dist/smlnj/working/110.21 110.20 July 16, 1999 /dist/smlnj/working/110.20 110.19 July 8, 1999 /dist/smlnj/working/110.19 110.17 May 20, 1999 /dist/smlnj/working/110.17 110.16 April 16, 1999 /dist/smlnj/working/110.16 110.15 March 22, 1999 /dist/smlnj/working/110.15 110.14 Feb 22, 1999 /dist/smlnj/working/110.14 110.13 Jan 16, 1999 /dist/smlnj/working/110.13 110.12 Jan 12, 1999 /dist/smlnj/working/110.12 110.11 Dec 22, 1998 /dist/smlnj/working/110.11 110.10 Dec 20, 1998 /dist/smlnj/working/110.10 110.9.1 Oct 19, 1998 /dist/smlnj/working/110.9.1
The directoryftp://ftp.research.bell-labs.com/dist/smlnj/packages/.contains software packages that are not part of the core SML/NJ distribution. Currently, this directory contains:
- ckit, a C front end.
A set of programs used as a "benchmark suite" for Standard ML is available at:ftp://ftp.research.bell-labs.com/dist/smlnj/benchmarks/.
SML/NJ Compiler Test Suites
The regression test suites used for the SML/NJ compiler are available at:ftp://ftp.research.bell-labs.com/dist/smlnj/testing/.
Some contributed software packages can be found atftp://ftp.research.bell-labs.com/dist/smlnj/contrib/.Currently this directory contains:
- The sml-mode package provides an emacs mode for editing sml code under Gnu emacs and running the sml top-level as a subprocess of emacs. Originally developed by Matthew J. Morley, it is now maintained by Stefan Monnier . The latest version is 3.9.5 (Dec 22, 2000). Online documentation is available here. The latest sml-mode tarball is available at Yale and is mirrored at Bell Labs.
- Various software tools, including:
- heap2exec, Lorenz Huelsbergen's "heap2exec" utility for building Unix executables from heap images and the SML/NJ runtime executable.
- lexgenmos.tar.Z, a translation of the Moscow ML lexer generator, which produces lexers that run a bit faster than the improved ML-Lex in working version 110.7.
- Some contributed or "borrowed" libraries, including:
Additional packages will be added as they become available. New contributions are eagerly sought!