From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id BAA27033 for caml-redistribution; Thu, 20 Aug 1998 01:39:35 +0200 (MET DST) 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 KAA30493 for ; Wed, 19 Aug 1998 10:26:03 +0200 (MET DST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.8.7/8.8.7) with ESMTP id KAA22972 for ; Wed, 19 Aug 1998 10:26:02 +0200 (MET DST) Received: (from xleroy@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA08626; Wed, 19 Aug 1998 10:26:02 +0200 (MET DST) Message-ID: <19980819102602.39105@pauillac.inria.fr> Date: Wed, 19 Aug 1998 10:26:02 +0200 From: Xavier Leroy To: caml-list@inria.fr Subject: Objective Caml 2.00 released Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Mailer: Mutt 0.89.1 Sender: weis It is my pleasure to announce the release of Objective Caml 2.00. In addition to a number of enhancements and bug fixes (see detailed list below), the main novelty of this release is the introduction of a new class language (designed and implemented by Jérôme Vouillon). The driving idea is to have a small language of class expressions to manipulate classes, just like we have a small language of module expressions to manipulate base modules (structures). Class expressions are generated from base classes (definitions of methods and instance variables) by adding initialization parameters, applying (partially) those initialization parameters, putting class type constraints to hide certain methods and instance variables, etc. (Similarly, module expressions are generated from base modules struct...end by functor abstraction, functor application, signature constraints, etc.) In addition to making the handling of classes more regular and logical, the new class language is much more convenient than the OCaml 1.0 classes for controlling class initialization. For more information on the new class language, see the tutorial at http://caml.inria.fr/ocaml/htmlman/node3.html and the reference manual at http://caml.inria.fr/ocaml/htmlman/node5.10.html The downside of all this is that OCaml 2.00 is not upwards compatible with OCaml 1.07 (hence the new major version number): the syntax of classes has changed significantly, requiring some intervention on your sources. These changes should affect very little programs that do not use classes. A semi-automatic translator from OCaml 1.07 to OCaml 2.00 is available at ftp://ftp.inria.fr/lang/caml-light/bazar-ocaml/ocaml1to2-1.00.tar.gz Objective Caml 2.00 is available from ftp://ftp.inria.fr/lang/caml-light/ in the following files: ocaml-2.00.tar.gz Source distribution (Unix, Windows, Mac) ocaml-2.00-1.i386.rpm Binaries for Linux RedHat 5.1 / Intel ocaml-2.00-win.zip Binaries for Windows 95 and NT ocaml-2.00-refman.* Documentation, in various formats (HTML, PDF, Postscript, DVI, plain text) For general info on Objective Caml, see http://caml.inria.fr/ocaml/ Please direct queries and bug reports to caml-light@inria.fr and general discussions to the mailing-list caml-list@inria.fr or the comp.lang.ml newsgroup. - Xavier Leroy, for the Objective Caml team. ------------------------------------------------------------ Objective Caml 2.00: -------------------- * Language: - New class language. See http://caml.inria.fr/ocaml/refman/ for a tutorial (chapter 2) and for the reference manual (section 4.9). - Local module definitions "let module X = in ". - Record copying with update "{r with lbl1 = expr1; ...}". - Array patterns "[|pat1; ...;patN|]" in pattern-matchings. - New reserved keywords: "object", "initializer". - No longer reserved: "closed", "protected". * Bytecode compiler: - Use the same compact memory representations for float arrays, float records and recursive closures as the native-code compiler. - More type-dependent optimizations. - Added the -use_runtime and -make_runtime flags to build separately and reuse afterwards custom runtime systems (inspired by Fabrice Le Fessant's patch). * Native-code compiler: - Cross-module constant propagation of integer constants. - More type-dependent optimizations. - More compact code generated for "let rec" over data structures. - Better code generated for "for" loops (test at bottom of code). - More aggressive scheduling of stores. - Added -p option for time profiling with gprof (fully supported on Intel x86/Linux and Alpha/Digital Unix only) (inspired by Aleksey Nogin's patch). - A case of bad spilling with high register pressure fixed. - Fixed GC bug when GC called from C without active Caml code. - Alpha: $gp handling revised to follow Alpha's standard conventions, allow running "atom" and "pixie" on ocamlopt-generated binaries. - Intel x86: use movzbl and movsbl systematically to load 8-bit and 16-bit quantities, no more hacks with partial registers (better for the Pentium Pro, worse for the Pentium). - PowerPC: more aggressive scheduling of return address reloading. - Sparc: scheduling bug related to register pairs fixed. * Runtime system: - Better printing of uncaught exceptions (print a fully qualified name whenever possible). * New ports: - Cray T3E (bytecode only) (in collaboration with CEA). - PowerMac under Rhapsody. - SparcStations under Linux. * Standard library: - Added set_binary_mode_in and set_binary_mode_out in Pervasives to toggle open channels between text and binary modes. - output_value and input_value check that the given channel is in binary mode. - input_value no longer fails on very large marshalled data (> 16 Mbytes). - Module Arg: added option Rest. - Module Filename: temp_file no longer loops if temp dir doesn't exist. - Module List: added rev_append (tail-rec alternative to @). - Module Set: tell the truth about "elements" returning a sorted list; added min_elt, max_elt, singleton. - Module Sys: added Sys.time for simple measuring of CPU time. * ocamllex: - Check for overflow when generating the tables for the automaton. - Error messages in generated .ml file now point to .mll source. - Added "let = " to name regular expressions (inspired by Christian Lindig's patch). * ocamlyacc: - Better error recovery in presence of EOF tokens. - Error messages in generated .ml file now point to .mly source. - Generated .ml file now type-safe even without the generated .mli file. * The Unix library: - Use float instead of int to represent Unix times (number of seconds from the epoch). This fixes a year 2005 problem on 32-bit platforms. Functions affected: stat, lstat, fstat, time, gmtime, localtime, mktime, utimes. - Added putenv. - Better handling of "unknown" error codes (EUNKNOWNERR). - Fixed endianness bug in getservbyport. - win32unix (the Win32 implementation of the Unix library) now has the same interface as the unix implementation, this allows exchange of compiled .cmo and .cmi files between Unix and Win32. * The thread libraries: - Bytecode threads: bug with escaping exceptions fixed. - System threads (POSIX, Win32): malloc/free bug fixed; signal bug fixed. - Both: added Thread.wait_signal to wait synchronously for signals. * The graph library: bigger color cache. * The str library: added Str.quote, Str.regexp_string, Str.regexp_string_case_fold. * Emacs mode: - Fixed bug with paragraph fill. - Fixed bug with next-error under Emacs 20.