Next: 3.2.1 Linkage to runtime
Up: 3. Differences between CMB
Previous: 3.1 Code sharing
  Contents
The init library ( $smlnj/internal/init.cmi) is a library
that is used implicitly by all programs. This library is ``special''
in several ways and cannot be described using an ordinary CM
description file. It is the bootstrap compiler's responsibility to
properly prepare a stable version.
Ordinary programs (those managed by CM) do not have to worry about the
special aspects of how to construct this library; they just have to be
able to use its stable version.
There are several reasons why the library cannot be described as an
ordinary CM library:
- The library exports the pervasive environment which
normally is imported implicitly by every compilation unit. Within the
init library, no pervasive environment is available yet.
- One binding in the above-mentioned pervasive environment is a
binding for structure _Core. The symbol _Core is not a
legal SML identifier, and the bootstrap compiler has to take special
action to create a binding for it anyway.
- One of the compilation units in this library is merely a
placeholder which at link time has to be replaced by the SML/NJ
runtime system (which is written in C).
Subsections
Next: 3.2.1 Linkage to runtime
Up: 3. Differences between CMB
Previous: 3.1 Code sharing
  Contents
Matthias Blume
2001-07-19