                     nML compiler system (version 0.92b)
                     -----------------------------------

OVERVIEW:

  - nML is a direct/harmony of Standard ML of New Jersey and Objective Caml.
  - nML is a higher-order and typed programming language.
  - nML does not stand against the C programming convention.

  - nML compiler is a compiler of the nML language 
    using the Objective Caml compiler:
      nML parser + nML type-checker +
	  nML-to-OCaml translator + the OCaml compiler.

  - For more information of the nML, please visit
    http://ropas.snu.ac.kr/n


RESTRICTIONS:

  Some features of the nML language are restricted:
  - no ref pattern is allowed.
  - module names should be distinct in the toplevel or in a module.
  - filenames should be distinct.
  - filenames should start with lowercase alphabet or number.


PORTING:

  The nML compiler still rely on the Objective Caml compiler.
  Basically the nML compiler supports all the systems that is
  supported by the Objective Caml compiler.
  However we tested the nML compiler for only Sun Solaris and MS Windows.

  For MS Windows systems, OCaml provides two kinds of ports.
   - Native Win32 port: some features require Microsoft Visual C++ and 
     Microsoft Assembler.
   - Cygwin port: Does not require additional Microsoft software.
     Requires the Cygwin 1.1 environment.
  See README.win32 for the details.


COMPILERS:

  The nML compiler system comprises three compilers:
   - nmlc: bytecode compiler
   - nmlo: native-code compiler
   - nml: interactive bytecode compiler
   
  'nmlc' is a bytecode compiler for nML (.n) and Objective Caml (.ml .mli).
  This compiler generates bytecode which is then interpreted by a C program. 
  This compiler runs quickly, generates compact code with moderate memory 
  requirements, and is portable to essentially any 32 or 64 bit Unix platform. 
  Performance of generated programs is quite good for a bytecoded 
  implementation. This compiler is a standalone, batch-oriented compiler.
  
 
  'nmlo' is a native-code compiler for nML (.n) and Objective Caml (.ml .mli).
  This compiler generates high-performance native code for a number of 
  processors. Compilation takes longer and generates bigger code, but
  the generated programs deliver excellent performance, while retaining
  the moderate memory requirements of the bytecode compiler. The
  native-code compiler currently runs on the following platforms:

   - Intel Pentium: PCs under Linux, FreeBSD, NetBSD, OpenBSD, Windows, 
     NextStep, Solaris 2, BeOS.
   - Alpha: Digital/Compaq Alpha machines under Digital Unix/Compaq Tru64, 
     Linux, NetBSD and OpenBSD.
   - Sparc: Sun Sparc under SunOS 4.1, Solaris 2, NetBSD, Linux
   - Mips: SGI workstations and mainframes under IRIX 6
   - HP PA-RISC: HP 9000/700 under HPUX 10
   - PowerPC: IBM RS6000 and PowerPC workstations under AIX 4.3,
     PowerMacintosh under MkLinux, LinuxPPC, MacOS X
   - Strong ARM: Corel Netwinder under Linux
   - Intel IA64: prototypes under Linux

  Other operating systems for the processors above have not been tested,
  but the compiler may work under other operating systems with little work.

  'nml' is an interactive bytecode compiler; that is, a bytecode compiler
  with an interactive, toplevel-based system. Input to the toplevel can 
  span several lines. It terminates by ;; (a double-semicolon).
  The syntax of toplevel input is as follows.

    toplevel-input ::= topdec ;;
                     | exp ;;
                     | toplevel-directives ;;

  You can use every toplevel-directives in OCaml,
  such as #quit, #use, #load, etc.


INSTALLATION:

  See the file INSTALL for installation instructions on Unix machines.
  For MS Windows, see README.win32.  


CONTENTS:

  Changes               what's new with each release
  INSTALL               instructions for installation (Unix)
  LICENSE               license and copyright notice
  Makefile              main Makefile
  README                this file
  README.win32          infos on the MS Windows 98/ME/NT/2000 ports 
  boot/                 bootstrap compiler
  bootcomp/             bootstrap compiler sources
  config/               autoconfiguration stuff
  contrib/              files for emacs and vim
  lambda/               intermediate code compilation
  main/                 driver code for the compilers and interactive system
  n2caml/               nML to OCaml translator sources
  ocaml/                Objective Caml compiler
  otherlibs/            several external libraries
  parser/               syntax analysis
  stdlib/               standard library
  tools/                various utilities (nlex, nyacc, nmakegen, ntopgen)
  typing/               typechecking
  utils/                utility libraries


COPYRIGHT:

  All files marked "Copyright(c) 2000-2004 Research On Program Analysis 
  System" are distributed under the conditions stated in file LICENSE.
  
  All files marked "Copyright INRIA" in this distribution are copyright
  1996, 1997, 1998, 1999, 2000, 2001 Institut National de Recherche en
  Informatique et en Automatique (INRIA) and distributed under the
  conditions stated in file LICENSE.
  

BUG REPORTS AND USER FEEDBACK:

  Send your bug reports to:

    n@ropas.snu.ac.kr
    
