🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #756

The Olivetti Modula-3 Distribution

#756
From: Mick Jordan
Date: Sat, 18 Nov 1989 00:55
118 lines
5786 bytes
                The Olivetti Modula-3 Distribution
                ---------------------------------- 

Modula-3 [1] is a new programming language that adds objects, threads,
exceptions and garbage collection to Modula-2.  We have developed a 
programming environment for Modula-3, which we are making available at
no charge, under a simple licence agreement.

Tools
-----
The Modula-3 tools are built from a collection of packages, written mostly in
Modula-3 but including some C, which are integrated by the use of an abstract
syntax tree (AST) as the intermediate representation of compilation units.
The AST is defined in terms of Modula-3 object types and the majority of the
tools operate directly off this representation.

The tools that are included in the distribution are:

 *  A compiler that translates from Modula-3 source to object code,
    by way of C source as an intermediate step.  Our use of C is quite
    high-level, hence there is a close similarity between names and types
    in the Modula-3 and C domains.  This makes it possible, although by
    no means easy, to debug via the generated C code.  The compiler is 
    structured such that it would be fairly easy to replace the C code-
    generator with an alternative.

 *  A pre-linker which verifies the consistent compilation rules of
    Modula-3, computes module initialisation order, and builds the program
    with the target machine linker.

 *  A 'makefile' generator for Modula-3 libraries and programs.

 *  A tool which generates Modula-3 code to save and restore data structures
    from persistent storage in a type-safe manner.

 *  A tool to build skeleton modules from interfaces.

 *  A pretty printer for Modula-3 source.

 *  A tool to build parameterised interfaces and modules from a generic 
    specification.

 *  A compiler 'server' which maintains a cache of interfaces
    and so provides fast response to requests for new compilations.
    It also offers some browsing facilities.

The programming environment is designed to be extensible, by virtue of the AST
and a collection of reusable compiler components. We expect to add more
tools over time, and hope that others will be motivated to do so. 
Documentation on the the internals of the environment and how it can be 
extended is in preparation.

Run-time Library
----------------- 
The distribution contains a library suitable for typical systems-
programming applications.  We have taken a simple approach to the basic
run-time environment to avoid creating unnecessary obstacles to portability.
The only significant run-time support is the garbage collector, which is by
Boehm and Weiser [2].  The library contains about 70 modules, some completely 
portable and some that are operating system dependent. It includes an IO 
system, based on an extensible set of stream classes. We have fairly complete
interfaces to Unix(+) and are working on an interface to the X(*) window 
system C library.

Tool Portability
-----------------
We developed the tools on Sun-3 hardware under SunOS 3.5.  We have also 
installed the system under SunOS 4.0, on a Sparcstation and on a VAX running 
Unix BSD 4.3 or Ultrix.  We are porting the system to a DEC 3100 (MIPS) 
workstation and a 386 running Mach.  We expect that portability of the tools
to other Unix targets will be straightforward, since we make little use
of facilities that pose portability problems.  Porting it to other operating
systems will require more work, but the changes should be well localised. 

Status and System Requirements
------------------------------
At the time of writing we have a limited release available for alpha-test.  
A full beta-test system is scheduled for early December. The system requires
a minimum of 8MB of main memory. 

How to acquire the system
-------------------------
To receive the system you must send us two signed copies of the licence 
agreement, which is available by anonymous ftp from 'orc.olivetti.com, in the 
file 'pub/modula-3-info/licence'.  If you can't reach us via ftp, send e-mail
or paper-mail, and tell us what system(s) you want to run Modula-3 on
and what kind of tape you prefer. We are not doing tape distribution for the
alpha-release. Our address is:

Modula-3
Olivetti Software Technology Laboratory
2882 Sand Hill Road, Suite 115
Menlo Park, CA 94025
USA

E-mail: modula-3@stl.olivetti.com
        modula-3@oli-stl.uucp

N.B. You are free (and encouraged) to post this message as widely as possible.

References
----------
[1] The Modula-3 Report (Revised),
    L. Cardelli, J. Dohnaue, L. Glassman, M. Jordan, B. Kalsow, G. Nelson,
    DEC Systems Research Center, Palo Alto, CA and
    Olivetti Research Center, Menlo Park, CA, Nov 89.

[2] Garbage Collection in an Uncooperative Environment,
    Hans Boehm and Mark Weiser,
    Software, Practice and Experience, Sep 88, pp. 807-820.

N.B. A compressed Postscript(-) version of the report is available via 
anonymous ftp from 'orc.olivetti.com' in 'pub/modula-3-info/M3Report.ps.Z'.

(+) Unix is a trademark of AT&T Bell Laboratories.
(*) X Window System is a trademark of Massachusetts Institute of Technology
(-) PostScript is a trademark of Adobe Systems Incorporated.
Technical Details
Message-ID: <1641@stl.olivetti.com>
Path: arc1-ca.pugleaf.net!utzoo!yunexus!ists!jarvis.csri.toronto.edu!mailrus!shadooby!samsung!gem.mps.ohio-state.edu!apple!sun-barr!decwrl!oli-stl!mjj

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!yunexus!ists!jarvis.csri.toronto.edu!mailrus!shadooby!samsung!gem.mps.ohio-state.edu!apple!sun-barr!decwrl!oli-stl!mjj
From: mjj@stl.olivetti.com (Mick Jordan)
Newsgroups: comp.lang.misc,comp.lang.modula2,comp.lang.pascal
Subject: The Olivetti Modula-3 Distribution
Message-ID: <1641@stl.olivetti.com>
Date: 18 Nov 89 00:55:15 GMT
Article-I.D.: stl.1641
Organization: Olivetti Software Technology Laboratory, Menlo Park, CA
Lines: 118