1996-03-20 17:10:19 -05:00
|
|
|
This is a port of Modula-3 release 3.5.3, from DEC Systems Research
|
|
|
|
Center. Modula-3 is a modern compiled programming language designed
|
|
|
|
for systems programming as well as large applications. Some notable
|
|
|
|
features include:
|
|
|
|
|
|
|
|
* A clean type system with good support for object-oriented
|
|
|
|
programming.
|
|
|
|
* A powerful module system.
|
|
|
|
* Lightweight threads, fully integrated into the language and all of
|
|
|
|
the libraries.
|
|
|
|
* Generics.
|
|
|
|
* Exceptions.
|
|
|
|
* Automatic storage management by a multithreaded, incremental,
|
|
|
|
generational garbage collector.
|
|
|
|
* Guaranteed type safety, plus the ability to confine unsafe code
|
|
|
|
behind safe interfaces.
|
|
|
|
* Elegance and simplicity, even compared with less powerful
|
|
|
|
languages such as C++ and Ada.
|
|
|
|
* Ease of integration with existing C libraries.
|
|
|
|
* A huge collection of runtime libraries, providing:
|
|
|
|
- Text manipulation.
|
|
|
|
- Generic containers (lists, sequences, tables, etc.).
|
|
|
|
- Atoms and symbolic expressions.
|
|
|
|
- An extensible stream I/O system.
|
|
|
|
- Persistent objects.
|
|
|
|
- Operating system interfaces.
|
|
|
|
- Networking.
|
|
|
|
- Very nice object-oriented graphics facilities, and some
|
|
|
|
convenient tools for building GUIs.
|
|
|
|
* A convenient browser.
|
|
|
|
|
|
|
|
A wealth of information about Modula-3 can be found at:
|
|
|
|
|
|
|
|
http://www.research.digital.com/SRC/modula-3/html/home.html
|
|
|
|
|
Update the Modula-3 port with two main goals in mind.
First, change the port so that it builds a much smaller subset of
the SRC distribution. This eliminates the enormous swap space
requirements of the earlier port, greatly reduces the footprint of
the installed tree, and cuts the size of the package in half.
Second, include many important new patches. Among them is a slightly
modified version of phkmalloc that is thread-safe for Modula-3.
It eradicates some rare and baffling core dumps that cropped up
from time to time in the previous version of the port. The Modula-3
runtime itself is careful to use mutual exclusion around calls to
malloc. But there remained some sneaky backdoor paths into it from
external libraries.
Confession: In the original version of the Modula-3 port, I used
a major version number of 353 for the shared libraries, to correspond
with the SRC version number 3.5.3. That was a dumb move -- I should
have used 1. The current update is incompatible at the shared
library level, requiring me to increment the major version number
to 354, even though this is still based on SRC release 3.5.3. This
is bound to confuse some folks, unfortunately. I weighed a number
of alternatives, such as (a) cheating and going back to 1, and (b)
using a 4-digit major version such as 3531. But in the end I
decided that 354 would be the best solution, even though it's
confusing.
1996-09-10 01:25:10 -04:00
|
|
|
This port includes patches for a number of bugs found since the
|
|
|
|
release of DEC SRC's version 3.5.3. To save space and time, only
|
|
|
|
the most commonly-used subset of the DEC distribution is built and
|
|
|
|
installed by this port. That includes the standard libraries and
|
|
|
|
the graphics packages, but not the (huge) separate projects such
|
1996-09-10 11:46:00 -04:00
|
|
|
as netobj, zeus, obliq, and visual obliq. You can change what is built
|
|
|
|
by doing "make configure" and then editing "work/m3/src/m3makefile".
|
Update the Modula-3 port with two main goals in mind.
First, change the port so that it builds a much smaller subset of
the SRC distribution. This eliminates the enormous swap space
requirements of the earlier port, greatly reduces the footprint of
the installed tree, and cuts the size of the package in half.
Second, include many important new patches. Among them is a slightly
modified version of phkmalloc that is thread-safe for Modula-3.
It eradicates some rare and baffling core dumps that cropped up
from time to time in the previous version of the port. The Modula-3
runtime itself is careful to use mutual exclusion around calls to
malloc. But there remained some sneaky backdoor paths into it from
external libraries.
Confession: In the original version of the Modula-3 port, I used
a major version number of 353 for the shared libraries, to correspond
with the SRC version number 3.5.3. That was a dumb move -- I should
have used 1. The current update is incompatible at the shared
library level, requiring me to increment the major version number
to 354, even though this is still based on SRC release 3.5.3. This
is bound to confuse some folks, unfortunately. I weighed a number
of alternatives, such as (a) cheating and going back to 1, and (b)
using a 4-digit major version such as 3531. But in the end I
decided that 354 would be the best solution, even though it's
confusing.
1996-09-10 01:25:10 -04:00
|
|
|
|
1996-03-20 17:10:19 -05:00
|
|
|
-- John Polstra <jdp@polstra.com>
|