From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id PAA19074 for caml-redistribution; Tue, 18 Nov 1997 15:45:04 +0100 (MET) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id PAA18315 for ; Tue, 18 Nov 1997 15:27:50 +0100 (MET) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id PAA17131 for ; Tue, 18 Nov 1997 15:27:46 +0100 (MET) Received: (from xleroy@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id PAA18251 for caml-list@inria.fr; Tue, 18 Nov 1997 15:27:04 +0100 (MET) From: Xavier Leroy Message-Id: <199711181427.PAA18251@pauillac.inria.fr> Subject: Objective Caml 1.06 released To: caml-list@inria.fr Date: Tue, 18 Nov 1997 15:27:03 +0100 (MET) Reply-To: caml-light@inria.fr MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: weis We have just released version 1.06 of Objective Caml. It's been almost six months since the previous release, and in the meantime quite a lot of bug fixes and extensions have accumulated. Highlights include a heap compactor (to fight fragmentation on long-running programs), minimal support for lazy evaluation, "protected" methods, and execution of Caml scripts by the toplevel. See the end of this message for a detailed list of changes. Objective Caml 1.06 is available from ftp://ftp.inria.fr/lang/caml-light, in the following files: ocaml-1.06.tar.gz Source distribution (Unix, PC, Mac) ocaml-1.06-1.i386.rpm Binaries for Linux RedHat / Intel ocaml-1.06-win.zip Binaries for Windows 95 and NT ocaml-1.06-refman.* Documentation, in various formats Source diffs from 1.05 are not available, because they are too large. The binary distributions (RedHat and Windows) also include the TK interface ocamltk41 (to be announced shortly). For general info on Objective Caml, see http://pauillac.inria.fr/ocaml/ - Xavier Leroy, for the Objective Caml team -------------- Detailed list of changes: * Language: - Added two new keywords: "assert" (check assertion) and "lazy" (delay evaluation). - Allow identifiers to start with "_" (such identifiers are treated as lowercase idents). * Objects: - Added "protected" methods (visible only from subclasses, can be hidden in class type declared in module signature). - Objects can be compared using generic comparison functions. - Fixed compilation of partial application of object constructors. * Type system: - Occur-check now more strict (all recursions must traverse an object). - A few bugs fixed. * Run-time system: - A heap compactor was implemented, so long-running programs can now fight fragmentation. - The meaning of the "space_overhead" parameter has changed. - The macros Push_roots and Pop_roots are superseded by Begin_roots* and End_roots. - Bytecode executable includes list of primitives used, avoids crashes on version mismatch. - Reduced startup overhead for marshalling, much faster marshalling of small objects. - New exception Stack_overflow distinct from Out_of_memory. - Maximum stack size configurable. - I/O revised for compatibility with compactor and with native threads. - All C code ANSIfied (new-style function declarations, etc). - Threaded code work on all 64-bit processors, not just Alpha/Digital Unix. - Better printing of uncaught exceptions. * Both compilers: - Parsing: more detailed reporting of syntax errors (e.g. shows unmatched opening parenthesis on missing closing parenthesis). - Check consistency between interfaces (.cmi). - Revised rules for determining dependencies between modules. - Options "-verbose" for printing calls to C compiler, "-noassert" for turning assertion checks off. * Native-code compiler: - Machine-dependent parts rewritten using inheritance instead of parameterized modules. - GC bug in value let rec fixed. - Port to Linux/Alpha. - Sparc: cleaned up use of %g registers, now compatible with Solaris threads. * Top-level interactive system: - Can execute Caml script files given on command line. - Reads commands from ./.ocamlinit on startup. - Now thread-compatible. * Standard library: - New library module: Lazy (delayed computations). - New library module: Marshal. Allows marshalling to strings and transmission of closures between identical programs (SPMD parallelism). - Filename: "is_absolute" is superseded by "is_implicit" and "is_relative". To adapt old programs, change "is_absolute x" to "not (is_implicit x)" (but the new "is_relative" is NOT the opposite of the old "is_absolute"). - Array, Hashtbl, List, Map, Queue, Set, Stack, Stream: the "iter" functions now take as argument a unit-returning function. - Format: added "printf" interface to the formatter (see the documentation). Revised behaviour of simple boxes: no more than one new line is output when consecutive break hints should lead to multiple line breaks. - Stream: revised implementation, renamed Parse_failure to Failure and Parse_error to Error (don't you love gratuitous changes?). - String: added index, rindex, index_from, rindex_from. - Array: added mapi, iteri, fold_left, fold_right, init. - Added Map.map, Set.subset, Printexc.to_string. * ocamllex: lexers generated by ocamllex can now handle all characters, including '\000'. * ocamlyacc: fixed bug with function closures returned by parser rules. * Debugger: - Revised generation of events. - Break on function entrance. - New commands start/previous. - The command loadprinter now try to recursively load required modules. - Numerous small fixes. * External libraries: - systhreads: can now use POSIX threads; POSIX and Win32 threads are now supported by the native-code compiler. - dbm and graph: work in native code. - num: fixed bug in Nat.nat_of_string. - str: fixed deallocation bug with case folding. - win32unix: use Win32 handles instead of (buggy) VC++ emulation of Unix file handles; added gettimeofday. * Emacs editing mode and debugger interface updated to July '97 version.