Release Notes for Critical Mass Modula-3 5.4.0 ---------------------------------------------- CM3 5.4.0 features an updated code generator based on gcc 3.4.5, uses generational/incremental garbage collection by default, supports system-level threading and ships with the m3gdb debugger. This release supports the targets FreeBSD4, LINUXLIBC6, SOLgnu, PPC_DARWIN and NetBSD2_i386. The NT386 and PPC_LINUX targets are currently broken and need fixing. They will probably be included again in a future release. Work is being done on NT386 already. Changes since d5.3.x ------------------- o Import of gcc 3.4.5 as base for cm3cg: The CM3 code generator for POSIX platforms is now based on gcc 3.4.5, which provides new and improved support for current operating system / hardware platforms as well as improved code generation and optimization for existing targets. o The traditional user-level threading system of M3 on POSIX platforms has been complemented by an operating system-level threading system on several platforms (currently SunOS, Linux, DarwinPPC). More implementations of system-level threads are expected. This allows the scheduling of CM3 threads on concurrent processors and will be appreciated by those implementing scalable and highly-responsive server processes in M3. o Import of a new version of m3gdb, based on gdb-6.4.3. It works on all supported targets except PPC_DARWIN, where even vanilla gdb releases won't compile. o Generational/incremental garbage collection is now default. This greatly improves the portabilty of the code base, as system call wrappers are no longer required. A detailed description of the work done in this area can be found in the article "Portable, mostly-concurrent, mostly-copying garbage collection for multi-processors" available at http://doi.acm.org/10.1145/1133956.1133963 . The new garbage collector also supports fast-path allocation for concurrent system-level threads. o CM3 now dynamically links to system libraries on Linux. This was done because some Linux distributions have stopped shipping static libraries. cminstall now looks for files matching *.so instead of *.a on both Linux and Solaris (dynamic linking has been the default on Solaris for some time). o The arithmetic package providing improved support for arithmetic calculations is now a standard package. o Support for plotting has been added in the m3-libs/plplot package. It is not built by default, however, as it requires plplot to be installed. o The documentation and many www pages have been updated and partly rewritten. The goal was to make CM3 more accessible to people who are new to CM3. Time will tell if this goal has been reached. Bug Reports ----------- As always, bug reports should be send to the GNATS database at elego Software Solutions GmbH (bugs@elego.de). The web pages at www.elegosoft.com offer a nice interface for this. Other Resources --------------- Two mailing lists for the development of Modula-3 exist: m3devel@elegosoft.com and m3commit@elegosoft.com. The first is for discussions about planned CM3 and PM3 development and general Modula-3 topics, the second distributes the commit log messages of the CM3 and PM3 repositories via e-mail. You can read archives of these lists at https://mail.elegosoft.com/pipermail/m3devel/ https://mail.elegosoft.com/pipermail/m3commit/ If you want to subscribe to these lists, send mail to m3support@elegosoft.com. www.elegosoft.com also provides the complete CVS repositories, distribution archives, documentation, and various download facilities (CVS, CVSup, FTP, HTTP) for CM3 and PM3. Acknowledgments --------------- Anthony Hosking contributed the cm3cg backend, the new garbage collection mechanisms and was extremely helpful with any issues that came up while this release was being worked at. Rodney M. Bates contributed m3gdb. Henning Thielemann provided the arithmetic package, and also other packages such as plplot. Olaf Wagner supervised my activities as a first-time "release engineer", and managed to stay very patient and kind even when things didn't really work as expected. Dragisa Duric rescued the LINUXLIBC6 target by pointing out a workaround for CM3 segfaulting reliably on Fedora Core Linux. Many people from the m3devel mailing list helped with discussing and analyzing bugs and problems found in the m3 and gcc code. All mistakes and oversights should probably be blamed on Stefan Sperling, who was responsible for creating this release, and updated the documentation and www pages.