% 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.
