This is file install.txt for Moscow ML 2.00 for Linux/Unix (June 2000)


SYSTEM REQUIREMENTS

A binary installation requires 8 MB disk space; a source installation
requires 25 MB disk space.


INSTALLING MOSCOW ML (BINARIES ONLY) UNDER LINUX

(B1) For a personal installation, move to your home directory, and unpack
     the Moscow ML distribution using 

         gzip -dc linux-mos20bin.tar.gz | tar xfv -

     This creates a directory ~/mosml with subdirectories 

     mosml/              readme, install.txt
	   bin/          mosml, mosmlc, mosmllex, mosmlyac, camlrunm,
	   copyrght/     copyright notices
	   doc/          manual.pdf, mosmlref.pdf, mosmllib.pdf, ...
	       mosmllib/ HTML-documentation of the Moscow ML library 
	   examples/     a few example programs
	   lib/          bytecode files, basis library units, 
			 and the dynamically loadable libraries
	   tools/        mosmldep, Makefile.stub

(B2) Edit the variables `stdlib' and `mosmlbin' in the scripts
	  mosml/bin/mosml
     and  mosml/bin/mosmlc
     and  mosml/bin/mosmllex

(B3) Edit the file mosml/lib/header to contain the absolute location of
     the camlrunm runtime system (e.g. /home/foo/mosml/bin/camlrunm or
     /usr/local/mosml/bin/camlrunm).

(B4*) If you intend to use libraries that use dynamic linking, such as
     Gdbm, Mysql, Polygdbm, Postgres, Regex, Socket, or Unix, define 

	 export LD_LIBRARY_PATH=${HOME}/mosml/lib        (for bash)
	 setenv LD_LIBRARY_PATH ${HOME}/mosml/lib        (for csh, tcsh)

     Alternatively, if you are doing a systemwide installation, 
     as needed for CGI scripts, do
	 - log in as root
	 - execute  cp -p ~/mosml/lib/lib*.so /usr/local/lib
	 - edit /etc/ld.so.conf to list /usr/local/lib on a separate line
	 - execute  ldconfig

(B5) Start Moscow ML by typing
         mosml

(B6*) To check that dynamic linking works, do
	 fun myload u =
	     (load u; print ("\nLoaded " ^ u ^ "\n")) handle Fail _ => ();
	 app myload ["Gdbm", "Mysql", "Postgres", "Regex", "Socket", "Unix"];

To quit Moscow ML, type `quit();' or control-D.


INSTALLING MOSCOW ML UNDER OTHER UNIXES

If you have Linux, FreeBSD, NetBSD, HPPA+HP/UX 9 or 10, Sparc+SunOS,
Sparc+Solaris, SGI MIPS+IRIX 5, DEC Alpha+OSF/1, and possibly other
systems, then you can install Moscow ML as follows:

(S1) Choose a directory for the Moscow ML subdirectory to reside in,
     such as /usr/local/ for a systemwide installation, or ${HOME}
     for a personal installation.

(S2) Download the Unix source files from
         http://www.itu.dk/people/sestoft/mosml/mos201src.tar.gz

(S3) Unpack it by executing (in /usr/local, or ${HOME})

         gzip -dc mos201src.tar.gz | tar xvf -

(S4) Change directory to mosml/src

(S5) Edit file mosml/src/Makefile.inc to suit your system.  Set
     MOSMLHOME to /usr/local/mosml, or ${HOME}/mosml.  Also, the
     versions of /lib/cpp and other minor things differ among
     operating systems; choose suitable values of the configuration
     parameters for your system.
  
     If you want the runtime system to support dynamic linking of
     foreign (C) functions, further uncomment the setup for this in the
     Makefile.inc file. 

(S6) Execute (in mosml/src)

	 make world
	 make install

     Doing `make install' will also install the documentation from
     mosml/src/doc, which is supplied precompiled.  It is also
     available from the Moscow ML homepage.  If you want to rebuild the
     documents (e.g. for a different papersize), then do it later, as a
     separate step S9.  Due to variances in LaTeX installations, you may
     run into some problems.

(S7) To check that the installation went well, you can try 
     (S7.1) * change directory to mosml/src/test 
	    * execute: make clean
	    * execute: make 
	    * diff result result.ok     (may differ in times)
     (S7.2) * change directory to mosml/src/mosmllib/test 
	    * execute: make clean
	    * execute: make 
	    * diff result result.ok     (may differ in times, dates, etc)
     Note that some of the test cases are suitable only for 32-bit 
     architectures, and will fail on 64-bit architectures (such as DEC
     Alpha); this does not necessarily indicate that the Moscow ML
     implementation is broken.

(S8) If you want to install libraries that use dynamic linking, note
     point (B4*) in the binary installation instructions above.  
     Furthermore, 

     - to install support for Gdbm and Polygdbm persistent
     hash tables, consult mosml/src/dynlibs/mgdbm/README

     - to install support for the Postgresql relational
     database server, consult mosml/src/dynlibs/mpq/README

     - to install support for the Mysql relational database
     server, consult mosml/src/dynlibs/mmysql/README

     - to install support for POSIX 1003.2 regular
     expressions, consult mosml/src/dynlibs/mregex/README

     - to install support for sockets, consult
     mosml/src/dynlibs/msocket/README

     - to install support for Thomas Boutell's gd PNG image
     package, consult mosml/src/dynlibs/mgd/README

     - to install support for process manipulation under Unix,
     consult mosml/src/dynlibs/munix/README

(S9) If you want to reformat the Moscow ML documentation, go to
     mosml/src/doc, change the documents as desired, and do 
        make clean
        make
     The Moscow ML compiler must be already installed for this to
     work.


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@itu.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.
