![]() |
![]() |
|
|
Home
|
MCC Release Notes Justin David Smith
-----------------------------------------------------------------------------
This document contains the current release notes. For an introduction to
the compiler, please see doc/compiler-intro.txt.
RELEASE NOTES FOR 0.5.3
This release fixes several bugs from the previous release, and includes
several significant feature improvements.
Changes from 0.5.0:
* Python support has been added to the compiler.
* Function pointers are now safe; when a function pointer is called,
the runtime now checks that the argument types match the function
prototype. The cost of this operation is one comparison, by using
arity tags on functions.
* Support for atomic levels has been added in the transaction code.
This allows you to rollback multiple levels at once, or commit a
level other than the most recent level. For details, see comments
in fir/type/fir.ml, on type tailop.
* Added atom class checking to the backend.
* Argument processing is more advanced. You can truncate any command
line argument, so long as there is no ambiguity. Also, gcc-style
-D, -I, etc. arguments are supported; you can say -Dvar=val now,
instead of the old -D var=val (both forms are accepted by compiler).
* Revisions to build system to make it faster and more intelligent.
* Support for dynamic front-ends has been added. You can now develop
new front-ends with Phobos and add them to the compiler dynamically.
RELEASE NOTES FOR 0.5.0
This is the first public release of MCC. The compiler's been in
development for over a year, although most of the code in this release
is no older than 9 months due to a major rewrite during summer 2001.
Since this is the first release, it is likely there are some kinks
that will need to be worked out; please contact us if you run into
problems at mcc@metaprl.org.
In this release:
* Most FC and NAML programs are working, including all programs that
are in the regression suite.
* A few FC and NAML programs do not work; there are raw segfaults in
certain test cases which were introduced by recent backend changes.
* Significant optimizations, including alias analysis and hoisting,
are working.
* Linking to libc works, however some restrictions apply (and safety
guarantees obviously do not apply to external calls to libc). Note
that varargs work as well, so you can call printf() and friends.
* Migration works, including checkpoint/resurrection.
* Atomic transactions work, including nested transactions.
* Compile times are fairly long, due to slow liveness analysis/RA.
* FJava programs generally do not work.
* Many Pascal/Pasqual programs do not work.
* Phobos is unstable.
|
|
|
|
||