Modula-3 History Collection on Computer History Museum

pjmlp1 pts0 comments

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

modula language nelson donahue cardelli kalsow

Related Articles