Software Preservation Group of the Computer History Museum
Modula-3

Modula-3 Historical Archive

Paul McJones, editor
paul@mcjones.org
https://mcjones.org/dustydecks/

Last updated 13 October 2025

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

Thanks for help and advice from Marc H. Brown, Luca Cardelli, Michel Dagenais, Dave Detlefs, John DeTreville, Amer Diwan, Jim Donahue, Allan Heydon, Tony Hosking, Bill Kalsow, Rustan Leino, Eliot Moss, Eric Muller, Farshad Nayeri, Mika Nyström, John Polstra, 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. 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.

[画像:Languages influencing Modula-3, starting with Algol 60]

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); it was designed at the DEC Systems Research Center. [Rovner1985, 1986; vanLeunen1986] 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 design in August 1988 [Cardelli1988a], as implementations began at both labs. Experience from writing a Modula-3 compiler 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
[Cardelli1989b]
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
[Rovner1985]
Paul Rovner, Roy Levin, and John Wick. On extending Modula-2 for building large, integrated systems. Report 3, Systems Research Center, Digital Equipment Corporation. 11 January 1985. PDF
[Rovner1986]
P. Rovner. Extending Modula-2 to Build Large, Integrated Systems. IEEE Software Volume 3, Number 6 (November 1986), pages 46–57. IEEE Xplore
[vanLeunen1986]
Mary-Claire van Leunen. The Modula-2+ User's Manual. Systems Research Center, Digital Equipment Corporation, DRAFT, 18 April 1986. PDF

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 lab. [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." [Cardelli1989b]
October 1989
First public release of ORC Modula-3 [Donahue1989]
November 1989
Modula-3 Report (revised) published. [Cardelli1989b]
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

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

See the m3tk package present in most Modula-3 distributions.

DEC SRC Modula-3 I [heart] M3 I [heart] M3

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

DEC SRC Modula-3 releases
Version Date Release description Source Original Unpacked
1.5

23 Jul 1990

PDF >http://mail.digiater.nl/openvms/decus/lt90b2/m3/ online unpacked
2.05 13 Mar 1992 PDF newdoc.dvi in doc directory of 2.11
2.07 20 Jul 1992 PDF Scan of hardcopy from Paul McJones
2.09 ? Klagenfurt's M3/PC online unpacked
2.10 ? Bill Kalsow's TK50 cartridge
2.11 7 Jan 1993 PDF

Prime Time Freeware for UNIX, Volume 3.1B via archive.org

online unpacked
3.1 ? Klaus Preschern's M3forDOS online unpacked
3.5.3 Jun 1995 gatekeeper.dec.com via ftp.zx.net.nz online
3.6 Sep 1996 gatekeeper.dec.com via ftp.zx.net.nz online docs

GNU Modula-3 and Persistent Modula-3 (UMass Amherst)

In the late 1980s, Eliot Moss at the University of Massachusetts Amherst became interested in integrating programming language and database features by adding persistence to programming language datatypes. He and his research group designed the Mneme persistent object store and then used it to prototype Persistent Smalltalk and Persistent Modula-3. [Moss1990]

Persistent Modula-3 [Hosking1990] was based on a new Modula-3 compiler, since they began before DEC SRC Modula-3 wa released: [Hosking1991]

"We have chosen the GNU C compiler as a base on which to build, its portability meeting the first of our requirements, and its optimization phase allowing us to attack the problem of performance. Our implementation effort involves the construction of a Modula-3 front end to the compiler, along with the necessary modifications to the back end to support persistence and garbage collection."

The compiler generated assembly language and tables to allow the locally-developed. garbage collector to precisely locate all collectible objects. [Diwan1992, Hudson1991]

*** Antony Hosking believes he may still have a copy of the source code for this compiler.

[Diwan1990]
A. Diwan, "Exception handling in Modula-3." Internal OOS Document, 1990.
[Diwan1992]
Amer Diwan, Eliot Moss, and Richard Hudson. Compiler support for garbage collection in a statically typed language. In Proceedings of the ACM SIGPLAN 1992 Conference on Programming Panguage Design and Implementation (PLDI '92). Association for Computing Machinery, New York, 1992, pages 273–282. ACM Digital Library
[Diwan1996]
Amer Suleman Diwan. Understanding and improving the performance of modern programming languages. PhD thesis, University of Massachusetts Computer and Information Science Department, Amherst, MA, 1996.
[Hosking1990]
Antony L. Hosking and J. Eliot B. Moss. Towards Compile-Time Optimisations for Persistence. To appear in the Proceedings of the Fourth International Workshop on Persistent Object Systems: Design, Implementation, and Use. Martha’s Vineyard, MA, September 1990. PDF at hosking.github.io/
[Hosking1991]
Antony L. Hosking and J. Eliot B. Moss. Compiler support for persistent programming. COINS Technical Report 91-25, University of Massachusetts, Amherst, MA 01003, March 1991. PDF at cs.purdue.edu
[Hudson1991]
Richard L. Hudson, J. E Moss, Amer Diwan, and Christopher F. Weight. A Language-Independent Garbage Collector Toolkit. Technical Report. University of Massachusetts, USA. COINS Technical Report 91-47, September 1991. Online at scholarworks.umass.edu
[Moss1990]
J. Eliot B. Moss. Design of the Mneme persistent object store. ACM Trans. Inf. Syst. Volume 8, Number 2 (Apr. 1990), pages 103–139. ACM Digital Library

Caltech Modula-3D

The Caltech Mosaic C Multicomputer was based on single-chip nodes with a two-dimensional interconnect. [Seitz1993] Rustan Leino designed Modula-3D, a distributed extension of Modula-3 for the Mosaic, for his Master’s thesis: [Leino1992, 1993]

"I think [the Mosaic] had 256 cores (or maybe that was the eventual goal), each of which had 64 KB of word-addressable (16-bit words) RAM. My runtime system, with garbage collector, interprocess communication, and network objects used 32 KB of that memory on each core." [Leino, personal communication, 2021]

Documentation and papers

[Leino1992]
K. Rustan M. Leino. Extensions to an object-oriented programming language for programming fine-grain multicomputers. Technical Report, Caltech-CS-TR92-26, California Institute of Technology, 1992.
[Leino1993]
K. Rustan M. Leino. Multicomputer Programming with Modula-3D. Master's thesis, California Institute of Technology, 4 June 1993. https://doi.org/10.7907/Z9F18WSP

Abstract: In this note, we extend an object-oriented language to support programming fine-grain multicomputers. The new constructs have a simple semantics and provide a nice way to write distributed programs. The semantics of the constructs are independent of how a program is distributed. We also show a set of simple conditions under which even the outcome of a program is independent of how its control and data are distributed. We show some strengths and weaknesses of the programming model, and describe and critique our implementation of the language.

[Seitz1993]
Charles L. Seitz, Nanette J. Boden, Jakov Seizovic, and Wen-King Su. The design of the Caltech Mosaic C multicomputer. In Proceedings of the 1993 Symposium on Research on Integrated Systems. MIT Press, Cambridge, 1993, pages 1–22.

Source code

Klagenfurt M3/PC

"This is a version of Modula-3 running on a plain DOS-PC. It is mainly addressed to students of undergraduate programming courses and other Modula-3 programming beginners. It was developed on the Department of Informatics, University of Klagenfurt. We use it in our introduction into programming courses. The system implements version 2.09 of the Digital Systems Research Centers Modula-3 implementation. ...

Credits

The projects were supervised by László Böszörményi." [Weich1996]
[Böszörményi1996]
László Böszörményi and Carsten Weich. Programming in Modula-3: An Introduction in Programming with Style. (German title: Programmieren mit Modula-3, Eine Einführung in stilvolle Programmierung.) Springer, 1996.
[Weich1996]
Carsten Weich. M3/PC Klagenfurt 96. Web site, Department of Informatics, University of Klagenfurt. online at www.ifi.uni-klu.ac.at via archive.org

Source code

Klaus Preschern / M3forDOS

Klaus Preschern, after leaving the University of Klagenfurt, developed an alternative Modula-3 PC system, called EX32.
[Klagenfurt M3/PC readme]

- - -

EX32 ("A 32-bit Extension of DOS") is a environment for the developement
and execution of 32-bit applications with DOS.
EX32 is a collection of DOS programs (drivers + kernel). It provides
services for applications executed in protected mode. It does process
management, virtual memory management, interprocess communication
via pipes and it offers a file system with 32 character filenames.
EX32 runs on MS-DOS 5.00, 6.00 and 6.02. You need a i386/i387 (coprocessor
required) or upward (i486, Pentium). EX32 supports DOS XMS memory (but not
EMS, VCPI or DPMI). No support for the i286. You should have at least 4 MB
memory (8 MB or more recommended). The whole package occupies unzipped and
untared approximately 44 MB of disk space.
EX32 comes with GNU C++ (version 2.4.5), SRC Modula-3 (version 3.1,
including threads), two C libraries, a graphics library for VGA and a
number of commands (i.e. ls, cp, rm, mkdir, make, ...).
[Preschern, AREADME.1ST, 1 June 1996]

Source code

Critical Mass CM3

Farshad Nayeri learned Modula-3 as a graduate student at UMass Amherst under Eliot Moss. Later, Nayeri and his group at GTE Laboratories used Modula-3 to build a Distributed Object Manager. [Nayeri1994] Nayeri met Geoff Wyant through comp.lang.modula3; when they realized both worked in the Boston area they got together for lunch. Wyant was using Modula-3 for a series of distributed systems projects at Sun Microsystems Laboratories. [Wyant1994, Waldo1995, Wollrath1995]. With encouragement from Wyant, Nayeri and his wife Lauren Schmitt founded Critical Mass in Cambridge, Massachusetts. In August 1995 they visited DEC SRC with a proposal for a cooperative partnership whereby Critical Mass would create a family of products based on SRC technologies and offer them with commercial support. The products were to include:

Each of these products would be a family, with core, team, and enterprise versions.

By fall 1995 the plan for Photon had evolved to a web-based user interface, "allowing the user to readily browse, build, and manage large projects locally or over a network." [Schmidt1995] Bill Kalsow joined Critical Mass in early 1996 and contributed greatly to the system. Among other things, support of the Windows NT platform was improved. [Kalsow1997] Michel Dagenais at Positron Industries was an early support customer for Positron's Power911 system. In late 1996, Critical Mass released Reactor, a web-based fast-turnaround environment for Modula-3 programming.

In the early days, the possibility of Geoff Wyant joining Critical Mass had been discussed, but on 16 June 1996 a tragic accident in a light plane claimed Wyant's life. [Sproull1996]

As Java emerged on the scene, Critical Mass built several products to take advantage of its increasing popularity. The first was JVM, a Java virtual machine written in Modula-3 that could be embedded in an application (coded in C, C++, or Modula-3), allowing Java to be used as an extension language. Raygun was a final, unreleased, product: a flexible web-based cross-referencing tool that extended Reactor (which in turn extended m3browser [Kalsow1995b]) to additional languages including Java.

By 1998, Critical Mass had terminated active development of Modula-3. They open-sourced the code base in 2001. Support and development was taken over by Elego Software Solutions in Berlin. The source code for Reactor (now called CM-IDE) was open-sourced in June 2008.

[Heydon2001]
Allan Heydon, Roy Levin, Timothy Mann, and Yuan Yu. The Vesta Approach to Software Configuration Management. Report 168, Systems Research Center, Compaq, 9 March 2001. PDF
[Kalsow1995b]
Bill Kalsow. m3browser — an HTTP server providing virtual Modula-3 web. Program accompanying SRC Modula-3. https://github.com/modula3/cm3/tree/master/m3-tools/m3browser/src/
[Kalsow1997]
Bill Kalsow. Email to Farshad Nayeri: Re: List of changes to the runtime. 8 April 1997. HTML
[Nayeri1994]
Farshad Nayeri, Ben Hurwitz, and Frank Manola. Generalizing Dispatching in a Distributed Object System. In: Tokoro, M., Pareschi, R. (eds) Object-Oriented Programming. ECOOP 1994. Lecture Notes in Computer Science, vol 821. Springer, Berlin, Heidelberg. Springer Nature Link
[Schmitt1995]
Lauren Schmitt. Photon: An Environment for Building Distributed Applications. Threads: A Modula-3 Newsletter, Issue 1, Fall 1995. HTML at modula3.org
[Sproull1996]
[Bob Sproull. Remembering Geoff Wyant. Threads: A Modula-3 Newsletter. Issue 2. Fall 1996. HTML at modula3.org
[Waldo1995]
Jim Waldo, Ann Wollrath, Geoff Wyant, and Samuel C. Kendall. 1995. Events in an RPC based distributed system. In Proceedings of the USENIX 1995 Technical Conference Proceedings (TCON'95). USENIX Association. usenix.org / PDF
[Wollrath1995]
Ann Wollrath, Geoff Wyant, and Jim Waldo. Simple activation for distributed objects. In Proceedings of the USENIX Conference on Object-Oriented Technologies on USENIX Conference on Object-Oriented Technologies (COOTS'95), USENIX Association. usenix.org/ PDF

Reactor

Unless otherwise noted, the HTML files below are from cmass.com via archive.org.

Critical Mass CM-96

Critical Mass Modula-3 open-source release (5.1?) (circa 2001?)

[Kalsow1997] describes the compiler and runtime changes made by Critical Mass up through April 1997. Here's a brief summary: [Source: About CM3 at modula3.github.io]

Polytechnique Montréal Modula-3 (PM3)

"With release 3.6, in early 1996, DEC SRC Modula-3 reached a mature state. Bill Kalsow, responsible for the compiler, left DEC SRC around that time and later joined Critical Mass, a commercial Modula-3 vendor. Since then, a number of advanced Modula-3 projects at DEC SRC continued in areas such as 3D animation, static verification, constraint based geometrical editor, and distributed applications. In many other areas, including the compiler and base libraries, few updates were made at DEC SRC. Moreover, these updates are available separately from the release and must be integrated manually.

At the same time, several contributions appeared from Modula-3 programmers around the world and included several bug fixes, enhancements, and new libraries or tools such as a more platform independent version of Pickle, an integrated code generator for Linux ELF, a simplified single process version of m3build-m3-quake, a port of SRC Modula-3 to NT386 using gnu-win32, and several new packages such as CVSsup, M3COCO, and M3 TXL.

After consultations with several key academic Modula-3 programmers with similar needs, including Peter Klein, Blair McIntyre, and Richard Watts, it was decided to create a new distribution based on SRC Modula-3. The new distribution is under CVS version control and is accessible to remote maintainers.

The first public release of PM3 included SRC release 3.6 with all patches applied, a fast integrated Linux ELF code generator, a simplified m3build-m3-quake with accordingly simplified templates for platform customization, m3cc and m3gdb based on newer versions of gcc and gdb, full platform support for NT386GNU through gnu-win32, a simplified bootstrap and build process, a directory hierarchy to organize the 130+ packages, SGML/HTML based documentation, and an automated release procedure to produce updated sources, bootstraps and binaries every week." [Dagenais, history.html, pm3 version 1.1.15 of 5 Sep 2000]

- - -

"... I began taking care of the comp-lang-modula3 FAQ in 1993 and stopped in 2002. From September 1995 to August 1996, I was Director of Software Development at Positron Industries, in a team building their next generation 911 Emergency Call system in Modula-3. We used the services of Critical Mass (Farshad Nayeri and Bill Kalsow) to get the incremental garbage collector ported to Windows NT.

I later maintained the Polytechnique Montréal distribution of Modula-3 (PM3), with some documentation and minor tools added. In 1996-1997 I wrote an online book draft, Building Distributed OO Applications: Modula-3 Objects at Work [Dagenais1997] and used it a few years in a course on Object Oriented programming. In 2002, coming back from a sabbatical, I gave up on Modula-3 (and PM3 and the FAQ) to concentrate on tracing and performance analysis tools for Linux." [Michel Dagenais, personal communication, 30 August 2025]

[Dagenais1997]
Michel Dagenais. Building Distributed OO Applications: Modula-3 Objects at Work. Draft of 14 January January. PDF / PostScript at professeurs.polymtl.ca via archive.org
[Dagenais2002]
Polytechnique Montréal Modula-3 Home. Web site. Last updated 8 April 2002. m3.polymtl.ca via archive.org

After Dagenais gave up on PM3, Elego Software Solutions maintained it from 2001-2012, then maintenance moved to GitHub (https://github.com/modula3/pm3).

Source code

University of Washington SPIN Modula-3

SPIN is an extensible operating system whose extensions run in the kernel; protection of the kernel from the extensions and between extensions is implemented through software (both compile-time and runtime) rather than hardware mechanisms. The kernel and the extensions are written in a version of DEC SRC Modula-3 (perhaps version 3.1?) with some additions and changes: [Hsieh1996]

VIEW
Typesafe casting
EPHEMERAL procedures
Procedures that guarantee they won't screw up the system even if they are terminated at an arbitrary point.
FUNCTIONAL procedures
Procedures that don't modify any global state.
PROCANY type
A supertype for all PROCEDURE types.
RTCode interface
An way to talk about Modula-3 modules and interfaces at runtime.
EXTERNAL is UNSAFE
Any interface containing <*EXTERNAL*> declarations must be UNSAFE.
IMPLICIT exceptions
Exceptions that every procedure may raise, and that do not need to be declared.
ALIGNED FOR
You can boost the alignment of types that need it.
Object methods
Calling and naming object methods explicitly is restricted.
CVAR
Calling C functions with call-by-reference.
[Hsieh1996]
W. C. Hsieh, M. E. Fiuczynski, C. Garrett, S. Savage, D. Becker, and B. N. Bershad. Language Support for Extensible Systems. In First Annual Workshop on Compiler Support for System Software, February 1996. PDF at cseweb.ucsd.edu
[Sirer1996a]
E. G. Sirer, M. E. Fiuczynski, P. Pardyak, and B. N. Bershad. Safe Dynamic Linking in an Extensible Operating System. In The First Workshop on Compiler Support for Systems Software, February 1996. PDF at cs.cornell.edu
[Sirer1996b]
Emin Gun Sirer, Stefan Savage, Przemyslaw Pardyak, Greg DeFouw, Mary Ann Alapat, and Brian Bershad. Writing an Operating System Using Modula-3. In the Workshop on Compiler Support for System Software (WCSSS `96), February 1996. PostScript at www-spin.cs.washington.edu / PDF
[Fiuczynski1997]
Marc E. Fiuczynski, Wilson C. Hsieh, Emin Gün Sirer, Przemyslaw Pardyak, Brian N. Bershad. Low-Level Systems Programming with Modula-3. Threads: The Modula-3 Systems Journal, Issue 3, Fall 1997. online at modula3.org

Source code

Purdue Persistent Modula-3

As a graduate student, Antony Hosking had worked with Eliot Moss on a Persistent Modula-3 based on their GNU Modula-3, Mneme persistent object store, and language-independent garbage collector toolkit. Hosking then joined the faculty at Purdue University, continuing his work on persistence, this time exploring orthogonal persistence: objects are persisted because they can be reached from a client-specified database root, rather than being declared at compile time to be an element of a persistent type. Persistent Modula-3 made no changes to the compiler.

[Hosking1999a]
Antony L. Hosking and Jiawan Chen. Mostly-copying reachability-based orthogonal persistence. In Proceedings of the 14th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA '99). Association for Computing Machinery, New York, 1999, pages 382–398. ACM Digital Library
[Hosking1999b]
Antony L. Hosking and Jiawan Chen. PM3: An Orthogonal Persistent Systems Programming Language - Design, Implementation, Performance. In Proceedings of the 25th International Conference on Very Large Data Bases (VLDB '99). Morgan Kaufmann Publishers Inc., San Francisco, 1999, pages 587–598. PDF at vldb.org
[Hosking2003]
Antony Hosking, Persistent Modula-3. Web site, last updated 2003. https://www.cs.purdue.edu/homes/hosking/pm3.html

Source code

"We track the Polytechnique Montréal Modula-3 release (version 0.x.y of Persistent Modula-3 corresponds to version 1.x.y of Polytechnique Montréal Modula-3), which is itself based on SRC Modula-3 release 3.6." [Hosking2003]

The main additions are the new packages database/GRAS3 and database/persistence; these have also been merged into https://github.com/modula3/pm3.

Richard Watts / Cambridge Modula-3 (CAM3)

"Cambridge Modula-3 is a variant of SRC Modula-3 developed at the University of Cambridge Computer Laboratory. It includes an updated build system with configuration file support (no more having to rebuild the distribution whenever you move it), language additions to allow debugging, NT386GNU support for gcc on Windows 95 and NT, a number of extra packages, and Blair MacIntyre's portable pickle package version 2.0. Its main aims are:

- - -

"Cambridge Modula-3 was developed to have an updated build system with better configuration file support. It extends SRC M3 with a few extra packages, and includes some other enhancements including pragmas.

Most, if not all, of the Cambridge Modula-3 enhancements have been folded into the Polytechnique Montreal Modula-3 system. I believe that CAM3 is slowly being phased out, but I could be wrong.

Currently, the web pages and software distribution of CAM3 don't seem to be accessible by the public, if they still exist at all. (The link was https://www.cl.cam.ac.uk/m3doc/linux/cambridge.html)." [Olaf Wagner, modula3.org/implementations, July 1998]

Documentation

John D. Polstra / EZM3

"Ezm3 is a simpler, more portable distribution of the Modula-3 compiler and runtime libraries. It is designed for people who would like to install CVSup on their systems as quickly and as painlessly as possible. Ezm3 is derived from the robust and comprehensive PM3 release of Modula-3. Only the components and features which are needed by CVSup were retained. Features which made the package harder to port and install were removed.

The goal of Ezm3 is for you to be able to install Modula-3 on your system in one try, without any patching or false starts." [Polstra, EZM3: An Easier Modula-3 Distribution, 2001]

For a number of years, FreeBSD development was based on the CVS revision control system, using the program CVSup to replicate CVS repositories. CVSup was written in Modula-3, and its author, John D. Polstra, maintained the EZM3 distribution of Modula-3. EZM3 was based on Polytechnique Montréal Modula-3 (perhaps version 1.1.15?).

Source code

Olaf Wagner / Elego Software Solutions / CM3 and PM3

Elego is a software product and services company in Berlin. After Critical Mass open-sourced CM3 in 2000, Elego began providing the infrastructure for website, repositories, continuous integration, and bug tracking. In March 2002 Elego also took over the repository of the other active Modula-3 distribution, PM3, which had been maintained by Michel Dagenais at Polytechnique Montréal. After more than a decade, all Modula-3 based projects at Elego had been terminated, and it was no longer possible to justify the resources being expended. All the development activity moved to github.com. [Olaf Wagner, personal communication, 1 September 2025]

"CM3 5.1 is the first open source release of the Modula-3 compiler and bundled software from Critical Mass, Inc. It does currently not contain other products that were created by Critical Mass. The CM3 graphical user interface is called CM3-IDE. It is based on the original Reactor product produced by Critical Mass." [https://www.cs.purdue.edu/homes/hosking/m3/]

- - -

"PM3—Polytechnique Montréal Modula-3 is the largest incarnation of the free Modula-3 development environments. It builds upon the SRC M3 base and includes enhancements from Cambridge Modula-3.

With over 15,000 files of source code, there is a large and solid existing base of software to develop upon. Fortunately, there are binaries available for the most popular platforms.

In 2002, the server at Polytechnique Montréal has been shut down; CVS repository and web services for PM3 are now continued at the server of elego Software Solutions GmbH, Berlin, Germany.

Lately, Antony Hosking has merged the newer compiler from the CM3 distribution, and contributed all the persistence work done in his University research projects." [https://www.modula3.org/implementations/]

During the Elego era, Antony Hosking converted the CM3 thread library to use native threads on POSIX platforms (the Win32 version had always used native Win32 threads). He also updated the garbage collector to use a mostly-concurrent, mostly-copying algorithm. [Hosking2006]

[Hosking2006]
Antony L. Hosking. Portable, mostly-concurrent, mostly-copying garbage collection for multi-processors. In Proceedings of the 5th international symposium on Memory management (ISMM '06), Association for Computing Machinery, New York, 2006, pages 40–51. ACM Digital Library

Source code

Github Modula-3

After Elego Software Solutions could no longer justify dedicated support for Modula-3, the cm3 and pm3 CVS repositories were moved to github.com/modula3 by Antony Hosking. The pm3 repository combines Polytechnique Montréal Modula-3 and Purdue Persistent Modula-3.

Source code

Libraries

Standard interfaces

See section 9 of [Cardelli1992].

[Birrell1991a] is a tutorial on multithreaded programming using the Thread interface. [Birrell1991b] is a corresponding formal specification.
[Birrell1987a]
A. D. Birrell, J. V. Guttag, J. J. Homing, and R. Levin. Synchronization Primitives for a Multiprocessor: A Formal Specification. Report 20, Systems Research Center, 20 August 1987. PDF

This report is an earlier version of [Birrell1991b], describing a Modula-2+ version of the Thread interface and discussing its implementation in the Taos operating system for the Firefly multiprocessor workstation.

[Birrell1989]
A. D. Birrell. An Introduction to Programming with Threads. Report 35, Systems Research Center, Digital Equipment Corporation, 6 January 1989. PDF

This report is an earlier version of [Birrell1991a], describing a Modula-2+ version of the Thread interface.

[Birrell1991a]
A. D. Birrell. An Introduction to Programming with Threads. Chapter 4 of [Nelson1991]. PDF
[Birrell1991b]
A. D. Birrell, J. V. Guttag, J. J. Homing, and R. Levin. Thread Synchronization: A Formal Specification. Chapter 5 of [Nelson1991]. PDF

Chapter 3 of [Nelson1991] adds these:

Some Useful Modula-3 Interfaces

"This manual describes a collection of interfaces defining abstractions that SRC’s programmers have found useful over a number of years of experience with Modula-3 and its precursors. We hope the interfaces will be useful as a ‘starter kit’ of abstractions, and as a model for designing and specifying abstractions in Modula-3." [Horning1993]

[Horning1993]
Jim Horning, Bill Kalsow, Paul McJones, and Greg Nelson. Some Useful Modula-3 Interfaces. Report 113, Systems Research Center, Digital Equipment Corporation, 1993. PDF

[The first time Jim saw the cover of the printed report he told me, "For the rest of your life you'll regret not putting your name first ." Now is the time to acknowledge that error.—PMcJ]

These interfaces were released in version 3.1 of DEC SRC Modula-3.

[*] Fingerprints are short tags for larger objects. They have the property that if two fingerprints are different then the corresponding objects are certainly different and there is only a small probability that two different objects have the same fingerprint The latter event is called a collision.

[Broder1993]
Andrei Broder. Some Applications of Rabin's Fingerprinting Method. Sequences II: Methods in Communications, Security, and Computer Science. Renato Capocelli and De Santis, Alfredo and Ugo Vaccaro, editors. Springer-Verlag, 1993, pages 143-152. PDF
[Rabin1981]
M. O. Rabin. Fingerprinting by Random Polynomials. Department of Computer Science, Harvard University Report TR-15-81 1981. PDF

User Interface

Trestle is an object-oriented window system based on the abstraction of a Virtual Bitmap Terminal (VBT). [Manasse1991, Manasse1992] An earlier version of Trestle was built using Modula-2+.

[Manasse1991]
Mark S. Manasse and Greg Nelson. Trestle Reference Manual. Report 68, Systems Research Center, Digital Equipment Corporation, December 1991. PDF
[Manasse1992]
Mark S. Manasse and Greg Nelson. Trestle Tutorial. Report 69, Systems Research Center, Digital Equipment Corporation, 1 May 1992. PDF
[Stansifer1994]
Ryan Stansifer. Trestle by Example. Distributed with documentation in DEC SRC Modula-3 version 3.6, 1994. HTML

Nearly 30 complete Modula-3 programs are presented to illustrate Trestle.

VBTkit is a user interface toolkit based on Trestle. It provides a library of "widgets" and the support software that makes it easy to customize these widgets and to construct more widgets. [Brown1993a] VBTkit was influenced by an earlier system written in Modula-2+. [Cardelli1987, 1988]

[Brown1993a]
Marc H. Brown and James R Meehan, editors. VBTkit Reference Manual: A Toolkit for Trestle. Systems Research Center, Digital Equipment Corporation.
  • 25 March 1993 PDF
  • 26 April 1996. PDF
[Cardelli1987]
Luca Cardelli. Building User Interfaces by Direct Manipulation. Report 22, Systems Research Center, Digital Equipment Corporation, 1987; revised 1993. PDF / Accompanying video: WMV at lucacardelli.com
[Cardelli1988b]
Luca Cardelli. Building user interfaces by direct manipulation. In Proceedings of the 1st Annual ACM SIGGRAPH Symposium on User Interface Software (UIST '88). Association for Computing Machinery, New York, 1988, pages 152–166. ACM Digital Library

FormsVBT is a system for building graphical user interfaces. It consists of a language for describing an application’s user interface, a stand-alone application for constructing the user interface, and a runtime library for communicating between an application’s code and its user interface. It extends Trestle and VBTkit. [Brown1993b]

[Avrahami1989]
Gideon Avrahami, Kenneth P. Brooks, and Marc H. Brown. A two-view approach to constructing user interfaces. In Proceedings of the 16th annual conference on Computer graphics and interactive techniques (SIGGRAPH '89). Association for Computing Machinery, New York, 1989, pages 137–146.
Paper: ACM Digital Library / Accompanying video: YouTube
[Brown1993b]
Marc H. Brown and James R. Meehan, editors. The FormsVBT Reference Manual. Systems Research Center, Digital Equipment Corporation.
  • Version 2.2, 25 March 1993. PDF
  • Version 2.4, 26 April 1996. PDF

JVideo extends Trestle, FormsVBT, and Obliq to support VideoVBTs that can display video in a window, using the J-Video hardware that was available for DEC Alpha-based workstations running Digital Unix, circa 1995. This work was done to support the Argo application, but was available for general use.

[Freeman1994]
S. M. G. Freeman and M. S. Manasse. Adding digital video to an object-oriented user interface toolkit. In: Tokoro, M., Pareschi, R. (eds) Object-Oriented Programming. ECOOP 1994. Lecture Notes in Computer Science, vol 821. Springer, Berlin, Heidelberg. Springer Nature Link

WebVBT is a VBT that displays an HTML page from the World-Wide Web. The page may contain oblets.

Oblet is an active object that is distributed over multiple machines. Oblets are written in Obliq, an object-oriented scripting language for distributed computation. The high-level support provided by Oblets makes it easy to write collaborative and distributed applications.

[Brown1996a]
Marc H. Brown and Marc A. Najork. Distributed Active Objects. Report 141A, Systems Research Center, Digital Equipment Corporation, 15 April 1996. PDF
[Brown1996c]
Marc H. Brown and Marc A. Najork. Distributed active objects. Comput. Netw. ISDN Syst., Volume 28, Numbers 7–11, May 1996, pages 1037–1052. Science Direct / www.areto.ethz.ch
[Brown1997a]
Marc H. Brown and Marc A. Najork. Distributed applets. In CHI '97 Extended Abstracts on Human Factors in Computing Systems (CHI EA '97). Association for Computing Machinery, New York, 22 March 1997, pages 204–205.
Paper: ACM Digital Library / Accompanying video: YouTube
[Brown1997c]
Marc H. Brown and Marc A. Najork. Distributed Active Objects: Using Obliq for collaborative and distributed apps. Dr. Dobb's Journal, March 1997. online at jacobfilipp.com

Animation

ANIM3D is a 3D animation library targeted at visualizing combinatorial structures; it is particularly useful for algorithm animation.

[Najork1994a]
Marc A. Najork and Marc H. Brown. A Library for Visualizing Combinatorial Structures. Report 128A, Systems Research Center, Digital Equipment Corporation, 1 September 1994. PDF / Accompanying video: YouTube
[Najork1994b]
Marc A. Najork and Marc H. Brown. A library for visualizing combinatorial structures. In Proceedings of the conference on Visualization '94 (VIS '94). IEEE Computer Society Press, Washington, pages 164–171. ACM Digital Library

Obliq-3D extends ANIM3D with the ability to program it using the Obliq programming language.

[3DAnimation1995]
3D Animation web site. With links to reports and downloadable software for DEC and SGI Crimson workstations. Systems Research Center, Digital Equipment Corporation, 1995. research.digital.com via archive.org
[Najork1994c]
Marc Najork. Obliq-3D Tutorial and Reference Manual. Report 129, Systems Research Center, Digital Equipment Corporation, 1 December 1994. PDF
[Najork1995]
Marc A. Najork and Marc H. Brown. Obliq-3D: A High-Level, Fast-Turnaround 3D Animation System. IEEE Transactions on Visualization and Computer Graphics, Volume 1, Number 2, June 1995, pages 175-193. IEEE Xplore / research.digital.com via archive.org

Distributed computing: Sun RPC

Open Network Computing (ONC) Remote Procedure Call (RPC), commonly known as Sun RPC, is a protocol originally developed by Sun Microsystems for their Network File System (NFS). David Nichols and Marvin Theimer, then at Xerox PARC, developed an implementation for Modula-3. This consists of a library (writtten in Modula-3 and C), a stub generator (written in C), and a set of examples. The README for version 1.3 notes it was adapted for version 2.06 of the DEC SRC Modula-3 compiler.

Distributed computing: network objects

"Network objects provide functionality similar to remote procedure call (RPC), but they are more general and easier to use. Our network objects are not mobile, but we make it easy to communicate objects either by copying or by reference. Our objects are passive: they have no implicitly associated thread of control, nor is there any implicit synchronization associated with calling their methods. Our objects are not persistent or replicated. They are sufficiently lightweight that it would be perfectly practical to use one per menu button. We provide strong inter-program typechecking." [Birell1994]

[Birrell1993a]
Andrew Birrell, Greg Nelson, Susan Owicki, and Edward Wobber. Network objects. In Proceedings of the Fourteenth ACM Symposium on Operating Systems Principles (SOSP '93). Association for Computing Machinery, New York, December 1993, pages 217–230. ACM Digital Library
[Birrell1993b]
Andrew Birrell, David Evers, Greg Nelson, Susan Owicki, and Edward Wobber. Distributed Garbage Collection for Network Objects. SRC Report 116, Systems Research Center, Digital Equipment Corporation. 15 December 1993. PDF
[Birrell1994a]
Andrew Birrell, Greg Nelson, Susan Owicki, and Edward Wobber. Network Objects. SRC Report 115, Systems Research Center, Digital Equipment Corporation. 28 February 1994; revised 4 December 1995. PDF
[Birrell1995b]
Andrew Birrell, Greg Nelson, Susan Owicki, and Edward Wobber. Network Objects. Software: Practice and Experience, Volume 25, Issue S4, (Supplement: Special Issue on Object‐oriented Programming and Technology), December 1995, pages 87-130. Wiley Online Library

Distributed Computing: Shared Objects

The shared object package is designed to complement network objects. A network object allows an object to be shared by multiple processes, possibly on different machines, by creating surrogate objects in all processes except the one in which the object actually exists. From the point of view of the programmer and the executing program, the surrogate object behaves exactly like the original object. However, all method calls to the surrogates are synchronously sent to the original object where they are executed, with return values or exceptions propogated back to the calling process. ... The [shared object] model is the opposite of the network object package and is intended to complement rather that replace it. Instead of the object being stored at one location and remote method calls being used to access the object, shared objects are fully replicated in all interested processes, with any updates to the object being applied to all copies. [MacIntyre, sharedobj package DEC, circa 1995]

Pickles

[Birrell1994a] observes:

"Powerful marshaling. As in any distributed programming system, argument values and results are communicated [by the Network Objects system] by marshaling them into a sequence of bytes, transmitting the bytes from one program to the other, and then unmarshaling them into values in the receiving program. The marshaling code is contained in stub modules that are generated from the object type declaration by a stub generator. Our marshaling code relies heavily on a general-purpose mechanism called pickles. Pickles use the same runtime-type data structures used by the local garbage collector to perform efficient and compact marshaling of arbitrarily complicated data types. Our stub generator produces in-line code for simple types, but calls the pickle package for complicated types. This combination strategy makes simple calls fast, handles arbitrary data structures, and guarantees small stub modules."

The implementation is described in Section 2.2 of [Birrell1994a]; it's based on an earlier Modula-2+ version described in [Birrell 1987b], which evolved out of ideas from Xerox PARC's Cedar system.

[Birrell1987b]
A. Birrell, M. Jones, and E. Wobber. A simple and efficient implementation of a small database. In Proceedings of the Eleventh ACM Symposium on Operating Systems Principles (SOSP '87). Association for Computing Machinery, New York, 1987, pages 149–154. ACM Digital Library / SRC Report 24: PDF

The original Modula-3 pickle package assumed that a pickle would be read on a computer with the same architecture (e.g., word size, byte order, and number representation) as the one on which it was written. When Blair MacIntyre was building systems for exploring distributed virtual environments, he wanted to support heterogeneous systems, and so wrote a new version of the pickle package that handled conversion between word size and byte order.

Distributed Computing: ILU (Inter-Language Unification)

"The Inter-Language Unification system (ILU) is a multi-language object interface system. The object interfaces provided by ILU hide implementation distinctions between different languages, between different address spaces, and between operating system types. ILU can be used to build multi-lingual object-oriented libraries ("class libraries") with well-specified language-independent interfaces. It can also be used to implement distributed systems. It can also be used to define and document interfaces between the modules of non-distributed programs." [ILU 1.8 tutorial, May 1995]

ILU was developed at Xerox PARC by Bill Janssen and Mike Spreitzer, with contributions by others inside and outside PARC. Modula-3 was supported in early versions but dropped in version 2.0.

[Janssen1994]
Bill Janssen and Mike Spreitzer. ILU: Inter-Language Unification via Object Modules. OOPSLA ’94 Workshop on Multi-Language Object Models. PDF
[Janssen1995]
Bill Janssen, Denis Severson, and Mike Spreitzer. ILU Reference Manual. Xerox Corporation, 1995. PDF

Critical Mass JVM

JVM was an application-embeddable Java Virtual Machine library released by Critical Mass in 1997.

"Using the JVM API, your native application (written in C, C++, or M3, for example) can load Java classes at run-time, call interpreted Java code, and implement Java native methods." [cmass.com/jvm via archive.org]

The following items are from cmass.com via archive.org:

[Conolly1995] contains some independent notes on the same idea.

[Connolly1995]
Dan Connolly. Idea: A Java-VM Implementation Based on the Modula-3 Runtime. W3C Object Technology and the Web, 21 December 1995. online at www.w3.org

Mscheme

Mscheme is a Scheme interpreter designed by Mika Nyström that is tightly coupled to Modula-3. It has a stub generator that can create a Scheme binding for any Modula-3 interface; it's even possible to implement a Modula-3 object type using Scheme to write the methods.

The original design was based on Peter Norvig's Jscheme. [Norvig1998]

[Norvig1998]
Peter Norvig. Jscheme: (Scheme (in Java (by Peter Norvig))) . Web site, 1998. https://norvig.com/jscheme.html

Applications

Quest

Quest stands for Quantifiers & subtypes — a language to unify functional and object-oriented programming through subtyping. An implementation was built in Modula-3.

[Cardelli1989]
Luca Cardelli. Typeful Programming. Report 45, Systems Research Center, Digital Equipment Corporation, 1989. PDF
[Cardelli1990]
Luca Cardelli and Giuseppe Longo. A semantic basis for Quest. Report 55, Systems Research Center, Digital Equipment Corporation, 1990. PDF
[Cardelli1991a]
Luca Cardelli. Typeful Programming. Formal Description of Programming Concepts, E.J.Neuhold, M.Paul Eds., Springer-Verlag, 1991.
[Cardelli1991b]
Luca Cardelli and Giuseppe Longo. A semantic basis for Quest. Journal of Functional Programming, Volume 1, Part 4, pages 417-458, Cambridge University Press, October 1991.
[Cardelli1991c]
Luca Cardelli. The Quest Language and System. Unpublished manual, Systems Research Center, Digital Equipment Corporation, 1991. PDF at lucacardelli.name / PDF

Fisheye graph viewer

This program allows viewing and browsing graphs using a software analog of a fisheye lens, which is a very wide angle lens that magnifies nearby objects while shrinking distant objects. It is a tool for seeing both "local detail" and "global context" simultaneously. While such a view can be implemented using solely geometric transformations, we use a more general transformation that allows hierarchical or structured information about the graph to affect the view, extending previous research in fisheye views.

- - -

"The prototype is implemented using Modula-3 and Trestle, a portable X-toolkit. This project was the first Trestle application to be written, [*] beyond the handful of small examples in the distribution package. A number of features that we needed for red time animation (e.g., fast double buffering), and aesthetic drawings (e.g., curves and lines of arbitrary thickness) were not functional when the initial prototype was developed during the summer of 1991. We are currently upgrading to the latest release of Trestle.

[*] A Modula-2+ version of Trestle that doesn’t use the X-toolkit has been operational for a number of years at DEC SRC." [Sarkar1992b]

[Sarkar1992a]
Manojit Sarkar and Marc H. Brown. Graphical fisheye views of graphs. Report 84A, Systems Research Center, Digital Equipment Corporation, March 1992. PDF / Accompanying video: YouTube
[Sarkar1992b]
Manojit Sarkar and Marc H. Brown. Graphical fisheye views of graphs. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI '92). Association for Computing Machinery, New York, May 1992, pages 83–91. ACM Digital Library

Zeus algorithm animation and multi-view editing

"Zeus is a kernel for both multi-view editors and algorithm animation systems. To a first approximation, it follows the spirit of BALSA, [Brown1984] but implemented in a multi-threaded environment using an object-oriented, strongly-typed language."

[Brown1984]
Marc H. Brown and Robert Sedgewick. A system for algorithm animation. In Proceedings of the 11th annual conference on Computer graphics and interactive techniques (SIGGRAPH '84). Association for Computing Machinery, New York, 1984, pages 177–186. ACM Digital Library
[Brown1991]
Marc H. Brown and John Hershberger. Color and Sound in Algorithm Animation. SRC Report 76a, Systems Research Center, Digital Equipment Corporation, 30 August 1991. PDF
[Brown1992a]
Marc H. Brown. Zeus: A System for Algorithm Animation and Multi-View Editing. SRC Report 75, Systems Research Center, Digital Equipment Corporation, 14 February 1992. PDF
[Brown1992b]
Marc H. Brown. An introduction to Zeus: audiovisualization of some elementary sequential and parallel sorting algorithms. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI '92). Association for Computing Machinery, New York, June 1992, pages 663–664. Paper: ACM Digital Library / Accompanying video: YouTube
[Brown1992c]
Marc H. Brown and John Hershberger. Color and Sound in Algorithm Animation. Computer, Volume 25, Number 12, December 1992, pages 52–63. IEEE Xplore
[Brown1993c]
Marc H. Brown. The 1992 SRC Algorithm Animation Festival. 27 March 1993. SRC Report 98, Systems Research Center, Digital Equipment Corporation. PDF
[Brown1994]
Marc H. Brown. The 1993 SRC Algorithm Animation Festival. 29 July 1994. SRC Report 126, Systems Research Center, Digital Equipment Corporation. PDF
[Najork1993]
Marc Najork. Building Algorithm Animations with Zeus (Draft). Unpublished paper (originally from gatekeeper.dec.com/pub/dec/SRC/Modula-3/contrib), Systems Research Center, Digital Equipment Corporation, 26 February 1993. PDF

Source code

Hector corpus lexicography tools

Hector was a set of tools and a feasibility study on high-tech corpus lexicography. Oxford University Press provided the lexicographers and a corpus of 20 million words of running English text; Digital Equipment Corporation Systems Research Center provided the high tech tools to enable the lexicographers to do all of their work on-line.

[Glassman1992]
Lucille Glassman, Dennis Grinberg, Cynthia Hibbard, James Meehan, Loretta Guarino Reid, and Mary-Claire van Leunen. Hector: Connecting Words with Definitions. SRC Report 92A, Systems Research Center, Digital Equipment Corporation, 20 October 1992. PDF
[GuarinoReid1992]
Loretta Guarino Reid and James R. Meehan. Inside Hector: The Systems View. Report 123, Systems Research Center, Digital Equipment Corporation, 20 October 1992. PDF

Packagetool and Siphon

The Siphon facilitates joint software development between groups working at distant sites connected by low bandwidth communication lines. It gives users the image of a single repository of individually manageable units, typically software or documentation components. Users can lock and modify each unit, the result being propagated automatically to all sites. The repository is replicated at each site, and possibly on multiple file servers for greater availability and reliability. It was originally built using Modula-2+ and conventional RPC and later rewritten in Modula-3 using network objects. [Birrell1993a]

[Prusker1990a]
Francis J. Prusker and Edward P. Wobber. The Siphon: Managing Distant Replicated Repositories. In Proceedings of the IEEE Workshop on the Management of Replicated Data, November 1990, pages 44–47.
[Prusker1990b]
Francis J. Prusker and Edward P. Wobber. The Siphon: Managing Distant Replicated Repositories. Report 7, Paris Research Laboratory, Digital Equipment Corporation, May 1991. PDF

Source code

Postcard

"Postcard is a user interface for reading and composing personal electronic mail, and for reading newsgroups and bulletin boards. It combines in an X-windows interface most of the functions of mail handling programs such as mh or xmh, and news-reading programs such as rn or xrn.

In addition, Postcard provides an integrated user interface for browsing the accumulated spool of newsgroups and bulletin boards, with a query language that includes full text indexing. This browsing is done through the ni(1) news indexing program." [Postcard man page, 1994]

Source code

Fsub

Fsub is a Modula-3 [Nelson1991] implementation of the F<: calculus [Cardelli1991d],[2],[4]. This is the "smallest possible" calculus integrating subtyping with polymorphism. The type structure consists of type variables, "Top", function spaces, bounded quantification, and recursive types. The implementation supports type inference ("argument synthesis"), a simple modularization mechanism, and the introduction of arbitrary notation on-the-fly." [Readme.txt, Fsub 1.5.0]

[Cardelli1991d]
L. Cardelli, J.C. Mitchell, S. Martini, and A. Scedrov. An extension of system F with subtyping. Proc. Theoretical Aspects of Computer Software. Sendai, Japan. Lecture Notes in Computer Science 526. Springer-Verlag.
[Cardelli1991e]
L. Cardelli, J.C. Mitchell, S. Martini, and A. Scedrov. An extension of system F with subtyping. Report 80, Systems Research Center, Digital Equipment Corporation. PDF
[Curien1991]
P.-L. Curien and G. Ghelli. Subtyping + extensionality: confluence of βη-reductions in F≤. Proc. Theoretical Aspects of Computer Software. Sendai, Japan. Lecture Notes in Computer Science 526. Springer-Verlag.
[Cardelli1993a]
Luca Cardelli. An implementation of F<:. Report 97, Systems Research Center, Digital Equipment Corporation, 23 February 1993. PDF

Source code

Obliq

Obliq is a lexically-scoped untyped interpreted language that supports distributed object-oriented computation. An Obliq computation may involve multiple threads of control within an address space, multiple address spaces on a machine, heterogeneous machines over a local network, and multiple networks over the Internet. Obliq objects have state and are local to a site. Obliq computations can roam over the network, while maintaining network connections. Obliq uses Network Objects.

[Cardelli1993b]
Luca Cardelli. A lightweight language for network objects. Unpublished paper (originally from gatekeeper.dec.com/pub/dec/SRC/Modula-3/contrib), Systems Research Center, Digital Equipment Corporation, 5 November 1993. PDF
[Cardelli1994]
Luca Cardelli. Obliq, a language with distributed scope. Report 122, Systems Research Center, Digital Equipment Corporation, 3 June 1994. PDF
[Cardelli1995]
Luca Cardelli. A language with distributed scope. In Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '95). Association for Computing Machinery, New York, 1995, pages 286–297. ACM Digital Library

Winner of the Most Influential POPL Paper Award in 2005 (for 1995).

Source code

Visual Obliq

"Visual Obliq is a programming environment for multi-user applications, expressed in the Obliq language.

In the Visual Obliq model, a distributed session is started by loading an application into an Obliq interpreter. This creates a session with a certain unique public name. Users running interpreters at other sites can connect to the session via the session-name. The act of joining a session causes the appropriate client code and user interface specification to migrate to the client's address-space and run there.

All the above activities can be supported and coordinated within the World-Wide Web framework. A Visual Obliq program may be regarded as a document with an appropriate MIME type. The text of an application is disseminated as a MIME-encapsulated document by a Visual Obliq gateway (vocgi)." [https://github.com/modula3/cm3/blob/master/m3-obliq/visualobliq/DESC]

[Bharat1994]
Krishna Bharat and Marc H. Brown. Building distributed, multi-user applications by direct manipulation. In Proceedings of the 7th annual ACM symposium on User interface software and technology (UIST '94). Association for Computing Machinery, New York, November 1994, pages 71–80. ACM Digital Library
[Bharat1995a]
Krishna Bharat and Marc H. Brown. Building a distributed application using visual Obliq. In Conference Companion on Human Factors in Computing Systems (CHI '95). Association for Computing Machinery, New York, May 1995, pages 415–416. ACM Digital Library / Accompanying video: YouTube
[Bharat1995b]
K. Bharat and L. Cardelli. Distributed applications in a hypermedia setting. In Proceedings of International Workshop on Hypermedia Design, Volume 95, 1 June 1995. PDF at lucacardelli.name
[Bharat1995c]
Krishna Bharat and Marc H. Brown. Visual Obliq: A System for Building Distributed, Multi-User Applications by Direct Manipulation. Report 130A, Systems Research Center, Digital Equipment Corporation, 31 October 1995. PDF
[Bharat1995d]
Krishna A. Bharat and Luca Cardelli. Migratory applications. In Proceedings of the 8th Annual ACM Symposium on User Interface and Software Technology (UIST '95). Association for Computing Machinery, New York, December 1995, pages 132–142. ACM Digital Library
[Bharat1996]
Krishna Bharat and Luca Cardelli. Migratory Applications. Report 138, Systems Research Center, Digital Equipment Corporation, 15 February 1996. PDF

Source code

Argo distributed collaboration

Argo allowed medium-sized groups of users to collaborate remotely from their desktops in a way that approaches as closely as possible the effectiveness of face-to-face meetings. In support of this goal, Argo combined high quality multi-party digital video and full-duplex audio with telepointers, shared applications, and whiteboards in a uniform and familiar environment.

The JVideo library was written for Argo.

[Berc1995]
Lance Berc, Hania Gajewska, and Mark Manasse. 1995. Pssst: side conversations in the Argo telecollaboration system. In Proceedings of the 8th Annual ACM Symposium on User interface and Software Technology (UIST '95). Association for Computing Machinery, New York, 1995, pages 155–156. ACM Digital Library
[Gajewska1994a]
H. Gajewska, J. Kistler, M. Manasse, and D. Redell. Argo: a system for distributed collaboration. In Proceedings of the Second ACM International Conference on Multimedia (MULTIMEDIA '94). Association for Computing Machinery, New York, 1994, pages 433–440. ACM Digital Library
[Gajewska1994b]
Hania Gajewska, Jay Kistler, Mark S. Manasse, and David D. Redell. An Argo telecollaboration session. In Proceedings of the Second ACM International Conference on Multimedia (MULTIMEDIA '94). Association for Computing Machinery, New York, 1993, page 486. ACM Digital Library [video]
[Gajewska1995]
Hania Gajewska, Mark Manasse, and Dave Redell. Argohalls: adding support for group awareness to the Argo telecollaboration system. In Proceedings of the 8th annual ACM symposium on User interface and software technology (UIST '95). Association for Computing Machinery, New York, 1995, pages 157–158. ACM Digital Library

Juno-2

Juno-2 is a constraint-based double-view drawing editor designed by Greg Nelson and Allan Heydon. It followed Nelson's earlier system, Juno. [Nelson1985]

[Heydon1995]
Allan Heydon and Greg Nelson. Constraint-Based Animations. Unpublished paper, Systems Research Center, Digital Equipment Corporation, 1995. PDF
[Nelson1985]
Greg Nelson. Juno, a constraint-based graphics system. In Proceedings of the 12th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH '85). Association for Computing Machinery, New York, 1985, pages 235–243.
Paper: ACM Digital Library / Accompanying video: YouTube
[Nelson1994]
Greg Nelson and Allan Heydon. The Juno-2 constraint-based drawing editor. Report 131A, Systems Research Center, Digital Equipment Corporation, December 1994, PDF
[Nelson1997]
Greg Nelson and Allan Heydon. Juno-2 Language Definition. Technical Note 1997–009, Systems Research Center, Digital Equipment Corporation, 30 June 1997, PDF

Source code

Virtual Paper

The goal of Virtual Paper was "making on-line reading more attractive than paper": the Lectern document viewer was based on a grayscale image-based document format, with OCR on DEC platforms and text-from-PostScript extraction on all platforms.

[Birrell1994b]
Andrew Birrell (narrating) and Paul McJones. Virtual Paper. Video, Systems Research Center, Digital Equipment Corporation. 13 September 1994. YouTube / Computer History Museum Catalog Number 102795147

[The seed for this archival project was an email from Hansen Hsu asking if I was the Paul McJones referenced in the video.]

[Birrell1995a]
Andrew Birrell and Paul McJones. Virtual Paper. Slides for talk, January 1995. PDF at birrell.org / PDF

Source code

DeckScape

DeckScape is an experimental World-Wide Web browser based on a deck metaphor. A deck consists of a collection of Web pages, and multiple decks can exist on the screen at once. As the user traverses links, new pages appear on top of the current deck. Retrievals are done using a background thread, so all visible pages in any deck are active at all times. Users can move and copy pages between decks, and decks can be used as a general-purpose way to organize material, such as hotlists, query results, and breadth-first expansions.

Also, WebScape is an experimental World-Wide Web browser whose primary purpose is to test WebVBT.

[Brown1995a]
Marc H. Brown and Robert A. Shillner. DeckScape: An Experimental Web Browser. Report 135A, Systems Research Center, Digital Equipment Corporation, 1 March 1995. PDF
[Brown1995b]
Marc H. Brown and Robert A. Shillner. DeckScape: An Experimental Web Browser. Computer Networks and ISDN Systems, Volume 27, April 1995, pages 1097–1104. ScienceDirect
[Brown1995c]
Marc H. Brown and Robert A. Shillner. A new paradigm for browsing the web. In Conference Companion on Human Factors in Computing Systems (CHI '95). Association for Computing Machinery, New York, May 1995, pages 320–321. ACM Digital Library
[Brown1996d]
Marc H. Brown and William E. Weihl. Zippers: A Focus+Context Display of Web Pages. Report 140, Systems Research Center, Digital Equipment Corporation, 22 May 1996. PDF
[Brown1996b]
Marc H. Brown and Robert A. Shillner. The DeckScape web browser. In Conference Companion on Human Factors in Computing Systems (CHI '96). Association for Computing Machinery, New York, April 1996, pages 418–419.
Paper: ACM Digital Library /Accompanying video: YouTube *** Is this the same video as Report 135B?

Source code

WebCard

WebCard allows the display of web pages within a folder-based email/newsreader. It was built using DEC SRC's established Postcard email/newsreader and the DeckScape web browser.

[Brown1995d]
Marc H. Brown. Browsing the Web with a mail/news reader. In Proceedings of the 8th Annual ACM symposium on User Interface and Software Technology (UIST '95). Association for Computing Machinery, New York, December 1995, pages 197–198. ACM Digital Library
[Brown1996e]
Marc H. Brown. WebCard: Integrated and Uniform Access to Mail, News, and the Web. Report 139A, Systems Research Center, Digital Equipment Corporation, 15 July 1996. PDF
[Brown1997b]
Marc H. Brown. WebCard = email + news + WWW. In CHI '97 Extended Abstracts on Human Factors in Computing Systems (CHI EA '97). Association for Computing Machinery, New York, 22 March 1997, pages 206–207. ACM Digital Library / Accompanying video: YouTube

Source code

Collaborative Active Textbooks (CAT)

CAT is a web-based algorithm animation system. CAT augments the expressive power of Web pages for publishing passive multimedia infor- mation with a full-fledged interactive algorithm animation system. It improves on previous Web-based algorithm animations by providing a framework that makes it easy to construct new animations, including those that involve multiple views. Because views of the same running algorithm may reside on different machines, CAT is particularly well-suited for electronic classrooms.

[Brown1996f]
Marc H. Brown and Marc A. Najork. Collaborative Active Textbooks: A Web-Based Algorithm Animation System for an Electronic Classroom. Report 142, Systems Research Center, Digital Equipment Corporation, 31 May 1996. PDF
[Brown1996g]
Marc H. Brown and Marc A. Najork. Collaborative Active Textbooks: A Web-Based Algorithm Animation System for an Electronic Classroom. In Proceedings of the 1996 IEEE Symposium on Visual Languages (VL '96). IEEE Computer Society, September 1996, page 266. IEEE Xplore / PDF at marc.najork.org

Extended Static Checking (ESC)

ESC is a mechanical checker for software that catches many common programming errors, in particular array index bounds errors, nil dereference errors, and synchronization errors in multi-threaded programs. The checking is performed at compile-time. The checker uses an automatic theorem-prover to reason about the semantics of conditional statements, loops, procedure and method calls, and exceptions. The checker has been implemented for Modula-3. It has been applied to thousands of lines of code, including mature systems code as well as fresh untested code, and it has found a number of errors.

[Detlefs1998]
David L. Detlefs, K. Rustan M. Leino, Greg Nelson, and James B. Saxe. Extended Static Checking. Report 159, Systems Research Center, Digital Equipment Corporation, 18 December 1998. PDF
[Leino1998]
K. Rustan M. Leino Greg Nelson. An Extended Static Checker for Modula-3. Compiler Construction, ETAPS'98 Lisbon, Portugal, 3 April 1998. PDF

Source code

Millicent prototype

Millicent is a lightweight and secure protocol for electronic commerce over the Internet. It is designed to support purchases costing less than a cent. It is based on decentralized validation of electronic cash at the vendor's server without any additional communication, expensive encryption, or off-line processing.

[Glassman1995]
Steve Glassman, Mark Manasse, Martín Abadi, Paul Gauthier, and Patrick Sobalvarro. The Millicent Protocol for Inexpensive Electronic Commerce. In Proceedings of the Fourth International Conference on World Wide Web (WWW4). Association for Computing Machinery, New York, December 1995, pages 603–618. ACM Digital Library / online at www.w3.org

Source code

Norman Ramsey / ldb

ldb is a retargetable debugger for ANSI C. The original version supported MIPS, SPARC, VAX, and MC68000 targets. ldb has been shown to be very easy to retarget from machine to machine.

[Ramsey1992]
Norman Ramsey and David R. Hanson. A retargetable debugger. In Proceedings of the ACM SIGPLAN 1992 Conference on Programming Language Design and Implementation (PLDI '92). Association for Computing Machinery, New York, 1992, pages 22–31. ACM Digital Library
[Ramsey1993]
Norman Ramsey. A Retargettable Debugger. Ph.D. thesis, Department of Computer Science, Princeton University, January 1993. Compressed PostScript at tufts.edu / PDF
[Ramsey1996]
Norman Ramsey. ldb -- A Retargetable Debugger. Web site. Last updated 1996. https://www.cs.tufts.edu/~nr/ldb/

Source code

SPIN Operating System

"SPIN is an operating system that blurs the distinction between kernels and applications. Applications traditionally live in user-level address spaces, separated from kernel resources and services by an expensive protection boundary. With SPIN, applications can specialize the kernel by dynamically linking new code into the running system. Kernel extensions can add new kernel services, replace default policies, or simply migrate application functionality into the kernel address space. Sensitive kernel interfaces are secured via a restricted linker and the type-safe properties of the Modula-3 programming language. The result is a flexible operating system that helps applications run fast but doesn't crash." [Brian Bershad, Craig Chambers, Susan Eggers—U. of Washington]

SPIN Modula-3 was based on DEC SRC Modula-3, with a set of additions and changes.

[Auslander1996]
Joel Auslander, Matthai Philipose, Craig Chambers, Susan J. Eggers, and Brian N. Bershad. Fast, effective dynamic compilation. In Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation (PLDI '96). Association for Computing Machinery, New York, 1996, pages 149–159. ACM Digital Library
[Bershad1995]
B. N. Bershad, S. Savage, P. Pardyak, E. G. Sirer, M. E. Fiuczynski, D. Becker, C. Chambers, and S. Eggers. Extensibility safety and performance in the SPIN operating system. In Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles (SOSP '95). Association for Computing Machinery, New York, 1995, pages 267–283. ACM Digital Library
[Fiuczynski1996]
Marc Fiuczynski, Brian Bershad. An Extensible Protocol Architecture for Application-Specific Networking. In Proceedings of the 1996 Winter USENIX Conference, San Diego, CA., January 1996, pages 55-64. PostScript at usenix.org / PDF
[Pardyak1996]
Przemyslaw Pardyak and Brian Bershad. Dynamic Binding for an Extensible System. In Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation (OSDI), Seattle, October 1996, pages 201-212. PostScript at usenix.org / PDF
[SpinOS1997]
The SPIN Operating System. Web site, circa 1997. https://www-spin.cs.washington.edu/

Source code

Blair MacIntyre / COTERIEs

"Blair gave a demonstration of his 'augmented reality' system. Wearing a head-mounted display that reports three degrees of freedom (pitch, roll, and yaw), he showed a simple application in which the user is situated at the center of a compass, and various cities in the application's database appear as pyramids at the correct compass points (this is possible because the yaw value reported by the head-mounted display is an actual compass measurement).

The system is implemented in Modula-3 and Obliq, giving the programmer a toolkit that provides language-level support for building distributed virtual environments. The programmer can implement their applications in Obliq, Modula-3 or any combination thereof since all toolkit objects (such as trackers and graphical objects) are accessible from both languages. Data distribution is almost entirely transparent, encouraging the programmer to make heavy use of threads communicating via shared objects.

His system is based on the distributed data-object paradigm for distributed shared memory. He implemented a SharedObj package, similar in flavour to Modula-3 Network Objects, which allows any data object to be declared as a shared object that is replicated fully in any process that is interested in it. These shared objects support asynchronous data propagation with atomic serializable updates, and asynchronous notification of updates. To accomplish this, he relied on existing Modula-3 packages, especially Network Objects and Obliq-3D." [1995 Modula-3 Users Group]

- - -

COTERIE is a testbed for fast prototyping of distributed virtual environment systems (MacIntyre and Feiner 1996). It is designed to support the creation of virtual environments with multiple simultaneous users interacting with many heterogeneous displays and input devices. The testbed is designed around a multi-threaded, modular, object-oriented programming model and supports fully transparent distributed communications via both client-server and replicated distributed objects. By building applications as groups of cooperating threads, a single programming model can be used for both single and multiprocess programs. Both interpreted (Obliq) and compiled (Modula-3) languages are simultaneously available to the application programmer. [COTERIE home page at graphics.cs.columbia.edu, 199x]

- - -

"I even still have all the old code from my grad school days 😂." [MacIntyre, personal communication, 22 September 2025]

[MacIntyre1996]
Blair MacIntyre and Steven Feiner. Language-level support for exploratory programming of distributed virtual environments. In Proceedings of the 9th Annual ACM Symposium on User Interface Software and Technology (UIST '96). Association for Computing Machinery, New York, NY, USA, 83–94. ACM Digital Library
[MacIntyre1997]
Blair MacIntyre and Steven Feiner. COTERIE: The Columbia Object-oriented Testbed for Exploratory Research in Interactive Environments. Web site, circa 1997. https://graphics.cs.columbia.edu/projects/coterie/
[MacIntyre1999]
Blair MacIntyre. Exploratory Programming of Distributed Augmented Environments. PhD Thesis, Columbia University, 1999. PDF

John Polstra / CVSup

CVSup is a general-purpose tool for mirroring collections of files over the internet. It also includes special features and optimizations specifically tailored to CVS repositories. It was originally developed by John D. Polstra for the needs of the FreeBSD Project.

Source code

Development Support

Resources

Web sites

These were important resources in the 1990s:

These web sites were active during the Elego years:

This web site is the current center of Modula-3 activity:

These tutorials and reference materials are a useful starting point:

Books

See also [Nelson1991], [Böszörményi1996], and [Dagenais1997].

[Harbison1992b]
Samuel P. Harbison, Modula-3, Prentice Hall, ISBN 0-13-596396-6, February 1992.

Errata. 22 March 1993, 6 pages. PDF

[Sedgewick1993]
Robert Sedgewick Algorithms in Modula-3. Addison-Wesley, 1993.

Articles

[Harbison1990]
Sam Harbison. Modula-3: A practical and predictable OOP language for team projects. Byte, Volume 15, Number 12, November 1990, pages 385-392. PDF at vintageapple.org
[Harbison1992a]
Sam Harbison. Safe Programming with Modula-3. Dr. Dobb’s Journal, October 1992. HTML at jacobfilipp.com
[Freeman1995]
Steve Freeman. Partial Revelation and Modula-3: Importing only necessary class features. Dr. Dobbs Journal, October 1995. online at jacobfilipp.com
[Wyant1994]
Geoff Wyant. Introducing Modula-3: The right tool for building complex Linux applications. Linux Journal, Volume 1994, Issue 8, December 1994. ACM Digital Library

News/discussion

[comp.lang.modula3]
comp.lang.modula3 Usenet newsgroup archive. December 1989 – May 1995. HTML
[m3devel@elegosoft.com]
m3devel@elegosoft.com email list archive. November 2006 – present. https://m3lists.elegosoft.com/pipermail/m3devel/

Threads Journal

Threads: The Modula-3 Systems Journal. Issues 1-3, Fall 1995-Fall 1997. https://www.modula3.org/threads/

Threads Issue 1 Threads Issue 2 Threads Issue 3

Modula-3 Users Group

AltStyle によって変換されたページ (->オリジナル) /