ocaml/Changes

225 lines
7.3 KiB
Plaintext

Objective Caml 1.01:
* Typing: better report of type incompatibilities;
non-generalizable type variables in a struct...end no longer flagged
immediately as an error;
name clashes during "open" avoided.
* Fixed bug in output_value where identical data structures
could have different external representations; this bug caused wrong
"inconsistent assumptions" errors when checking compatibility of
interfaces at link-time.
* Standard library: fixed bug in Array.blit on overlapping array sections
* Unmarshaling from strings now working.
* ocamlc, ocamlopt: new flags -intf and -impl to force compilation as
an implementation/an interface, regardless of file extension;
overflow bug on wide-range integer pattern-matchings fixed.
* ocamlc: fixed bytecode generation bug causing problems with compilation
units defining more than 256 values
* ocamlopt, all platforms:
fixed GC bug in "let rec" over data structures;
link startup file first, fixes "undefined symbol" errors with some
libraries.
* ocamlopt, Intel x86:
more efficient calling sequence for calling C functions;
floating-point wars, chapter 5: don't use float stack for holding
float pseudo-registers, stack-allocating them is just as efficient.
* ocamlopt, Alpha and Intel x86: more compact calling sequence for garbage
collection.
* ocamllex: generated automata no longer use callbacks for refilling
the input buffer (works better with threads); character literals
correctly skipped inside actions.
* ocamldep: "-I" directories now searched in the right order
* Thread library: incompatibilities with callbacks, signals, and
dynamic linking removed; scheduling bug with Thread.wait fixed.
* New "dbm" library, interfaces with NDBM.
* Object-oriented extensions:
instance variables can now be omitted in class types;
some error messages have been made clearer;
several bugs fixes.
Objective Caml 1.00:
--------------------
* Merge of Jerome Vouillon and Didier Remy's object-oriented
extensions.
* All libraries: all "new" functions renamed to "create" because "new"
is now a reserved keyword.
* Compilation of "or" patterns (pat1 | pat2) completely revised to
avoid code size explosion.
* Compiler support for preprocessing source files (-pp flag).
* Library construction: flag -linkall to force linking of all units in
a library.
* Native-code compiler: port to the Sparc under NetBSD.
* Toplevel: fixed bug when tracing several times the same function
under different names.
* New format for marshaling arbitrary data structures, allows
marshaling to/from strings.
* Standard library: new module Genlex (configurable lexer for streams)
* Thread library: much better support for I/O and blocking system calls.
* Graphics library: faster reclaimation of unused pixmaps.
* Unix library: new functions {set,clear}_nonblock, {set,clear}_close_on_exec,
{set,get}itimer, inet_addr_any, {get,set}sockopt.
* Dynlink library: added support for linking libraries (.cma files).
Caml Special Light 1.15:
------------------------
* Caml Special Light now runs under Windows NT and 95. Many thanks to
Kevin Gallo (Microsoft Research) who contributed his initial port.
* csllex now generates tables for a table-driven automaton.
The resulting lexers are smaller and run faster.
* Completely automatic configuration script.
* Typing: more stringent checking of module type definitions against
manifest module type specifications.
* Toplevel: recursive definitions of values now working.
* Native-code compiler, all platforms:
toplevel "let"s with refutable patterns now working;
fixed bug in assignment to float record fields;
direct support for floating-point negation and absolute value.
* Native-code compiler, x86: fixed bug with tail calls (with more than
4 arguments) from a function with a one-word stack frame.
* Native-code compiler, Sparc: problem with -compact fixed.
* Thread library: support for non-blocking writes; scheduler revised.
* Unix library: bug in gethostbyaddr fixed; bounds checking for read,
write, etc.
Caml Special Light 1.14:
------------------------
* cslopt ported to the PowerPC/RS6000 architecture. Better support for
AIX in the bytecode system as well.
* cslopt, all platforms: fixed bug in live range splitting around catch/exit.
* cslopt for the Intel (floating-point wars, chapter 4):
implemented Ershov's algorithm to minimize floating-point stack usage;
out-of-order pops fixed.
* Several bug fixes in callbacks and signals.
Caml Special Light 1.13:
------------------------
* Pattern-matching compilation revised to factor out accesses inside
matched structures.
* Callbacks and signals now supported in cslopt.
Signals are only detected at allocation points, though.
Added callback functions with 2 and 3 arguments.
* More explicit error messages when a native-code program aborts due
to array or string bound violations.
* In patterns, "C _" allowed even if the constructor C has several arguments.
* && and || allowed as alternate syntax for & and or.
* cslopt for the Intel: code generation for floating-point
operations entirely redone for the third time (a pox on whomever at
Intel decided to organize the floating-point registers as a stack).
* cslopt for the Sparc: don't use Sparc V8 smul and sdiv instructions,
emulation on V7 processors is abysmal.
Caml Special Light 1.12:
------------------------
* Fixed an embarrassing bug with references to floats.
Caml Special Light 1.11:
------------------------
* Streams and stream parsers a la Caml Light are back (thanks to
Daniel de Rauglaudre).
* User-level concurrent threads, with low-level shared memory primitives
(locks and conditions) as well as channel-based communication primitives
with first-class synchronous events, in the style of Reppy's CML.
* The native-code compiler has been ported to the HP PA-RISC processor
running under NextStep (sorry, no HPUX, its linker keeps dumping
core on me).
* References not captured in a function are optimized into variables.
* Fixed several bugs related to exceptions.
* Floats behave a little more as specified in the IEEE standard
(believe it or not, but x < y is not the negation of x >= y).
* Lower memory consumption for the native-code compiler.
Caml Special Light 1.10:
------------------------
* Many bug fixes (too many to list here).
* Module language: introduction of a "with module" notation over
signatures for concise sharing of all type components of a signature;
better support for concrete types in signatures.
* Native-code compiler: the Intel 386 version has been ported to
NextStep and FreeBSD, and generates better code (especially for
floats)
* Tools and libraries: the Caml Light profiler and library for
arbitrary-precision arithmetic have been ported (thanks to John
Malecki and Victor Manuel Gulias Fernandez); better docs for the Unix
and regexp libraries.
Caml Special Light 1.07:
------------------------
* Syntax: optional ;; allowed in compilation units and structures
(back by popular demand)
* cslopt:
generic handling of float arrays fixed
direct function application when the function expr is not a path fixed
compilation of "let rec" over values fixed
multiple definitions of a value name in a module correctly handled
no calls to ranlib in Solaris
* csltop: #trace now working
* Standard library: added List.memq; documentation of Array fixed.
Caml Special Light 1.06:
------------------------
* First public release.