Release history

Here's a brief description of the releases:

Version d5.7.0 CM3-IDE has been added to the release. CM3-IDE provides the functionality of the former Reactor(tm) product by Critical Mass.

Version 5.1 This is the first open source release of CM3. Platforms FreeBSD2, FreeBSD3, FreeBSD4, and LINUXLIBC6 have been added, runtime support for SOLgnu has been updated. Reactor(tm) is not (yet) included. Support for 64 bit arithmetic has been added, implicit exceptions, mapping of runtime errors to exceptions, dynamically loadable CM3 modules, and Unicode support (16 bit characters, type WIDECHAR). The TextF interface is gone, since TEXTs are now objects which can hold combinations of 8 and 16 bit characters.

Version 4.1 New ports of cm3 support shared library on eight platforms. Support for incremental garbage collection is available for NT386, ALPHA_OSF, and LINUXELF. shared libraries on. Reactor(tm) environment is extended to support large installations.

Version 4.0 revamps the basic structure of the builder to allow dynamic changes in the system. All compiling and building is now done through cm3, an integrated builder/compiler which can be extended via a quake configuration file, cm3.cfg. Need for m3makefiles for simple programs is removed. Configurations can change on the fly. It also adds comprehensive documentation and Reactor(tm) user interface to create an integrated development environment.

Version 3.5.3 fixes bugs, includes a working version of the RS6000/AIX bootstrap and has a version of the HP/PA bootstrap that works with the current gcc 2.6.3 back-end. Also included in this release is support for PEX-based 3-D graphics and animation. The debugger, m3gdb, can handle floating-point literals and many more built-in functions. A mostly-working version of Trestle on Windows is included.

Version 3.5.2 fixes minor bugs.

Version 3.5.1 fixes minor installation glitches and includes a Modula-3 version of m3zume.

Version 3.5 fixes several minor installation glitches and upgrades the gcc-based back-end from version 2.5.7 to 2.6.3. This version also includes untested support for Linux with ELF object files and shared libraries, support for ``stable objects'', and Sil, an example of native Windows programming in Modula-3.

Version 3.4 includes new ports to PCs running Windows/NT or FreeBSD (1.1.5 or 2.0) and SGI/MIPS boxes running IRIX5.2. The Windows/NT port does not include Trestle. The driver program, m3, and the first pass of the compiler were merged into a single process. Hence, the driver maintains a cache of parsed and type-checked interfaces for the duration of a build.

Version 3.3 fixes several bugs in the 3.2 installation scripts. This release includes Visual Obliq, a system for rapidly prototyping distributed applications.

Version 3.2 is mostly bug fixes for 3.1. The new implementations of Fmt and Lex are included. A mail and news reading program, Postcard, is included. A new license agreement/copyright notice is attached to this version. The new license allows commercial use of SRC Modula-3 with very few restrictions.

Version 3.1 is the first version of the native-code world that should build and install on some platforms. The following platforms should work out of the box: DS3100, ALPHA_OSF, and LINUX. These platforms have had an initial round of bug fixes, but may still have problems: SPARC, HPPA, and IBMR2. All other platforms are untested.

A more detailed list of changes includes:

Version 3.0 is the first public release of the native-code compiler, new libraries, a new build tool m3build, and full symbolic debugger m3gdb. This release does not build or install properly. It's primarily intended for brave pioneers and curious browsers.

Version 2.11 is the first public release of the FormsVBT window toolkit and the Zeus animation system.

Version 2.10 includes a port to the HP/PA and SUN 386i architectures and many improvements to the IBM RS/6000 port.

Version 2.0 implements the twelve language changes (i.e. generics, IEEE floating point interfaces, ...) that are included in SPwM3. Version stamp checking was moved into the m3 driver, which also supports -make mode and generates enough type declarations to make debugging tolerable. The compiler internals were rearranged and many bugs were removed. Better code is produced.

Version 1.6 fixes many bugs that have been reported. It also introduces the SUN3, UMAX and ARM architectures. Some Unix interfaces have been added or modified (Usocket, Udir, Uexec, Uerror). The names in the Rd and Wr interfaces are now more coherent. The new Pkl interface allow input/output of binary data structures. The runtime has been rewritten to be mostly in Modula-3; this allows for clean interfaces to the runtime; some limitations have been removed (profiling; scheduling). The driver has been rewritten, so as to support shared libraries (on IBMR2, by default); the syntax of some options has changed.

Version 1.5 supports five new architectures (AP300, AIX386, IBMR2, IBMRT and HP300). The driver has been modified to improve portability of user systems. The SRC Modula-3 libraries have been reorganized, and of course known bugs have been fixed. New demonstration programs and games are included.

Version 1.4 is the second public release of SRC Modula-3. It uses the new features of version 1.3 and was alpha-tested by several SRC clients. This version added <*UNUSED*> and <*OBSOLETE*> pragmas, simplified coverage profiling by having the compiler directly generate the counters, reduced the number of #line directives in the generated C, added ``map'' procedures so that the garbage collector can efficiently locate global references, packed enumerations into smaller C types, and fixed several bugs.

Version 1.3 is for internal use only. This version serves to snapshot the massive editing that has taken place since 1.2. This version fixed the variable renaming problems, made TEXT a REF ARRAY OF CHAR, converted the text implementation to Modula-3, passed nested procedures as closures, used C initialization where possible for constants and variables, added warning messages, and fixed many bugs.

Version 1.2

Thanks to the new technology introduced in 1.1, porting the compiler to other machines is much easier. We have ported it to DECstation 3100 running Ultrix 3.1. A few bugs have been fixed. The driver processes the options -D and -B in a slightly different way.

The installation procedure is new, and we no longer furnish executables as the intermediate C files are present on the release. Because the intermediate C files vary according to the target machine, there are separate tar files for each of the supported machines. However, each distribution contains all of the sources; only the intermediate C files differ.

Version 1.1

This version is for internal use only. The main difference with Version 1.0 is the use of rcs and the use of imake rather than the standard make.

Version 1.0

This version is the first release of the SRC Modula-3 system. It contains a Modula-3 compiler and runtime, a core library, a coverage analyzer, a dependency checker, a Modula-3 pretty printer, and a small test suite of Modula-3 programs. The compiler generates C as an intermediate code.

It is known to run on VAX Ultrix 3.1. We have not tested the software in any other configurations. The software may function correctly on other versions of Ultrix, and if recompiled, may even work on other machines.