Objective Caml 1.02: -------------------- * Typing: - fixed bug with type names escaping their scope via unification with non-generalized type variables '_a; - keep #class abbreviations longer; - faster checking of well-formed abbreviation definitions; - stricter checking of "with" constraints over signatures (arity mismatch, overriding of an already manifest type). * Compilation (ocamlc and ocamlopt): - fixed bug in compilation of recursive classes; - [|...|] and let...rec... allowed inside definitions of recursive data structures; * Bytecode compilation: fixed overflow in linker for programs with more than 65535 globals and constants. * Native-code compilation: - ocamlopt ported to HPPA under HP/UX, Intel x86 under Solaris 2, PowerMacintosh under MkLinux; - fixed two bugs related to floating-point arrays (one with "t array" where t is an abstract type implemented as float, one with comparison between two float arrays on 32 bit platforms); - fixed reloading/spilling problem causing non-termination of register allocation; - fixed bugs in handling of () causing loss of tail recursion; - fixed reloading bug in indirect calls. * Windows NT/95 port: - complete port of the threads library (Pascal Cuoq); - partial port of the Unix library (Pascal Cuoq); - expansion of *, ? and @ on the command line. * Standard library: - bug in in List.exists2 fixed; - bug in "Random.int n" for very large n on 64-bit machines fixed; - module Format: added a "general purpose" type of box (open_box); can output on several formatters at the same time. * The "threads" library: - implementation on top of native threads available for Win32 and POSIX 1003.1c; - added -thread option to select a thread-safe version of the standard library, the ThreadIO module is no longer needed. * The "graph" library: avoid invalid pixmaps when doing open_graph/close_graph several times. * The "dynlink" library: support for "private" (no re-export) dynamic loading. * ocamlyacc: skip '...' character literals correctly. * C interface: C code linked with O'Caml code can provide its own main() and call caml_main() later. 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.