From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id NAA24643; Tue, 13 Jul 2004 13:56:01 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f 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 NAA23827 for ; Tue, 13 Jul 2004 13:56:00 +0200 (MET DST) Received: from yquem.inria.fr (yquem.inria.fr [128.93.8.37]) by concorde.inria.fr (8.12.10/8.12.10) with ESMTP id i6DBtxSH023439 for ; Tue, 13 Jul 2004 13:55:59 +0200 Received: by yquem.inria.fr (Postfix, from userid 18180) id 9AB3FBC42; Tue, 13 Jul 2004 13:55:59 +0200 (CEST) Date: Tue, 13 Jul 2004 13:55:59 +0200 From: Xavier Leroy To: caml-announce@inria.fr Subject: [Caml-list] Objective Caml release 3.08 Message-ID: <20040713115559.GA9492@yquem.inria.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i X-Miltered: at concorde with ID 40F3CDCF.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; 3.07:01 non-portable:01 functors:01 marshaled:01 closures:01 inferred:01 ocamlc:01 recursion:01 -pack:01 cmx:01 compile-time:01 cmx:01 -output-obj:01 dynlink:01 toplevels:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Objective Caml version 3.08 -- the "Bastille day" release -- is now available from http://caml.inria.fr/ocaml/distrib.html A detailed list of changes since 3.07 is appended below. Some of these changes, marked with a "*" below, can break existing programs that relied on undefined or non-portable behaviour. Please keep them in mind while recompiling your programs. Enjoy, - Xavier Leroy, for the Objective Caml team. Objective Caml 3.08: -------------------- Language features: - Support for immediate objects, i.e. objects defined without going through a class. (Syntax is "object end".) Type-checking: - When typing record construction and record patterns, can omit the module qualification on all labels except one. I.e. { M.l1 = ...; l2 = ... } is interpreted as { M.l1 = ...; M.l2 = ... } Both compilers: - More compact compilation of classes. - Much more efficient handling of class definitions inside functors or local modules. - Simpler representation for method tables. Objects can now be marshaled between identical programs with the flag Marshal.Closures. - Improved error messages for objects and variants. - Improved printing of inferred module signatures (toplevel and ocamlc -i). Recursion between type, class, class type and module definitions is now correctly printed. - The -pack option now accepts compiled interfaces (.cmi files) in addition to compiled implementations (.cmo or .cmx). * A compile-time error is signaled if an integer literal exceeds the range of representable integers. - Fixed code generation error for "module rec" definitions. - The combination of options -c -o sets the name of the generated .cmi / .cmo / .cmx files. Bytecode compiler: - Option -output-obj is now compatible with Dynlink and with embedded toplevels. Native-code compiler: - Division and modulus by zero correctly raise exception Division_by_zero (instead of causing a hardware trap). - Improved compilation time for the register allocation phase. - The float constant -0.0 was incorrectly treated as +0.0 on some processors. - AMD64: fixed bugs in asm glue code for GC invocation and exception raising from C. - IA64: fixed incorrect code generated for "expr mod 1". - PowerPC: minor performance tweaks for the G4 and G5 processors. Standard library: * Revised handling of NaN floats in polymorphic comparisons. The polymorphic boolean-valued comparisons (=, <, >, etc) now treat NaN as uncomparable, as specified by the IEEE standard. The 3-valued comparison (compare) treats NaN as equal to itself and smaller than all other floats. As a consequence, x == y no longer implies x = y but still implies compare x y = 0. * String-to-integer conversions now fail if the result overflows the range of integers representable in the result type. * All array and string access functions now raise Invalid_argument("index out of bounds") when a bounds check fails. In earlier releases, different exceptions were raised in bytecode and native-code. - Module Buffer: new functions Buffer.sub, Buffer.nth - Module Int32: new functions Int32.bits_of_float, Int32.float_of_bits. - Module Map: new functions is_empty, compare, equal. - Module Set: new function split. * Module Gc: in-order finalisation, new function finalise_release. Other libraries: - The Num library: complete reimplementation of the C/asm lowest layer to work around potential licensing problems. Improved speed on the PowerPC and AMD64 architectures. - The Graphics library: improved event handling under MS Windows. - The Str library: fixed bug in "split" functions with nullable regexps. - The Unix library: . Added Unix.single_write. . Added support for IPv6. . Bug fixes in Unix.closedir. . Allow thread switching on Unix.lockf. Runtime System: * Name space depollution: all global C identifiers are now prefixed with "caml" to avoid name clashes with other libraries. This includes the "external" primitives of the standard runtime. Ports: - Windows ports: many improvements in the OCamlWin toplevel application (history, save inputs to file, etc). Contributed by Christopher A. Watford. - Native-code compilation supported for HPPA/Linux. Contributed by Guy Martin. - Removed support for MacOS9. Mac OS 9 is obsolete and the port was not updated since 3.05. - Removed ocamlopt support for HPPA/Nextstep and Power/AIX. Ocamllex: - #line directives in the input file are now accepted. - Added character set concatenation operator "cset1 # cset2". Ocamlyacc: - #line directives in the input file are now accepted. Camlp4: * Support for new-style locations (line numbers, not just character numbers). - See camlp4/CHANGES and camlp4/ICHANGES for more info. ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners