Standard ML of New Jersey
Version 110.33, May 23, 2001

Home page


This version is intended for compiler hackers. The version ought to be quite stable, however we have not run our full regression testing.


This version should build under Mac OS X.

This version is being used to introduce the new experimental C FFI (currently only available for x86/Linux) and to check point a number of changes to MLRISC.

The CKIT is now part of the release because it is needed for ml-nlffigen.

In support of the C FFI, the new $/ library (from src/ml-nlffi-lib) implements an encoding of the C type system in ML. It receives help from the ml-nlffigen glue code generator (from src/ml-nlffigen) which transforms C source input into corresponding ML glue code.

The compiler has been modified to support the C FFI.

There are various bugfixes and some organizational changes.

Mac OS X

  1. This version should build under the new Apple Mac OS X operating system.


  1. infinite precision throughout

  2. support for virtual frame pointers ("omit-frame-pointer") (This was needed for a correct implementation of raw C calls, but it should also come in handy for clients of MLRISC other than SML/NJ. Currently x86 only.)

  3. see the omit-frame-pointer notes

  4. support for alternative control-flow in MLTREE

  5. other API changes

  6. bug fixes


  1. "lambdasplit" parameter for class "sml" to control status and aggressiveness of cross-module inlining

  2. parallel make now works again

  3. "proxy libraries"

  4. other bug fixes


  1. The ckit source tree is now part of the SML/NJ distribution.


  1. bug fixes (e.g., dead-up logic in cpsopt/contract.sml)

  2. lambda-split phase now in the optimization pipeline by default control via Compiler.Control.LambdaSplitting.* (and/or via CM)

  3. compiler now aware of certain offsets in runtime-system data structures to be able to generate code for raw C calls

  4. added raw memory access primops and a primop for raw C calls and handled them throughout the compiler

  5. prim.sml now has correct types for all primops


  1. two source trees in support of the new NLFFI ("no-longer foreign function interface") added:
        src/ml-nlffi-lib     --- support library
        src/ml-nlffigen      --- glue code generator

  2. some preliminary documentation under src/ml-nlffi-lib/Doc (The tar file for this will be retrieved only if you enable ml-nlffi-lib in config/targets. Be sure to do this only on x86/Linux platforms, though. If you use a different platform and want to look at the source or the documentation, fetch the tar file by hand.)


  1. Some API cleanup and bug fixes


  1. dlopen and friends added (currently x86/Linux only)

  2. changes to vproc-state.h to support efficient signal handling by new raw C call mechanism

  3. support for Mac OS X; Darwin

overall organization

  1. Use CM "proxy libraries" where possible


  1. various bug fixes to config/

  2. config/ now knows about ckit, ml-nlffi-lib, and ml-nlffigen

  3. config/ will use config/targets.customized if it exist (falls back to config/targets if not)

  4. makeml verbosity level controllable via MAKEML_VERBOSITY or command line switch

Lal George
Last modified: Thu May 24 11:27:19 EDT 2001