Pangram verdict · v3.3
We believe that this document is fully human-written
AI likelihood · overall
HumanArticle text · 1,459 words · 6 segments analyzed
Modula-3 History Collection Paul McJones, editor paul@mcjones.org https://mcjones.org/dustydecks/ Last updated 5 July 2026 Abstract This is an annotated collection of documents, source code, and other materials concerning the birth, development, and use of the Modula-3 programming language. Contents Acknowledgments Introduction Language design timeline Implementations and distributions Libraries Applications Development support Resources Acknowledgments Thanks for help, advice, and/or materials from Marc H. Brown, Luca Cardelli, Michel Dagenais, Dave Detlefs, John DeTreville, Amer Diwan, Jim Donahue, Allan Heydon, Tony Hosking, Bill Kalsow, Al Kossow, Rustan Leino, Eliot Moss, Eric Muller, Farshad Nayeri, Mika Nyström, John Polstra, Klaus Preschern, and Olaf Wagner. This web site is dedicated to the designers of Modula-3 and its predecessor languages and to the authors of all the libraries and applications written in Modula-3. Introduction Modula-3 is a programming language designed in the late 1980s by Luca Cardelli, Jim Donahue, Mick Jordan, Bill Kalsow, and Greg Nelson (the defining report was written by Lucille Glassman and Greg Nelson). It is intended to be both safe and efficient for a wide range of systems and application programming: from low-level code like device drivers to program development tools to scientific or business applications. Safety means the runtime state of a program is guaranteed to be faithful to the language semantics. Modula-3 was also intended to be as simple as possible given these goals; the designers exceeded their 50-page budget for the language definition by only six lines of text plus the syntax summary. The language features include interfaces, objects, generics, threads, isolation of unsafe code, garbage collection, exceptions, and subtyping. Many of these have become more widespread by 2025, but in 1990 [Nelson1991] it was much less common, especially in a language supporting non-heap allocated data structures. Modula-3's existence stems from a suggestion by Maurice Wilkes to Niklaus Wirth that Modula-2+ be revised and standardized as Modula-3. (
Modula-2+ extended Wirth's Modula-2 with threads, garbage collection, and exceptions based on previous experience at Xerox PARC with Mesa and Cedar. See Software Preservation > Mesa and Modula-2+.) A committee of people from Digital Equipment Corporation Systems Research Center (Cardelli, Kalsow, and Nelson) and Olivetti Research California (Donahue and Jordan) published the initial Modula-3 design in August 1988 [Cardelli1988a], as implementations began at both labs. Experience from writing Modula-3 compilers in Modula-3 led to a few revisions and generalizations in November 1989 [Cardelli1989a]. A final set of revisions were completed by December 1990 [Nelson1990]. In 1991, the book Systems Programming with Modula-3 introduced the language to a wider audience [Nelson1991]. Chapter 1 ("Introduction") of [Nelson1991] provides additional details about the history of the design processs and the nature of the language. Chapter 8 ("How the language got its spots") is a fictional dialogue exposing a number of issues faced by the designers. [Cardelli1988a] Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson. Modula-3 Report. Report 31, Systems Research Center, Digital Equipment Corporation, 25 August 1988, 55 pages. Also published as Report ORC-1, Olivetti Research Center, 1988. PDF [Cardelli1989a] L. Cardelli, J. Donahue, M. Jordan, B. Kalsow, and G. Nelson. The Modula–3 type system. In Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '89). Association for Computing Machinery, New York, January 1989, pages 202–212. ACM Digital Library [Cardelli1989c] Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson. Modula-3 Report (revised).
Report 52, Systems Research Center, Digital Equipment Corporation, 1 November 1989, 71+15 pages. PDF version includes [Nelson1990] as an appendix. Also published as Report STL-89-3, Olivetti Research California, November 1989. PDF [Cardelli1992] Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson. Modula-3 language definition. SIGPLAN Notices, Volume 27, Issue 8 (Aug. 1992), pages 15–42. ACM Digital Library / PDF [Donahue1989] James Donahue. Modula-3. Videotaped lecture, University Video Communications, Computer History Museum catalog number 102622078, 29 November 1989. .m4v video [Nelson1990] Greg Nelson, editor. Twelve Changes to Modula-3. comp.lang.modula3, 19 December 1990. PDF Also included as appendix to PDF version of [Cardelli1989a]. [Nelson1991] Greg Nelson, editor. Systems Programming with Modula-3. Prentice Hall, 1991. online at archive.org / PDF [Nelson1991errata] Allan Heydon, editor. Modula-3: Language definition errata. SRC Modula-3 web site, last modified 14 July 1997. online via archive.org Language design timeline 1984-1986 Modula-2+ development at DEC SRC [Rovner1985, Rovner1986]. December 1986 Joint SRC/ORC delegation to visit Wirth at ETH [Donahue1989] January-March 1987: Early discussions on goals, scope [Donahue1989]. April 1987 Serious design began [Donahue1989]. November 1987 First complete draft [Donahue1989]. August 1988 Modula-3 Report published [Cardelli1988a].
Implementation began at both labs [Donahue1989, Nelson1991]. January 1989 Revisions based on implementation experience: "The main changes were the introduction of branded reference types, the requirement that opaque types be branded, the legalization of opaque supertypes, and the new flexibility in revealing information about an opaque type" [Cardelli1989c]. October 1989 First public release of ORC Modula-3 [Donahue1989]. November 1989 Modula-3 Report (revised) published [Cardelli1989c]. December 1989 First public release of SRC Modula-3 [Kalsow2021]. December 1990 "The Twelve Changes": Generics added, improved conformance with IEEE 754 floating point, RAISES defaults to {}, method declarations and overrides differentiated, method override at NEW time by syntactic sugar, top-level procedure constants in constant expressions, T.m allowed as procedure constant and method default, liberalized NEW of opaque object type, revealed supertypes of an opaque type must be totally ordered, EXTERNAL changes, return type of TYPECODE is unsigned rather than signed, changes to CHAR, TEXT, and numeric literals [Nelson1990]. 1991 First publication of final language definition, in [Nelson1991,Nelson1991errata]. 1992 Modula-3 Language Definition published [Cardelli1992]. Circa 1996 Final web version. Implementations and distributions Olivetti Modula3 DEC SRC Modula-3 UMass Amherst GNU Modula-3 Caltech Modula-3D Princeton M3 Klagenfurt M3/PC M3forDOS Modula-3 for OS/2 Critical Mass CM3 Polytechnique Montréal PM3 University of Washington SPIN Modula-3 Purdue Persistent M3 Cambridge CAM3 EZM3 Elego Software Solutions Modula-3 Github Modula-3 M3 compiler family tree Implementations began at both companies immediately after the initial language definition was published. Olivetti Modula-3 was used inside Olivetti for a time, but died out after Olivetti Research California was abruptly shut down in February 1991.
All subsequent Modula-3 development (except a short-lived GNU project at UMass Amherst) was based on DEC SRC Modula-3. Olivetti Modula-3 Olivetti Modula-3 was implemented by Mick Jordan, Trevor Morris, David Chase, Steve Glassman, and Marion Sturtevant. [Jordan1990, Nelson1991] The compiler was based on a general Abstract Syntax Tree (AST) mechanism called M3AST. Tools based on M3AST included the compiler front-end (parser, semantic analyser, and a control module), a code generator that produced C source code, the pre-linker (which dealt withglobal information such as determining module initialization order and checking for consistent compilation of interfaces and modules), and a "pickle" (object serialization/deserialization) stub generator [Jordan1990]. The first public release was October 1989 [Donahue1989]. After Olivetti Research California (ORC) shut down in February 1991, Mick Jordan and Steve Glassman moved to DEC SRC; Jordan brought the AST-based toolkit with him. [Jordan1990] Mick Jordan. An extensible programming environment for Modula-3. In Proceedings of the Fourth ACM SIGSOFT Symposium on Software Development Environments (SDE 4). Association for Computing Machinery, New York, 1990, pages 66–76. ACM Digital Library Source code Version 2.2. In DEC SRC Modula-3 version 2.11. unpacked Version ?. In DEC SRC Modula-3 version 3.5.3, directory m3/m3tk. m3.tar.gz Version ?. In DEC SRC Modula-3 version 3.6, directory m3/m3tk. m3.tar.gz m3tk in current cm3 repository. https://github.com/modula3/cm3/tree/master/m3-tools/m3tk DEC SRC Modula-3 SRC Modula-3 was implemented by Bill Kalsow and Eric Muller [Nelson1991]. It was bootstrapped via SRC's existing Modula-2+ language and compiler. The original version generated C and invoked GCC to compile it, but starting with version 3.0 it was modified to produce an intermediate language that could drive different backends.
The most widely used backend was a small program that read a textual version of the intermediate language and called the GCC code generation libraries. For more details, see [Kalsow 1994, 1995a, 2021]. Bill Kalsow left SRC in July 1995, and development of the compiler at SRC shifted to maintenance mode. Nevertheless, other than the Olivetti compiler, all subsequent Modula-3 compilers and distributions were based on the SRC Modula-3 code base, with contributions from a variety of people. [Kalsow1994] Bill Kalsow and Eric Muller. A tour of the compiler. DEC SRC Modula-3 documentation, 1994. HTML [Kalsow1995a] Bill Kalsow and Eric Muller. A tour of the runtime. DEC SRC Modula-3 documentation, 1995. HTML [Heydon1997] Bill Kalsow, Eric Muller, and Allan Heydon. Release history [versions 1–3.5.3]. DEC SRC Modula-3 documentation, 1997. HTML [Kalsow2021] Bill Kalsow. History of the SRC Modula-3 Compiler. Email to Paul McJones. 25 March 2021. HTML [SRC1997] SRC Modula-3. Home page for DEC SRC implementation of Modula-3, as of the final 3.6 release (originally http://www.research.digital.com/SRC/modula-3/html/srcm3.html). HTML Source code For a full history of releases 1.0 through 3.5.3 (release 3.6 was minor changes to 3.5.3), see [Heydon1997].