Moscow ML 2.00 for Unix released

Peter Sestoft <>
1 Jul 2000 11:13:14 -0400

          From comp.compilers

Related articles
Moscow ML 2.00 for Unix released (Peter Sestoft) (2000-07-01)
| List of all articles for this month |

From: Peter Sestoft <>
Newsgroups: comp.lang.functional,comp.compilers
Date: 1 Jul 2000 11:13:14 -0400
Organization: UNI-C
Keywords: ML, functional

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
      * 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


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)


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.


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


Compilation of a signature produces a compiled interface file, which
is used when compiling other signatures and structures.


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.


Moscow ML was written by
        Sergei Romanenko (
        Keldysh Institute of Applied Mathematics, Russian Academy of Sciences
        Miusskaya Pl. 4, 125047 Moscow, Russia
and Claudio V. Russo (, 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 (,
        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.


        * The Moscow ML homepage
            This includes Linux RPMs: binary x86, binary Alpha, source.
        * Moscow ML library documentation
        * The Linux executables and documentation are in
        * The Unix source files and documentation are in
        * The MS Windows 95/98/NT executables and documentation are in
        * The MacOS (68k and PPC) executables and docs and source diffs are in
        * The MS Windows 95/98/NT/2000 source files are in

Postscript and PDF versions of the documentation included with the
binaries can be found in

Peter Sestoft ( 2000-06-29
Department of Mathematics and Physics *
Royal Veterinary and Agricultural University * Tel +45 3528 2334
Thorvaldsensvej 40, DK-1871 Frederiksberg C, Denmark * Fax +45 3528 2350

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.