From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id EEAB7BB9A; Thu, 27 Oct 2005 16:24:48 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j9REOmce011796; Thu, 27 Oct 2005 16:24:48 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA01816; Thu, 27 Oct 2005 16:24:48 +0200 (MET DST) Received: from [128.93.11.95] (estephe.inria.fr [128.93.11.95]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j9REOlsa011791 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 27 Oct 2005 16:24:47 +0200 Message-ID: <4360E32F.1060905@inria.fr> Date: Thu, 27 Oct 2005 16:24:47 +0200 From: Xavier Leroy User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050322) X-Accept-Language: en-us, en MIME-Version: 1.0 To: caml-list@inria.fr, caml-announce@inria.fr Subject: Objective Caml 3.09 released X-Enigmail-Version: 0.90.0.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 4360E330.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 4360E32F.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; abstracting:01 abstracting:01 ocamlopt:01 -pack:01 binutils:01 ocamlopt:01 ocaml:01 ocaml:01 variants:01 compilers:01 compilation:01 compilation:01 rec:01 restrictive:01 native-code:01 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 It is my pleasure to announce the release of Objective Caml version 3.09.0, the "Halloween" release. Be very afraid :-) Novelties in this release include: - Introduction of private row types, for abstracting the row in object and variant types. (See Jacques Garrigue's paper, " Private rows: abstracting the unnamed", available from http://www.math.nagoya-u.ac.jp/~garrigue/papers/). - New warnings for variables locally bound and never used. - A revised implementation of "ocamlopt -pack" that does not depend on GNU binutils and should work on all platforms supported by ocamlopt. The downside is that object files intended for later packing should be compiled with an appropriate "-for-pack" option. Plus the usual assortment of corrections and small improvements listed below. The release can be found at http://caml.inria.fr/ocaml/release and is currently available as source code and Windows binaries. More binaries will be added in the coming weeks. Enjoy, - Xavier Leroy, for the OCaml development team ---------------------------------------------------------------------- Objective Caml 3.09.0: ---------------------- (Changes that can break existing programs are marked with a "*" ) Language features: - Introduction of private row types, for abstracting the row in object and variant types. Type checking: - Polymorphic variants with at most one constructor [< `A of t] are no longer systematically promoted to the exact type [`A of t]. This was more confusing than useful, and created problems with private row types. Both compilers: - Added warnings 'Y' and 'Z' for local variables that are bound but never used. - Added warning for some uses non-returning functions (e.g. raise), when they are passed extra arguments, or followed by extra statements. - Pattern matching: more prudent compilation in case of guards; fixed PR#3780. - Compilation of classes: reduction in size of generated code. - Compilation of "module rec" definitions: fixed a bad interaction with structure coercion (to a more restrictive signature). Native-code compiler (ocamlopt): * Revised implementation of the -pack option (packing of several compilation units into one). The .cmx files that are to be packed with "ocamlopt -pack -o P.cmx" must be compiled with "ocamlopt -for-pack P". In exchange for this additional constraint, ocamlopt -pack is now available on all platforms (no need for binutils). * Fixed wrong evaluation order for arguments to certain inlined functions. - Modified code generation for "let rec ... and ..." to reduce compilation time (which was quadratic in the number of mutually-recursive functions). - x86 port: support tail-calls for functions with up to 21 arguments. - AMD64 port, Linux: recover from system stack overflow. - Sparc port: more portable handling of out-of-bound conditions on systems other than Solaris. Standard library: - Pervasives: faster implementation of close_in, close_out. set_binary_mode_{out,in} now working correctly under Cygwin. - Printf: better handling of partial applications of the printf functions. - Scanf: new function sscanf_format to read a format from a string. The type of the resulting format is dynamically checked and should be the type of the template format which is the second argument. - Scanf: no more spurious lookahead attempt when the end of file condition is set and a correct token has already been read and could be returned. Other libraries: - System threads library: added Thread.sigmask; fixed race condition in signal handling. - Bigarray library: fixed bug in Array3.of_array. - Unix library: use canonical signal numbers in results of Unix.wait*; hardened Unix.establish_server against EINTR errors. Run-time system: - Support platforms where sizeof(void *) = 8 and sizeof(long) = 4. - Improved and cleaned up implementation of signal handling. Replay debugger: - Improved handling of locations in source code. OCamldoc: - extensible {foo } syntax - user can give .txt files on the command line, containing ocamldoc formatted text, to be able to include bigger texts out of source files - -o option is now used by the html generator to indicate the prefix of generated index files (to avoid conflict when a Index module exists on case-insensitive file systems). Miscellaneous: - Configuration information is installed in `ocamlc -where`/Makefile.config and can be used by client Makefiles or shell scripts.