From PROOF.ERGO.CS.CMU.EDU!sml-redistribution-request Fri Aug  7 18:42:42 1992
Received: from PROOF.ERGO.CS.CMU.EDU ([128.2.222.187]) by utu.fi with SMTP id <250155>; Fri, 7 Aug 1992 18:42:29 +0300
Received: by PROOF.ERGO.CS.CMU.EDU id aa23408; 7 Aug 92 5:36:17 EDT
Received: from vache.venari.cs.cmu.edu by PROOF.ERGO.CS.CMU.EDU id aa21080;
          6 Aug 92 16:18:26 EDT
Received: from vache.venari.cs.cmu.edu by VACHE.VENARI.CS.CMU.EDU id aa21386;
          6 Aug 92 16:17:51 EDT
Resent-To: sml-redistribution@VACHE.VENARI.CS.CMU.EDU
Return-Path: <sml-request@proof.ergo.cs.cmu.edu>
Received: from proof.ergo.cs.cmu.edu by A.GP.CS.CMU.EDU id aa10930;
          6 Aug 92 14:59:28 EDT
Received: from cobol.fox.cs.cmu.edu by PROOF.ERGO.CS.CMU.EDU id aa20609;
          6 Aug 92 14:59:04 EDT
Received: from cobol.fox.cs.cmu.edu by COBOL.FOX.CS.CMU.EDU id aa11199;
          6 Aug 92 14:58:18 EDT
To:	sml-list@CS.CMU.EDU
Subject: announcing a new release of sml2c
Reply-to: david.tarditi@CS.CMU.EDU
Date:	Thu, 6 Aug 1992 21:58:09 +0300
Message-ID: <11196.713127489@COBOL.FOX.CS.CMU.EDU>
From:	David_Tarditi@COBOL.FOX.CS.CMU.EDU
Resent-Date: Thu, 6 Aug 1992 23:17:44 +0300
Resent-From: Greg_Morrisett@VACHE.VENARI.CS.CMU.EDU
Resent-Message-Id: <92Aug7.184229eet_dst.250155@utu.fi>
Status: OR

[Moderators Note:  The European distribution list, formerly at 
 Edinburgh, has been merged with the master distribution list at 
 CMU.  Please send all requests to sml-list-request@cs.cmu.edu 
 and all posts to sml-list@cs.cmu.edu.  Thanks!

 -Greg Morrisett]

A new version of sml2c, a Standard ML to C compiler, is available.
This version includes a companion sml2c interpreter, which provides
an interactive loop for any environment in which sml2c can be built.

sml2c compiles an extended version of SML to portable C. The extensions
are first-class continuations, asynchronous signal handling, support
for shared-memory multi-processing, separate compilation, and a facility
to  freeze and restart programs. It is based on the Standard ML of New Jersey
(SML/NJ) implementation (version 0.75) and shares its front-end, optimizer,
and most of  the runtime system. sml2c is a batch compiler and compiles only
module-level  declarations (signatures, structures and functors). It provides
the same  pervasive environment for the compilation of these programs as
SML/NJ. As a  result, module-level programs that run on SML/NJ can be compiled
by sml2c  without any changes. It does not support SML/NJ style debugging and
profiling.

sml2c is easily portable and has been ported to Intel 80486, MIPS R3000, 
Motorola 88K, Motorola 68K, and Sparc-based machines.   It is limited to
systems running one of the following variants of Unix: BSD, Mach emulating BSD,
Ultrix, SunOS, RISCos, More, or V9, due to operating system dependencies in
the runtime.  The generated code is highly portable and makes few assumptions
about target machines or the C compilers available on the target machines.

The sml2c interpreter is a companion to the sml2c compiler.  It provides a
more convenient environment for program development than sml2c.  Compilation
time is much faster than sml2c (about 4-8 times faster), since there is no
optimization and no C compilation stage.   Program execution is much slower
(a factor of 15-20 times slower).    The interpreter compiles the same programs
as SML/NJ and sml2c.  It does not support separate compilation.

Sml2c and the  interpreter should be used as a complementary pair --- the
interpreter for program development, and sml2c after development has been
finished and program speed is desired.   

The interpreter was built by using sml2c to compile part of the SML/NJ compiler
that already contained an interpreter, and slightly modifying some code.  The
credit for the interpreter goes to the SML/NJ developers.

sml2c has been developed at the School of Computer Science, Carnegie Mellon
University as a part of research into portable implementations of properly
tail-recursive languages with first-class continuations. The design of
sml2c has been described in the technical report 

David Tarditi, Anurag Acharya, Peter Lee, "No Assembly required: Compiling 
Standard ML to C", School of Computer Science, Carngie Mellon University.
CMU-CS-90-187.

This technical report is available with the distribution as 
sml2c.paper.ps. The distribution also contains 
"A Guide to SML2C" (doc/sml2c/manual/manual.{dvi,ps}) which contains 
information for installation and usage.

sml2c is written in SML. The distribution contains both the source sml
files and their C versions (generated by sml2c itself). The distribution
also contains a set of tests and sample programs in the directory 
src/tests. The source for the test programs is available in tests/src.
Input files for the test programs are contained in tests/input and the
canonical output files are contained in tests/canon.

sml2c is available by anonymous ftp from dravido.soar.cs.cmu.edu
(128.2.220.26). Log in as anonymous, send username@node as password.
The distribution can be found in /usr/nemo/sml2c.   Put ftp into binary
mode before transferring the compress files.

Note that the local ftp software will allow you to change directory only
to /usr/nemo/sml2c. In particular, it will not permit you to change 
directory to /usr/nemo.

The distribution has the following format:

 manual.ps             : manual for sml2c
 sml2c-techreport.ps   : technical report describing sml2c
 75.sml2c.src.tar.Z    : the src directory containing source sml/C code for sml2c
 75.sml2c.doc.tar.Z    : the doc directory containing documentation for sml
                         and sml2c
 75.sml2c.tests.tar.Z  : the tests directory containing tests for sml2c
 75.sml2c.interp.tar.Z : the interp directory containing source and documentation
                         for the sml2c interpreter
 75.lib.tar.Z          : the lib directory containing library software
 75.tools.tar.Z        : the tools directory containing useful utilities

The size of the uncompressed distribution is 12.5 Meg for sml2c, 8 Meg for
the interpreter, and 3 Meg for documentation.

After the files are transferred they should be uncompressed 
and then extracted using tar into a directory called (e.g.) sml2c.
For example:

   mkdir sml2c
   mv 75.sml2c.src.tar.Z sml2c
   cd sml2c
   zcat 75.sml2c.src.tar.Z | tar fox -

will install the src directory.

A sample ftp session is:

ftp dravido.soar.cs.cmu.edu
Connected to DRAVIDO.SOAR.CS.CMU.EDU.
220 DRAVIDO.SOAR.CS.CMU.EDU FTP server (Version 4.105 of 10-Jul-90 12:08) ready.
Name (dravido:acha): anonymous
331 Guest login ok, send username@node as password.
Password:
230 Filenames can not have '/..' in them.
ftp> cd /usr/nemo/sml2c
250 Directory path set to /usr/nemo/sml2c.
ftp> binary
200 Type set to L 8.
ftp> get 75.sml2c.tar.Z
200 PORT command successful.
150 Opening data connection for sml2c.tar.Z (128.2.220.26,3619) (3090564 bytes).
226 Transfer complete.
local: 75.sml2c.tar.Z remote: 75.sml2c.tar.Z
3090564 bytes received in 39 seconds (78 Kbytes/s)
ftp> quit
221 Goodbye.

contact addresses:

david.tarditi@cs.cmu.edu
anurag.acharya@cs.cmu.edu
peter.lee@cs.cmu.edu

