Modern Compiler Implementation in ML: Basic Techniques
Which version of ML should I use?
Why are there different versions of ML?
During the period 1994-96, a consortium of ML implementors
including representatives of the
Standard ML of
New Jersey project, the
Moscow ML
project, and the
Harlequin MLWorks product,
worked together to standardize and greatly improve ML
``standard library'' and operating-system interface functions.
The result is the SML Basis Library, which all three implementations (almost) support.
Over the same period, the designers of ML made some small cleanups
to the language design (deleting more than they added!), resulting
in the
Standard
ML '97 language.
Version 110, the current release of
Standard ML of
New Jersey,
is fully SML'97 compliant.
The Tiger compiler modules
have been tested with this version of ML.
Support software
The Tiger compiler requires the use of ML-Lex (lexical analyzer generator),
ML-Yacc (parser generator), and
the SML/NJ Library
(utility library functions not part of the Standard ML Basis Library);
all of these are part of the
SML/NJ software distribution.
Make sure you use the version of Lex, Yacc, and SML-NJ-Lib that comes
with the version of SML/NJ that you are using.
Other versions of ML
- Harlequin
-
Within a few months, I expect to have tested the Tiger compiler
under
Harlequin MLWorks,
with which it should also be compatible.
The ML-Lex, ML-Yacc, and SML/NJ-Library components of SML/NJ
should also be usable with Harlequin ML works at that time.
- SML/NJ 109.30
-
The Tiger compiler modules that inhabited the
Modern Compiler Implementation in ML web page
between March, 1997 and September 10, 1997
are compatible
with SML/NJ version 109.30 (made in July 1997), and
you can still find them here.
- SML/NJ 109.4
-
The Tiger compiler modules that inhabited the
Modern Compiler Implementation in ML web page
between December 1, 1996 and February 13, 1997 are compatible
with SML/NJ version 109.4 (made in February 1996), and
you can still find them here.
- SML/NJ 0.93
-
It should be possible to modify these
Tiger compiler modules
to work with SML/NJ version 0.93.
However, a great benefit of using recent versions of SML/NJ is
that you can use the SML/NJ Compilation Manager
(which comes with the 109.4 or
109.31
distribution)
to do
automatic dependency analysis,
(quasi)separate compilation, linking, and smart recompilation.
- Moscow ML
-
Moscow ML
is a subset implementation of ML
that does not at present support the full ML Module system.
Therefore, it does not support ML-Lex, ML-Yacc, and the SML/NJ Library.
However it may be possible to make a version of the Tiger compiler
that runs in Moscow ML.