Release Notes for Critical Mass Modula-3 5.2.0 ---------------------------------------------- There are basically two main changes in 5.2.0 compared with the previous releases: (1) integration of a new gcc back-end based on gcc 3.2.1 (2) support for the PPC_DARWIN platform (Darwin on Power PC architecture) (2) depends on (1) as cross-compilation to PPC_DARWIN proved impossible with the older code generation back-ends. There have also been some minor extensions to the the builder (cm3) and several minor corrections have been made. Code Generator based on gcc 3.2.1 (cm3cg) ----------------------------------------- The M3 support to make gcc 3.2.1 into a code generator for Modula-3 has been completely redone from scratch by John Polstra for PM3 and the EZM3 distributions. Olaf Wagner is responsible for the CM3 integration. Tests on the platforms FreeBSD4, LINUXLIBC6, and SOLgnu have shown that the new code generator seems to work well, however there is one major drawback: Due to structural improvements in gcc code it is no longer possible to use the stack walkers implemented on several M3 platforms for fast exception support, as the new gcc disallows the use of labels outside of functions. There is no easy fix or work-around for this; the best solution seems to be to make the m3 front-end use the built-in exception support of gcc. However, there is currently no code for this, nor has anybody committed to this task, so it may take some months (or even longer) for this to realize. To sum up, this means that (1) the use of the new code generator is not recommended for all platforms featuring stack walkers (e.g. ALPHA_OSF, SOLgnu, SOLsun) (2) 5.2.0 will be no complete release covering all platforms and is chiefly done to get the PPC_DARWIN support out. New Target Platform PPC_DARWIN (Darwin, MacOS X on PowerPC Hardware) -------------------------------------------------------------------- CM3 5.2.0 is the first Modula-3 release in history that will run on some of Apple Computer's operating systems, i.e. those that are based on Darwin. Cross-compilation was done from a FreeBSD4 system using the new gcc back-end; the target host was a Darwin 6.3 machine identifying itself as Darwin lamancha.opendarwin.org 6.3 Darwin Kernel Version 6.3: \ Sat Dec 14 03:11:25 PST 2002; root:xnu/xnu-344.23.obj~4/RELEASE_PPC \ Power Macintosh powerpc All the runtime and Unix implementation modules were initially copied from the FreeBSD3 platform; in hindsight, this was only a mediocre choice, as FreeBSD3 and PPC_DARWIN differ in endianness. The following list gives detailed information about the status of PPC_DARWIN support: o Compiler front end (cm3) and code generator (cm3cg) work without warnings or failures for all core and standard packages (do-cm3-core.sh (core system compilation), do-cm3-std.sh (standard packages installation)). o The runtime is still very basic, it only supports the necessary minimum, i.e. - multi threading based on setjmp/longjmp and signals - simple copy-and-sweep garbage collection (no incremental, generational collector) - access to all standard operating system services via m3core and libm3 - no virtual memory protection, no system call wrappers - no thread stack protection via vm - exception handling based on setjmp/longjmp (no table based exception handling (impossible with new gcc)) Several of the basic Unix interfaces in m3core have been carefully checked; others haven't been reviewed at all, so that there will be room for improvements ;-) o The system configuration (cm3.cfg) supports static and dynamic linking of M3 libraries (but not of external (system) libraries, those are always linked dynamically); debugging support via stabs is on by default; profiling hasn't been tested yet; all generated code is position independent (-fPIC). o Graphical user interface programming is supported by Trestle on X and seems to work fine; there is of course no native GUI support yet (Trestle on Aqua?). o The following applications have been tested on PPC_DARWIN and seem to work as expected: m3tohtml, formsedit, solitaire, badbricks, columns, fisheye, obliq, Juno-2, CVSup. Bug Reports ----------- As always, bug reports should be send to the GNATS data base at elego Software Solutions GmbH (bugs@elego.de). The web pages at www.elegosoft.com offer a nice interface for this. Acknowledgments ---------------- John D. Polstra has done the basic work of integrating a new gcc back-end. This release wouldn't be possible without his work. Jordan K. Hubbard has provided an account on opendarwin.org with lots of disk and computing resources where all the target work was performed. Without it, there would also be no working PPC_DARWIN platform now. Darko Volaric has provided huge amounts of documentation about MacOS X and PowerPC and helped testing the new port. Louis Chrétien helped in early phases of the project with tests of gcc and other basics, but seems to have disappeared now (email bounces). I've done the rest and am most likely to blame for anything that doesn't work as expected. Berlin, 2003-02-10 Olaf Wagner