Modula-3 Historical Archive
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<br>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<br>Marc H. Brown,<br>Luca Cardelli,<br>Michel Dagenais,<br>Dave Detlefs,<br>John DeTreville,<br>Amer Diwan,<br>Jim Donahue,<br>Allan Heydon,<br>Tony Hosking,<br>Bill Kalsow,<br>Al Kossow,<br>Rustan Leino,<br>Eliot Moss,<br>Eric Muller,
Farshad Nayeri,<br>Mika Nyström,<br>John Polstra,<br>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,<br>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,<br>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<br>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<br>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]<br>Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson. Modula-3 Report.<br>Report 31, Systems Research Center, Digital Equipment Corporation, 25 August 1988, 55 pages.<br>Also published as Report ORC-1, Olivetti Research Center, 1988.<br>PDF
[Cardelli1989a]<br>L. Cardelli, J. Donahue, M. Jordan, B. Kalsow, and G. Nelson. The Modula–3 type system.<br>In Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '89).<br>Association for Computing Machinery, New York, January 1989, pages 202–212.<br>ACM Digital Library
[Cardelli1989c]<br>Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson. Modula-3 Report (revised).<br>Report 52, Systems Research Center, Digital Equipment Corporation, 1 November 1989, 71+15 pages. PDF version includes<br>[Nelson1990] as an appendix.<br>Also published as Report STL-89-3, Olivetti Research California, November 1989.<br>PDF
[Cardelli1992]<br>Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson.<br>Modula-3 language definition. SIGPLAN Notices, Volume 27, Issue 8 (Aug. 1992), pages 15–42.<br>ACM Digital Library /<br>PDF
[Donahue1989]<br>James Donahue. Modula-3. Videotaped lecture, University Video Communications,<br>Computer History Museum catalog number 102622078,<br>29 November 1989.<br>.m4v video
[Nelson1990]<br>Greg Nelson, editor. Twelve Changes to Modula-3.<br>comp.lang.modula3, 19 December 1990. PDF Also included as appendix to PDF version of [Cardelli1989a].
[Nelson1991]<br>Greg Nelson, editor. Systems Programming with Modula-3. Prentice Hall, 1991.<br>online at archive.org / PDF
[Nelson1991errata]<br>Allan Heydon, editor. Modula-3: Language definition errata. SRC Modula-3 web site, last modified 14 July...