Standard ML of New Jersey
Version 110.20, July 16, 1999

http://cm.bell-labs.com/cm/cs/what/smlnj/index.html

Warning

This version is intended for compiler hackers. We are in the midst of substantial structural changes, and this is a snapshot.

Summary:

This version transplants the old implementation of the compilation manager (CM) with a brand-new one. It also constitutes a major change in how the files of the interactive compiler are organized.

The basic ideas behind the new CM are identical to those of the old one. However, many, many details have changed, and virtually no code is shared between the two implementations.

Syntax and semantics of CM description files has changed slightly. One important user-visible change is the treatment of the basis library: it has no special status anymore and must be specified as "basis.cm" by anyone who wants to use it.

The new CM offers more robust pathname handling, improved error detection and error reporting, as well as very efficient handling of stable libraries. It is integrated with the interactive toplevel by means of its autoloading mechanism and makes sure that modules that are common to system code (compiler, CM, interactive system) and user code are shared.

Compiler hackers should definitely read the file system/README.

Some details on how to use the new compilation manager

CM's API is not yet as complete as the old one. Moreover, there are some semantic changes: The primary means for structuring a program is now the "library". Please, use "library" where you used "group" before. This means that you will have to specify the export list of your library.

The purpose of "group" is now to give structure to a "library". Under the new scheme, each group has a unique "owner" which is either some library or the "toplevel". If the owner is a library, then you must specify that library in parentheses after the "group" keyword.

To quickly convert existing code to work with the new scheme,it may be easier to ignore the "group" issue and use "library" exclusively. However, groups _are_ an important concept as soon as you begin creating your own stable libraries.


Lal George
Last modified: Thu Dec 2 18:14:31 EST 1999