[comp.lang.functional] PD SML?

dennis@dennis.colorado.edu (07/10/90)

Can anyone point me to an ftp'able public domain source code
version of standard ML?

-Dennis Heimbigner
(dennis@boulder.colorado.edu)

alanf@bruce.cs.monash.OZ.AU (Alan Grant Finlay) (07/11/90)

In article <23308@boulder.Colorado.EDU>, dennis@dennis.colorado.edu writes:
> 
> Can anyone point me to an ftp'able public domain source code
> version of standard ML?

Public domain?  You can't be serious!

It costs thousands of dollars to produce such code.  If it were made
public domain anybody could dress it up and sell it.  You can get executables
for an SML compiler from Edinburgh University provided you are going to use
it for research only.  If you want source code I think the best you will
find is Luca Cardelli's old (before standard) compiler for ML or source
for LML (Lazy ML) again for research only.  Luca Cardelli is with Digital
I believe and LML comes from Chalmers (try Lennart Augustsson, email:
auustss@cs.chalmers.se").

wyant@apollo.HP.COM (Geoffrey Wyant) (07/13/90)

    UUCP: wyant@apollo.com

>>Public domain?  You can't be serious!

>> It costs thousands of dollars to produce such code.  If it were made
>> public domain anybody could dress it up and sell it.  You can get
executables
>> for an SML compiler from Edinburgh University provided you are going to use
>> it for research only.  If you want source code I think the best you will
>> find is Luca Cardelli's old (before standard) compiler for ML or source
>> for LML (Lazy ML) again for research only.  Luca Cardelli is with Digital
>> I believe and LML comes from Chalmers (try Lennart Augustsson, email:
>> auustss@cs.chalmers.se").

Actually the situation is much better than this. Bell Labs (David
MacQueen et. al. )
has produced a full SML compiler of very good quality that has been 
ported to a number of platforms. It is FTP'able from (at least) princeton.edu 
in the pub/ml directory.

Cheers,

Geoff Wyant
wyant@apollo.hp.com

murthy@algron.cs.cornell.edu (Chet Murthy) (07/13/90)

alanf@bruce.cs.monash.OZ.AU (Alan Grant Finlay) writes:

>In article <23308@boulder.Colorado.EDU>, dennis@dennis.colorado.edu writes:
>> 
>> Can anyone point me to an ftp'able public domain source code
>> version of standard ML?

>Public domain?  You can't be serious!

>It costs thousands of dollars to produce such code.  If it were made
>public domain anybody could dress it up and sell it.  You can get executables
>for an SML compiler from Edinburgh University provided you are going to use
>it for research only.  If you want source code I think the best you will
>find is Luca Cardelli's old (before standard) compiler for ML or source
>for LML (Lazy ML) again for research only.  Luca Cardelli is with Digital
>I believe and LML comes from Chalmers (try Lennart Augustsson, email:
>auustss@cs.chalmers.se").

But even though it costs thousands of dollars, AT&T is putting it into
the copylefted domain.  Not the public domain, where anybody and her
brother can steal it, but certainly available to anybody that wants it.

And SML of New Jersey is a really high-quality product.  They have
added lots of functionality, and they have a very good compiler and
runtime system.

The place to get it is research.att.com (or princeton.edu) by FTP.

--chet--
   -- A woman who lets men pay her way (unless she simply acquiesces to
   their insistences over her stated wishes) is like a man who hangs
   around beautiful big-breasted women and marries for love.
   --chet the hardliner-- murthy@cs.cornell.edu

db@lfcs.ed.ac.uk (Dave Berry) (07/13/90)

In article <23308@boulder.Colorado.EDU> dennis@dennis.colorado.edu () writes:
>Can anyone point me to an ftp'able public domain source code
>version of standard ML?

Here's my current list of implementations of Standard ML.  I can't give much
advice on which version would be best for you, since you don't say what you
want it for.  At a guess, I'd say that you probably want the New Jersey
implementation.  It's copyright AT&T but is freely distributable.  It's got
a few bugs in the type checking of modules. and differs slightly from the
Definition of Standard ML in a couple of other ways.



IMPLEMENTATIONS

There are 6 implementations of Standard ML available now, which are described
below.  There are another 4 being written, which are also described below.
They are mostly interactive incremental compilers.  They all implement most
of the standard faithfully; at present they differ slightly in some obscure
corners.  I've tried to give some indication of their relative performance
on reasonably sized programs, but performance depends on many factors
(such as the size of real memory on your machine).


Poly/ML.
	Poly/ML produces native code for Sun3 UNIX systems.  A SPARC version
is being developed.  A VAX version exists, but isn't currently supported.
Poly/ML is about the speed of a good compiled Common Lisp.  For my uses it
needs 3-6M of heap space.
	Poly/ML uses a persistent store, supports arbitrary precision integer
arithmetic.  It comes with a make system and a function that lets you define
functor bodies interactively.  Abstract Hardware Ltd. are developing an X11
interface, and are improving the speed of the persistent storage system.
	Poly/ML is distributed by Abstract Hardware Ltd. (ahl@ahl.co.uk).
It costs 500 pounds for an academic site licence and 2,000 pounds per
machine for industrial users with multiple and site licences by negotiation.


Standard ML of New Jersey.
        Standard ML of New Jersey is a complete and robust implementation
developed jointly at AT&T Bell Laboratories and Princeton University.  It is
an open system (source code is freely available) implemented in Standard ML
that emphasizes quality code generation.  Version 0.56 (final beta-release)
of Standard ML of New Jersey generates native code for Vax, 68020, SPARC,
and MIPS (big and little endian) architectures under various versions of the
Unix operating system (BSD, Ultrix, SunOS, Mach), and soon the Macintosh
OS.  It needs about twice as much heap space as Poly/ML, though this
varies with the application.  It produces code that runs about three
as fast as Poly/ML, and takes slightly longer to compile it.
        SML of NJ comes with ML implementations of LEX and YACC.  It provides
an interpretive mode with fast compilation, it has profiling and separate
compilation facilities, and it can produce stand-alone executable applications.
Typed first-class continuations are supported, as well as Unix signal handling
in ML.  An ML debugger and an X-windows interface are in preparation.
        SML of NJ is copyrighted by AT&T but the system, including source
code, is freely distributable.  It is available by anonymous ftp from
research.att.com and princeton.edu.  Login as "anonymous" with your user
name as password.  Put ftp in binary mode and copy the (compressed tar)
files you need from the directory dist/ml (pub/ml on princeton.edu).  You
only need the mo.*.tar.Z files for your machines.  Alternatively mail
dbm@research.att.com.  In the UK, it is available from the LFCS (send e-mail
to lfcs@ed.ac.uk).


Poplog ML.
        Standard ML is supported as part of the Poplog system, which also
provides incremental compilers for Pop-11, Common Lisp and Prolog in a
common environment with shared data-structures, so that mixed language
programming is possible. The integrated editor and HELP mechanism
support online teaching aids. POPLOG X Windows interface will be
provided from 2nd Quarter 1990 (May or June we hope). Performance
comparable to Poly/ML (when last tested) but depends on program.
Process size starts from about 1.5Mbytesd (including Editor) on Sun3.
	Poplog is available for VAX+VMS, VAX+Ultrix, VAX+Bsd 4.2/3,
Sun-2,3,4, Sun386i, SPARCstation, Solbourne, Sequent Symmetry (with Dynix),
HP M680?0+Unix workstations and Apollo+Unix. Versions for MAC-II with A/UX,
DECstation 3100 and MIPS will be available shortly.
        UK educational users should contact the School of Cognitive and
Computing Sciences, University of Sussex (alim@uk.ac.sussex.cogs).
People in the USA or Canada should contact Computable Functions Inc.
(pop@cs.umass.edu.  All others should contact Integral Solutions Ltd.
(isl@integ.uucp). Commercial prices start around 7,500 pounds.
Educational discount 85% . Special prices for UK academics.


Edinburgh ML 4.0.
	Edinburgh ML 4.0 is an implementation of the core language (without
the module system).  It uses a bytecode interpreter, which is written in C
and runs on any machine with 32 bit words, a continuous address space and
a correct C compiler.  The bytecode interpreter can be compiled with
switches to avoid the buggy parts of the C compilers that we've used it with
(as far as I know none of them worked correctly).  Ed. ML 4.0 typically
uses 1.5-4M of heap space.  It is about a quarter of the speed of Poly/ML.
	Ed. ML 4.0 is available from us.  People in the UK can get by e-mail;
we also distribute it on Sun/Apollo cartridge or 1/4" tape (tar or VMS format)
for a small fee (50 pounds for academic sites and LFCS affiliates, 100 pounds
for other commercial organisations).  Mail lfcs@ed.ac.uk for more information.


ANU ML
	ANU ML is descended from Cardelli's ML Pose 3.  It implements the
core language of the standard and an old version of modules.  It incrementally
compiles to native code on Sun-3, Vax/Ultrix, Pyramid and MacII/AUX.  (It
is intended to standardize modules and do the port to Sun-4 in the near
future.)
	ANU ML has a program development system with strong support for
debugging (tracing, automatic retesting etc.) and has been extended with
a built-in type complex.  The designers claim that it is as economical with
memory as Edinburgh ML but closer in speed to NJ ML.
	ANU ML is still considered to be in beta release since exceptions
have been standardized quite recently.  It is available from Malcolm Newey,
CS Dept., Australian National University (mcn@anucsd.anu.oz.au) by arrangement;
soon to be available by ftp.


Rutherford ML.
	Rutherford ML is an implementation of the core language that runs
on Franz Lisp.  It is no longer maintained, and is only distributed with
the Cambridge LCF system (which it supports).
	Rutherford also supply an SML-YACC parser generator, which runs on
Edinburgh ML and Poly/ML, and will soon run on New Jersey ML.
	Both SML-YACC and Cambridge LCF are available from Brian Matthews
(bmm@uk.ac.rl.inf).


The Kit Compiler.
	The LFCS are developing an implementation to serve as a base for
experiments in language design.  The code reflects the semantics as directly
as possible.
	At present the Kit Compiler can only be run on another implementation
of Standard ML.  Run like this it is slow and needs at least 16M of heap
space.  Eventually we hope to have a version about the size and speed of
Edinburgh ML.
	The Kit Compiler is not available yet.


Ten15 ML.
	Harlequin limited is developing a Standard ML compiler for the Royal
Signals and Radar Establishment, Malvern.  The target for the compiler is an
algebra specifying an abstract machine.  The algebra is called Ten15 and was
developed by the RSRE.  The ML compiler produces an encoding in Ten15 which
can then be translated into machine code for a variety of machines.


Harlequin MLWorks.
	Harlequin limited are currently developing MLWorks to support
programming in Standard ML.  This product will provide an integrated
design and development environment supporting programming in the small
and in the large.  The environment will also support the specification
of ML programs using Extended ML.  Harlequin's product is being
developed with both the industrial and academic user in mind.  MLWorks
will be available for use on a large number of hardware platforms.
	Integrated within MLWorks will be an industrial-strength compiler
for Standard ML. Harlequin plans to launch the compiler separately during
the first quarter of 1991.


LCS (a Language for Communicating Systems)
	LCS implements the core language (without modules), extended with
High Order CCS agents. Agents are "first-class" values and are defined as
Standard ML values of specific types that may be turned into processes.
Agent constructs include all those of CCS, with some extensions.  LCS is
implemented as a byte-code interpreter, written in C; it runs on virtually
all Unix machines and on Apple Macintoshes (Finder ok).  Core images are
portable across machines.
	Two interactive user interfaces are provided: an executive and a
simulator. In addition to SML, the executive allows users to start and manage
processes, either foreground or background (the top-level runs itself as
an LCS process).  The simulator implements a set of commands for interactively
expanding LCS agents, under full control of the user.
	LCS runs between 6 times slower than SML-NJ on toy examples and 2
times slower on large examples (including garbage collection time, measured
on a locally used 7000 lines ML application).  Message passing between
processes is about 5 times slower than functional parameter passing.
	Availability is scheduled for the last quarter of 1990.  Earlier
versions of the system have been running locally for about two years.
Contact Bernard Berthomieu (bernard@laas.laas.fr) for more information.


OBSOLETE VERSIONS

Edinburgh ML 3.5.
	Edinburgh ML 3.5 is a predecessor of Edinburgh ML 4.0.  It uses the
old style exceptions, and includes an obsolete version of the modules system.
It is mentioned here because it is available on the Macintosh.
	Edinburgh ML 3.5 is available in the UK by e-mail from the LFCS.  We
will also distribute it on a tape, as for Edinburgh ML 4.0.  It is also
available from Meta Software (Peter Hendersen, pbh@sbcs.sunysb.edu).

 Dave Berry, LFCS, Edinburgh Uni.      db%lfcs.ed.ac.uk@nsfnet-relay.ac.uk

	"ML don't stand for nothing!  ML *is* ML"  -- Spike Lee.

pallas@Neon.Stanford.EDU (Joe Pallas) (07/14/90)

In <43283@cornell.UUCP> murthy@algron.cs.cornell.edu (Chet Murthy) writes:

>But even though it costs thousands of dollars, AT&T is putting it into
>the copylefted domain.  Not the public domain, where anybody and her
>brother can steal it, but certainly available to anybody that wants it.

Just for the record, SML's copyright is NOT the GNU copyleft.  The SML
copyright is like the MIT X copyright---no removing the copyright
notice, no warrantees, no using AT&T's name without permission, and NO
OTHER RESTRICTIONS!

It is genuine free software.

nick@lfcs.ed.ac.uk (Nick Rothwell) (07/16/90)

In article <2646@bruce.cs.monash.OZ.AU>, alanf@bruce (Alan Grant Finlay) writes:
>In article <23308@boulder.Colorado.EDU>, dennis@dennis.colorado.edu writes:
>> 
>> Can anyone point me to an ftp'able public domain source code
>> version of standard ML?
>
>Public domain?  You can't be serious!
>It costs thousands of dollars to produce such code.

New Jersey ML is Public Domain and FTP'able from AT&T or Princeton.

		Nick.
--
Nick Rothwell,	Laboratory for Foundations of Computer Science, Edinburgh.
		nick@lfcs.ed.ac.uk    <Atlantic Ocean>!mcsun!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
		   Ich weiss jetzt was kein Engel weiss

nick@lfcs.ed.ac.uk (Nick Rothwell) (07/16/90)

In article <43283@cornell.UUCP>, murthy@algron (Chet Murthy) writes:
>But even though it costs thousands of dollars, AT&T is putting it into
>the copylefted domain.  Not the public domain, where anybody and her
>brother can steal it, but certainly available to anybody that wants
>it.

I don't think the NJ SML licence is pure copyleft (or pure PD?), to be
honest. It's not copyleft because you *can*, I think, take it and sell
it, as long as you don't mention AT&T's name.

		Nick.
--
Nick Rothwell,	Laboratory for Foundations of Computer Science, Edinburgh.
		nick@lfcs.ed.ac.uk    <Atlantic Ocean>!mcsun!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
		   Ich weiss jetzt was kein Engel weiss