Moscow ML
Moscow ML
Version: 1.20 implements the Standard ML Core language.
The sublanguage of Modules implemented by Moscow ML containssignatures and non-nested structures, and identifiesstructures with source files. It is certainly less expressivethan the full Standard ML Modules language, but thetype-safe separate compilation facility is simple, useful,and easy to use. It is the intention to implement the fullStandard ML Modules language (including functors) in duecourse.
Compilation of a signature produces a compiled interfacefile, which is used when compiling other signatures andstructures.
Compilation of a structure produces a bytecode file.Bytecode files are compact and load fast. For instance, a3250-line program consisting of 24 structures and 17signatures compiles to 221 KB of bytecode and 241 KB ofcompiled signatures. Starting the ML system and loading the24 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 filesinto the top-level interactive session. The next release willbe able to create stand-alone executables by linking bytecodefiles.
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 theGraphics library from Caml Light.
In principle, Moscow ML can be compiled on any platformsupported 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 Alpharunning OSF/1, Sun-4 running SunOS, HP9000 runningHP/UX, SGI MIPS running IRIX 5.
Moscow ML is particularly useful when fast compilation andmodest storage consumption are more important than fastprogram execution.
Thanks to the efficient Caml Light run-time system used inMoscow ML, it compiles fast and uses little memory, typically5-10 times less memory than SML/NJ 0.93 and 2-3 times lessthan Edinburgh ML. Yet the bytecode is only 3 to 10 timesslower than SML/NJ 0.93 compiled native code (fast on IBM PCs, slower on RISCs).
DOS.Linux.Source.
Caml Light 0.61 and gcc are required to recompile MoscowML for Unix or Caml Light 0.61, djgpp, Perl, andBorland C++ version 2.0 (or later) to recompile Moscow MLfor DOS.