	Main changes between Caml Light 0.4 and Caml Light 0.5
	------------------------------------------------------

LANGUAGE EXTENSIONS:

- Streams and stream matching, for writing parsers and printers.

- Abstract types can now be implemented as type abbreviations.

- Constructors for variant types are now either constant or
non-constant, instead of having a fixed arity as before. This fixes
the nasty problem of ref(1,2) being rejected because ref has arity 1.


EXTENSIONS TO THE CAML LIGHT ENVIRONMENT:

- A general mechanism to link Caml Light code with C code. As a
consequence, an X-windows interface and a library of Unix system calls
are now provided.

- Two new commands: camllibr, to build libraries, and camlmktop, to
construct custom toplevel systems.

- Several new modules in the library (printf, hashtbl, random, stack,
queue, ...)

- Executable bytecode files are now machine-independent: you can run
the same bytecode file on different architectures.


BUG FIXES: lots of them. The most important are:

- Pattern-matching over mutable structures is now correctly compiled:
modifying the matched structure after matching, then accessing parts
of the structure used to fail in various ways; this is now safe.

- Redefinition of exceptions is now correctly handled.


IMPLEMENTATION CHANGES:

- A new garbage collector. The major collector is now incremental,
meaning that garbage collection is even less disruptive than before.

- The produced bytecode is slightly better, due to several new
optimizations in the compiler back-end.

- The linker has been separated from the compiler, and is now clever
enough to avoid linking in useless code. To support this, the format
of .zo files was changed. The new format is much more compact, loads
faster, and supports libraries.

- Autoconfiguration script.

MICROCOMPUTER PORTS:

- Graphics primitives.

- For the Macintosh port, the toplevel system is now a standalone
application, with its own user interface, and does not require MPW
anymore. (The batch compilers still require MPW.)

- The PC ports work in conjunction with TSR line editors.

- The 80386 PC port is now VCPI-compliant, and handles keyboard
interrupts correctly.


MAIN INCOMPATIBILITIES (watch out these when porting code to 0.5):

- Assignment operations such as :=, vect_assign, <- now return (), instead
of the new value.

- The "failure" exception from the standard library is now named "Failure".

- Searching functions from the standard library (assoc, assq, ...) now
raise "Not_found" on error, instead of "failure".

- Some library modules have been renamed or modified. The old "unix"
module is now named "sys". The new "sys" module is less Unix-specific.
Some of the functions in the old "unix" module have disappeared, other
have a slightly different interface. The old "hash" module is now
subsumed by the "hashtbl" module.

