A light-weight implementation of Standard ML written by Sergei Romanenko
<[email protected]> of the Keldysh Institute of Applied
Mathematics with assistance from Peter Sestoft <[email protected]>,
Royal Veterinary and Agricultural University. Moscow ML is based on CAML Light.
Version: 1.20 implements the Standard ML Core language.
The sublanguage of Modules implemented by Moscow ML contains signatures and
non-nested structures, and identifies structures with source files. It is
certainly less expressive than the full Standard ML Modules language, but the
type-safe separate compilation facility is simple, useful, and easy to use. It
is the intention to implement the full Standard ML Modules language (including
functors) in due course.
Compilation of a signature produces a compiled interface file, which is used
when compiling other signatures and structures.
Compilation of a structure produces a bytecode file. Bytecode files are compact
and load fast. For instance, a 3250-line program consisting of 24 structures and
17 signatures compiles to 221 KB of bytecode and 241 KB of compiled signatures.
Starting the ML system and loading the 24 bytecode files takes 1-2 cpu seconds
plus network delays, less that 5 seconds real time in all.
Release 1.20 permits loading of precompiled bytecode files into the top-level
interactive session. The next release will be able to create stand-alone
executables by linking bytecode files.
There is a mechanism for adding basis libraries, as in Caml Light. Release 1.20
includes the basis libraries Array, List, and Vector and the MS-DOS version
includes the Graphics library from Caml Light.
In principle, Moscow ML can be compiled on any platform supported by Caml Light.
So far we have tried Intel 80386-based IBM PCs running MS-DOS, Microsoft
Windows, OS/2 or Linux, DEC MIPS running Ultrix, DEC Alpha running OSF/1, Sun-4
running SunOS, HP9000 running HP/UX, SGI MIPS running IRIX 5.
Moscow ML is particularly useful when fast compilation and modest storage
consumption are more important than fast program execution.
Thanks to the efficient Caml Light run-time system used in Moscow ML, it
compiles fast and uses little memory, typically 5-10 times less memory than
SML/NJ 0.93 and 2-3 times less than Edinburgh ML. Yet the bytecode is only 3 to
10 times slower than SML/NJ 0.93 compiled native code (fast on IBM PCs, slower
Caml Light 0.61 and gcc are required to recompile Moscow ML for Unix or Caml
Light 0.61, djgpp, Perl, and Borland C++ version 2.0 (or later) to recompile
Moscow ML for DOS.
MOS « Mosaic « Mosaic Communications Corporation «
Moscow ML » MOSFET » Mosiac » MOS Technologies