Loading comparison...
Loading comparison...
A systems programming language descended from Modula-2. Influenced Java and C# with its module and type system.
Modula-3 is a systems programming language designed in the late 1980s at Digital Equipment Corporation (DEC) and Olivetti by Luca Cardelli, Jim Donahue, Mick Jordan, Bill Kalsow, and Greg Nelson. It evolved from Niklaus Wirth's Modula-2, adding garbage collection, exception handling, objects, generics, and threads while maintaining the original's emphasis on modularity and type safety. Modula-3 had a profound influence on subsequent programming language design — Java borrowed its interface concept, and C# adopted several of its type system features. The language separates interface definitions from implementations in distinct file types, enforcing clean module boundaries at the language level.
Modula-3 was used at DEC's Systems Research Center for building large-scale systems including the Trestle window system and the Network Objects distributed computing framework. Its unsafe module feature provides controlled access to low-level operations when necessary, while keeping the rest of the program provably safe. The Critical Mass CM3 compiler and the Polytechnique Montreal PM3 compiler were the primary implementations. Though Modula-3 never achieved mainstream commercial adoption, its contributions to programming language theory remain significant.
Academic institutions used it extensively for teaching systems programming concepts. The language demonstrates that systems programming can coexist with garbage collection and strong typing, a principle now validated by languages like Rust and Go.
Modula-3 diffs require attention to the separation between interface (.i3) and implementation (.m3) files, since changes must remain consistent across both. Modifications to generic module instantiations, opaque type revelations, and unsafe code blocks are particularly critical to review.
Teams maintaining legacy Modula-3 systems should compare files carefully when updating thread-safe data structures or modifying exception handling hierarchies.
UtraDiff compares Modula-3 files with syntax highlighting for module interfaces, PROCEDURE definitions, REVEAL declarations, and type constructors. Side-by-side view reveals changes to module exports and opaque type implementations, making interface contract modifications immediately visible.
Inline view consolidates changes across IMPORT lists and exception handling blocks. Alt+arrow navigation steps through changed procedure signatures, and the whitespace-ignore toggle filters out indentation-only adjustments.
Supported extensions: .m3 .i3 .mg .ig