Article View: comp.lang.misc
Article #756The Olivetti Modula-3 Distribution
From: Mick Jordan
Date: Sat, 18 Nov 1989 00:55
Date: Sat, 18 Nov 1989 00:55
118 lines
5786 bytes
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!mjjShow 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