Xref: utzoo comp.lang.misc:3680 comp.lang.modula2:1886 comp.lang.pascal:2695 Path: 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 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.