Changes:
(Exceptions): A catch clause like `CATCH T(e):' introduces a read-only
variable `e' of type `T' within the block. The `(e)' part is
optional. New method Name() and new procedure Abort(). FatalError()
now takes a message string as argument.
(Object): The functions NewUCS4Region() and NewUCS4() have been
revived.
(ADT:ArrayList): New methods Sort() and Elements().
(ADT:StringBuffer): Now provides an INIT() method, covering the
functionality of the old NewCapacity() constructor. New method
CharsUTF16().
(ADT:Comparator): Provides a comparator class `String'.
(oo2c): Super calls can be issued for all type-bound procedures of the
base type, instead of just the procedure that is currently being
redefined.
(oo2c): The compiler warns if an INIT() method does not call the
INIT() of the base type.
Plus the usual number of bug fixes...
From the release notes:
This release is unfortunately a bit late and incorporates a whole
bunch of very different changes. The biggest part is an update of the
libraries to incorporate the string types from module `Object' into
ADT:*, IO:*, OS:*, URI:*, and (partially) XML:* modules. The internal
encoding of Unicode strings has been switched to UTF-16. Support for
the MacOS X and Win32 platforms has been improved.
There were several changes to the symbol file format. Please remove
any old symbol files that are still around.
__________________________________________________________________________
(Object, ADT:StringBuffer): Internal representation of Unicode strings
is now UTF-16. `String32' is gone and has been replaced with
`String16'. MAX(UCS4CHAR) is 10FFFFX, the largest possible Unicode
code point.
(Object:BigInt): Renamed string base constructors to follow the naming
conventions from module `Object'.
(ADT:ArrayList, ADT:Dictionary): Have been converted to parametric
types. One known side-effect of this is that a type guard
`Dictionary.Dictionary' can no longer be applied to instances of
`Object.Object'. The reason for this is that the run-time type
information does not include information on type parameters and
therefore cannot test for particular type arguments. (The necessary
run-time information may be added later.)
(ADT:Storable, ADT:Object:Storage): The parameter type of the methods
ReadObject() and WriteObject() has been changed back to
`Object.Object'. The methods now handle instances of `Object.String'
as well.
(IO:Address): `UnknownHostException' is now derived from `IO.Error'.
(IO:Buffer): Introduce method `ReadLineLF()', to read a single line of
8-bit characters from a channel, including the termination Ascii.lf
character.
(IO:FileChannel): File name arguments are now of type STRING. They
are converted to sequences of bytes using OS:Path.Encode(). Dito for
system() from OS:ProcessManagement.
(IO:Socket, IO:SocketChannel): Non-blocking connect is implemented.
(OS:Path): Changed functions to work on STRINGs. Changed function
names to follow the Oberon naming conventions. Dito for GetCwd() from
OS:ProcessParameters.
(Exception): Fixed a bug in PopContext(), which lead to stack
corruption if more than one TRY context is popped from the stack.
Also some minor cleanups.
(HashCode): Collects all hash functions for the various basic data
types.
(URI, URI:*): The URI modules use the string types from `Object',
instead of defining their own variant of this theme. Error signalling
has been converted to Exception.ParseError. Please note that the
interface of these modules may be in for further changes later. The
URI changes also propgate into the XML modules.
(oo2c): New command --package-installed (tests if a package is
present) and --list-packages (list all installed packages).
(oo2c): The "Pascal" calling convention, and the CSTRING and ALIGNX
flags have been ported to v2 by Stewart Greenhill. This is primarily
used for native Windows DLLs.
(oo2c): There is now support for MaxOS X style "framework" libraries
(contributed by Tim Teulings).
(oo2c): The documentation strings of a module have been removed from
the symbol file `M.Sym', and are now stored in a separate file `M.Doc'
(in the same directory as `M.Sym'). Compilation commands only read
the `M.Sym' part. Also, compilation of huge interface modules is now
much faster.
(oo2c): Constant folding on floating point expressions is now enabled.
(oo2c): Various minor bugs with parametric types have been fixed.
around.
In short, OOC is an Internet based project providing an Oberon-2
development platform. It consists of
* an optimizing compiler,
* a number of source code and compiler related tools,
* a set of standard library modules, and
* a reference manual.
oo2c is the first complete working compiler of the OOC project.
Instead of translating Oberon-2 modules to machine code, it generates
code for the most portable assembler in existence: ANSI-C. The
compiler was initially intended as a prototype backend for OOC, which
could then be used to evaluate and debug the frontend and the
optimization modules. However, it is now a full-fledged development
system, and among other things, it is being used to develop native
code OOC backends.