mjj@stl.olivetti.com (Mick Jordan) (06/06/89)
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 are developing a set of tools to support software development in Modula-3. Our intent is to make the tools widely available and we plan to distribute them during the third quarter of this year. 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. We are actively developing a variety of tools to support Modula-3 development. However, in order to make a basic system available quickly, not all of these tools will be provided in the first distribution. The initial set will definitely contain the following: * 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 to debug via the generated C code. The compiler is structured such that it is 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. Other tools that we are working on and will include in the distribution if they are solid enough, include the following: * A tool to generate 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 Modula-3 interpreter, operating off the AST. * A tool to build interfaces and modules from a generic specification. * A source-level debugger with a point and show interface. * An interactive compiler tool that monitors changes made to source files and performs recompilations automatically. This replaces the use of 'make' and provides a fast compilation environment. * A remote procedure call stub generator. Run-time Library ----------------- The distribution will contain a library suitable for typical systems- programming applications. We are taking 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 will contain a number of modules (30 or so), some completely portable and some that are operating system dependent. It includes an IO system, based on an extensible set of stream classes. Tool Portability ----------------- We are developing the tools to run on Sun-3 hardware under SunOS 3.5/4.0 and on DEC VAX running Unix(*) BSD 4.3. We expect that portability of the tools to other Unix targets will be straightforward, since we make little or no use of facilities that pose portability problems. Porting it to other operating systems will require more work, but the changes should be well localised. References ---------- [1] The Modula-3 Report, 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, Aug 88. [2] Garbage Collection in an Uncooperative Environment, Hans Boehm and Mark Weiser, Software, Practice and Experience, Sep 88, pp. 807-820. How to reach us --------------- If you would like further information, or would like to receive a copy of the distribution, please send e-mail to modula-3@stl.olivetti.com (or modula-3@oli-stl.uucp). Or write to us at: Olivetti Software Technology Laboratory 2882 Sand Hill Road, Suite 115 Menlo Park, CA 94025 USA The Modula-3 Tools Project Team ------------------------------- The distribution is being developed by David Chase of Olivetti Research Center and Steve Glassman, Mick Jordan, Trevor Morris and Marion Sturtevant of Olivetti Software Technology Laboratory. (*) Unix is a trademark of AT&T Bell Laboratories.
mjj@stl.olivetti.com (Mick Jordan) (11/18/89)
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.