% Copyright (C) 1989, Digital Equipment Corporation % All rights reserved. % See the file COPYRIGHT for a full description. % % modified on Mon Jan 6 13:08:54 PST 1992 by kalsow \chapter{Introduction} \pagenumbering{arabic} This document describes \srcmodula and the terms under which it is distributed. The distribution contains a \modula compiler and runtime, a set of libraries, a coverage analyzer, a \modula pretty printer, and a small test suite of \modula programs. The compiler generates C as intermediate code. This release is known to work on a variety of machines (see the table on page~\pageref{configurations}). We have not tested the software in any other configurations. It may function correctly on other versions of Ultrix or on other machines. \index{contributors} The compiler and runtime system was designed and implemented by Bill Kalsow and Eric Muller. Neither of us view this as a finished product. Nonetheless, we thought others might like to use it. The system should be of interest to two camps: those interested in trying out \modula and those interested in compiler hacking. \section*{Other Documents} The bibliography at the end of this document contains some references related to \modula. \index{SPwM3} The \modula language is described in ``Systems Programming with Modula-3'' \cite{m3-Nel91}, edited by Greg Nelson and published by Prentice Hall. It should be available in book stores. Other chapters in this book describe the thread mechanism and readers and writers. Sam Harbison wrote ``Modula-3'' \cite{m3-Har90} and ``Safe Programming with Modula-3'' \cite{m3-Har92DDJ}, overviews of \modula and ``Modula-3'' \cite{m3-Har92}, a textbook for \modula. To receive a SRC report on paper, contact: \begin{center} \begin{tabular}{l} SRC Report Distribution\\ Digital Equipment Corporation\\ 130 Lytton Avenue\\ Palo Alto, CA 94301-1044 \\ \\ \verb|src-report@src.dec.com| \\ \end{tabular} \end{center} \section*{Acknowledgments} \def\cont#1{{\bf #1}} \index{contributors} Many people contributed to SRC Modula-3, and we would like to thank them. Below is a partial list of the contributors. \index{contributors} We use the garbage collector developed by \cont{Joel Bartlett} (DEC-WRL). It has been modified to support incremental and generational collection by \cont{John DeTreville} (DEC-SRC). \index{contributors} \cont{John Dillon} (DEC-SRC) provided the original C version of thread switching. \index{contributors} \cont{Mark R. Brown} and \cont{Greg Nelson} (DEC-SRC) designed the readers and writers interfaces. \index{contributors} \cont{Jorge Stolfi} (DEC-SRC) and \cont{Stephen Harrison} (DEC-WSE) were very patient alpha-testers. They gave us invaluable bug reports and also translated some DEC-SRC Modula-2+ modules to Modula-3. \index{contributors} \cont{J\'er\^ome Chailloux} (ILOG) developed the X interfaces while visiting DEC-SRC. We also had numerous discussions about the evolution of SRC Modula-3. \index{contributors} The ``gatekeepers'' (DEC-WRL), in particular \cont{Paul Vixie}, helped with the distribution of SRC Modula-3. \index{contributors} \cont{David Goldberg} (XEROX PARC) ported SRC Modula-3 to the SPARC machines. \index{contributors} \cont{Ray Lischner} ported the system to the APOLLO machines. \index{contributors} \cont{Richard Orgass} (IBM Rochester) and \cont{Roger Hoover} (IBM) ported the system to the IBM machines. \index{contributors} \cont{Piet van Oostrum} (Utrecht University) ported the system to the HP series 9000/300 computers running HP/UX 7.0. \index{contributors} \cont{Pat Lashley} (KLA Instruments) contributed the lexer for {\tt pps}. \index{contributors} \cont{R\'egis Crelier} (ETH) designed and implemented the pickles modules while he was a summer intern at SRC. \index{contributors} \cont{Mick Jordan} (DEC-SRC) provided challenging programs to compile. \index{contributors} \cont{Norman Ramsey} (Princeton University) has pushed the system into obscure corners and found many bugs there. \index{contributors} \cont{R.J. Stroud} and \cont{Dick Snow} (University of Newcastle upon Tyne) provided the Encore Multimax port. \index{contributors} \cont{Dave Nichols} (Xerox PARC) fixed and improved the pretty printer. \index{contributors} \cont{Greg Nelson} and \cont{Mark Manasse} (DEC-SRC) designed and implemented the Trestle window system. \index{contributors} \cont{Sam Harbison} contributed the {\tt FieldList} interface. \index{contributors} \cont{Steven Pemberton} (CWI) wrote the {\tt enquire} program and made it available to the community. \index{contributors} The vbtkit software has been designed and implemented by a large number of people at SRC: \cont{Andrew Birrell}, \cont{Ken Brooks}, \cont{Marc H. Brown}, \cont{Mark R. Brown}, \cont{Pat Chan}, \cont{Luca Cardelli}, \cont{John DeTreville}, \cont{Steve Glassman}, \cont{Mark Manasse}, \cont{Jim Meehan}, \cont{Greg Nelson}, \cont{Jorge Stolfi}, \cont{Mary-Claire van Leunen}. \index{contributors} FormsVBT is due to \cont{Jim Meehan} and \cont{Marc H. Brown} (DEC-SRC). \index{contributors} \cont{Peter Klein} (RWTH Aachen) contributed a tool to help convert Modula-2 to Modula-3 programs. \index{contributors} \cont{James J. Walker} (GTE Laboratories) ported the system to the HPPA machines. \index{contributors} \cont{Thomas Brupbacher} (ETH Zuerich) ported the system to the SUN386 machines. \index{contributors} \cont{Dennis Brueni} ({\tt brueni@csgrad.cs.vt.edu}) ported the system to the OKI machines. \index{contributors} \cont{Dave Detlefs} (DEC SRC) wrote the Modula-3 mode for gnuemacs. \cont{David Goldberg} (XEROC PARC) wrote the {\tt m3tags} program. \index{contributors} Thanks also to all the people who used SRC Modula-3 and reported bugs. \index{contributors} The various ports would have been impossible without the work of a number of people, who kindly made their modifications available. However, most of the bugs you may find in these ports were introduced during the final integration of these modifications and we are to be blamed for them.