Moscow ML provides a light-weight implementation of full Standard ML, including Modules and some extensions. Standard ML is a strict functional language widely used in teaching and research. Moscow ML is based on the Caml Light system, which gives fast compilation and modest storage consumption. * The full SML Modules language (structures, signatures, and functors) is now supported, thanks to Claudio Russo. * Also, several extensions to the SML Modules language are provided: - higher-order functors: functors may be defined within structures and functors - first-class modules: structures and functors may be packed and then handled as Core language values, which may then be unpacked as structures or functors again - recursive modules: signatures and structures may be recursively defined * Despite those improvements, Moscow ML remains backwards compatible. * Value polymorphism has become friendlier: non-generalizable free type variables are left free, and become instantiated (once only) when the bound variable is used * Added facilities for creating and communicating with subprocesses (structure Unix and Signal from SML Basis Library). * Added facilities for efficient functional generation of HTML code (structure Msp); also supports the writing of ML Server Page scripts. * Added facilities setting and accessing `cookies' in CGI scripts (structure Mosmlcookie), thanks to Hans Molin, Uppsala, Sweden. * The Gdimage structure now produces PNG images (using Thomas Boutell's gd library). Moscow ML version 2.00 is available from http://www.dina.kvl.dk/~sestoft/mosml.html As before, Moscow ML * Implements Standard ML, as revised 1997 (value polymorphism, default overloading resolution, new types). * Implements most of the new Standard ML Basis Library, including the most common input/output facilities in TextIO and BinIO. * Features an on-line help function. * Implements separate compilation. * Can produce compact stand-alone executables. * Supports quotations and antiquotations, useful for metaprogramming. * Provides dynamic linking of external functions (Linux/x86 and Linux/Alpha, Solaris, Digital Unix, HP-UX, MacOS, Win'95/98/NT/2000) SML BASIS LIBRARY The SML Basis Library is an attempt to rationalize the collection of built-in types and functions, with the aim of improving portability of Standard ML programs. Standard ML of New Jersey, Harlequin MLWorks, and Moscow ML implement the Standard Library. STAND-ALONE EXECUTABLES Moscow ML can generate compact linked bytecode files in the style of Caml Light. A bytecode file calls on the shared runtime system to run itself. SEPARATE COMPILATION Compilation of a signature produces a compiled interface file, which is used when compiling other signatures and structures. SUPPORTED PLATFORMS Intel x86-based PCs running Windows'95, '98, 'NT, and '2000, OS/2, Linux or FreeBSD; DEC Alpha running Linux or Digital Unix; Sun Sparc running Solaris or SunOS; HP9000 running HP/UX 9 or HP/UX 10; SGI MIPS running IRIX 5; Macintosh (68k and PPC) running MacOS (thanks to Doug Currie) or MkLinux. AUTHOR AND CREDITS Moscow ML was written by Sergei Romanenko (roman@keldysh.ru) Keldysh Institute of Applied Mathematics, Russian Academy of Sciences Miusskaya Pl. 4, 125047 Moscow, Russia and Claudio V. Russo (Claudio.Russo@cl.cam.ac.uk), University of Cambridge. Thanks to Don Sannella at LFCS, Division of Informatics, University of Edinburgh for funding under EPSRC grant GR/K63795 and Peter Sestoft (sestoft@dina.kvl.dk), Department of Mathematics and Physics, Royal Veterinary and Agricultural University, Thorvaldsensvej 40, DK-1871 Frederiksberg C, Denmark. Much of the work was done at the Technical University of Denmark, and while visiting AT&T Bell Laboratories, New Jersey, USA. Moscow ML owes much to: * the CAML Light implementation by Xavier Leroy and Damien Doligez (INRIA, Rocquencourt, France); especially the Caml Light bytecode generator and the runtime system; * the ML Kit by Lars Birkedal, Nick Rothwell, Mads Tofte and David Turner (Copenhagen University, Denmark, and Edinburgh University, Scotland); * inspiration from the SML/NJ compiler developed at Princeton University and AT&T Bell Laboratories, New Jersey, USA; * the good work by Doug Currie, Flavors Technology, USA, on the MacOS port and many improvements; and * feedback, contributions, and useful suggestions, in particular from Ken Friis Larsen, but also from Jonas Barklund, Mike Gordon, Michael Norrish, Konrad Slind, and numerous other people. AVAILABILITY * The Moscow ML homepage http://www.dina.kvl.dk/~sestoft/mosml.html This includes Linux RPMs: binary x86, binary Alpha, source. * Moscow ML library documentation http://www.dina.kvl.dk/~sestoft/mosmllib/ * The Linux executables and documentation are in ftp://ftp.dina.kvl.dk/pub/mosml/linux-mos20bin.tar.gz * The Unix source files and documentation are in ftp://ftp.dina.kvl.dk/pub/mosml/mos20src.tar.gz * The MS Windows 95/98/NT executables and documentation are in ftp://ftp.dina.kvl.dk/pub/mosml/win32-mos20bin.zip * The MacOS (68k and PPC) executables and docs and source diffs are in ftp://ftp.dina.kvl.dk/pub/mosml/MacMoscowML20installer.hqx * The MS Windows 95/98/NT/2000 source files are in ftp://ftp.dina.kvl.dk/pub/mosml/win32-mos20src.zip These files are mirrored at ftp://ftp.csd.uu.se/pub/mirror/mosml Postscript and PDF versions of the documentation included with the binaries can be found in ftp://ftp.dina.kvl.dk/pub/mosml/doc/ Peter Sestoft (sestoft@dina.kvl.dk) 2000-06-29