Search in: Word
Vietnamese keyboard: Off
Virtual keyboard: Show
Computing (FOLDOC) dictionary
Moscow ML
Jump to user comments
A light-weight implementation of Standard ML written by
Sergei Romanenko [email protected] of the
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 CamlLight. 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 Intel80386-based IBM PCs running MS-DOS, Microsoft Windows,
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 IBMPCs, slower on RISCs).