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 KAA13080; Fri, 9 Mar 2001 10:18:45 +0100 (MET) 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 KAA12860 for ; Fri, 9 Mar 2001 10:18:43 +0100 (MET) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.11.1/8.10.0) with ESMTP id f299Ihn28948 for ; Fri, 9 Mar 2001 10:18:43 +0100 (MET) Received: (from xleroy@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA10518 for caml-announce@inria.fr; Fri, 9 Mar 2001 10:18:42 +0100 (MET) Date: Fri, 9 Mar 2001 10:18:42 +0100 From: Xavier Leroy To: caml-announce@inria.fr Subject: [Caml-list] OCaml 3.01 released Message-ID: <20010309101842.A12751@pauillac.inria.fr> Reply-To: caml-list@inria.fr Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0i Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Version 3.01 of the Objective Caml system is now available from the usual places: http://caml.inria.fr/ocaml/distrib.html ftp://ftp.inria.fr/lang/caml-light/ No major novelties in this release (see detailed list below), but a few convenience features were added: - variables in "or" patterns, as in "match l with [t] | [_;t] -> ... t ..."; - "include" in structures to reexport all components of a structure inside another structure; - variance annotations on abstract type declarations; - the bytecode interpreter can print a call stack backtrace when an uncaught exception aborts the program; - option "-I +" to refer to a subdirectory of the standard library directory. In addition, compilation of pattern-matching was revised and generates much better code on complex matchings, especially those involving "or" patterns. Finally, the system was ported to Cygwin (Cygnus/RedHat's Unix compatibility environment for Windows), and Cygwin binaries are distributed along with the previous native Win32 port. For general info on Objective Caml, see http://caml.inria.fr. Bug reports go to caml-bugs@inria.fr, questions to caml@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 3.01: -------------------- New language features: - Variables are allowed in "or" patterns, e.g. match l with [t] | [_;t] -> ... t ... - "include " to re-export all components of a structure inside another structure. - Variance annotation on parameters of type declarations, e.g. type (+'a,-'b,'c) t (covariant in 'a, contravariant in 'b, invariant in 'c) New ports: - Intel IA64/Itanium under Linux (including the native-code compiler). - Cygwin under MS Windows. This port is an alternative to the earlier Windows port of OCaml, which relied on MS compilers; the Cygwin Windows port does not need MS Visual C++ nor MASM, runs faster in bytecode, and has a better implementation of the Unix library, but currently lacks threads and COM component support. Type-checking: - Relaxed "monomorphic restriction" on type constructors in a mutually-recursive type definition, e.g. the following is again allowed type u = C of int t | D of string t and 'a t = ... - Fixed name-capture bug in "include SIG" and "SIG with ..." constructs. - Improved implicit subtypes built by (... :> ty), closer to intuition. - Several bug fixes in type-checking of variants. - Typing of polymorphic variants is more restrictive: do not allow conjunctive types inside the same pattern matching. a type has either an upper bound, or all its tags are in the lower bound. This may break some programs (this breaks lablgl-0.94). Both compilers: - Revised compilation of pattern matching. - Option -I + to search a subdirectory of the standard library directory (i.e. write "ocamlc -I +labltk" instead of "ocamlc -I /usr/local/lib/ocaml/labltk"). - Option -warn-error to turn warnings into errors. - Option -where to print the location of the standard library directory. - Assertions are now type-checked even if the -noassert option is given, thus -noassert can no longe change the types of modules. Bytecode compiler and bytecode interpreter: - Print stack backtrace when a program aborts due to an uncaught exception (requires compilation with -g and running with ocamlrun -b or OCAMLRUNPARAM="b=1"). Native-code compiler: - Better unboxing optimizations on the int32, int64, and nativeint types. - Tail recursion preserved for functions having more parameters than available registers (but tail calls to other functions are still turned off if parameters do not fit entirely in registers). - Fixed name-capture bug in function inlining. - Improved spilling/reloading strategy for conditionals. - IA32, Alpha: better alignment of branch targets. - Removed spurious dependency on the -lcurses library. Toplevel environment: - Revised handling of top-level value definitions, allows reclaimation of definitions that are shadowed by later definitions with the same names. (E.g. "let x = ;; let x = 1;;" allows to be reclaimed.) - Revised the tracing facility so that for standard library functions, only calls from user code are traced, not calls from the system. - Added a "*" prompt when within a comment. Runtime system: - Fixed portability issue on bcopy() vs memmove(), affecting Linux RedHat 7.0 in particular. - Structural comparisons (=, <>, <, <=, >, >=, compare) reimplemented so as to avoid overflowing the C stack. - Input/output functions: arrange so that reads and writes on closed in_channel or out_channel raise Sys_error immediately. Standard library: - Module Gc: changed some counters to float in order to avoid overflow; added alarms - Module Hashtbl: added Hashtbl.replace. - Module Int64: added bits_of_float, float_of_bits (access to IEEE 754 representation of floats). - Module List: List.partition now tail-rec; improved memory behavior of List.stable_sort. - Module Nativeint: added Nativeint.size (number of bits in a nativeint). - Module Obj: fixed incorrect resizing of float arrays in Obj.resize. - Module Pervasives: added float constants "infinity", "neg_infinity", "nan"; added a "classify_float" function to test a float for NaN, infinity, etc. - Pervasives.input_value: fixed bug affecting shared custom objects. - Pervasives.output_value: fixed size bug affecting "int64" values. - Pervasives.int_of_string, {Int32,Int64,Nativeint}.of_string: fixed bug causing bad digits to be accepted without error. - Module Random: added get_state and set_state to checkpoint the generator. - Module Sys: signal handling functions are passed the system-independent signal number rather than the raw system signal number whenever possible. - Module Weak: added Weak.get_copy. Other libraries: - Bigarray: added Bigarray.reshape to take a view of the elements of a bigarray with different dimensions or number of dimensions; fixed bug causing "get" operations to be unavailable in custom toplevels including Bigarray. - Dynlink: raise an error instead of crashing when the loaded module refers to the not-yet-initialized module performing a dynlink operation. - Bytecode threads: added a thread-safe version of the Marshal module; fixed a rare GC bug in the thread scheduler. - POSIX threads: fixed compilation problem with threads.cmxa. - Both thread libraries: better tail-recursion in Event.sync. - Num library: fixed bug in square roots (Nat.sqrt_nat, Big_int.sqrt_big_int). Tools: - ocamldep: fixed missing dependencies on labels of record patterns and record construction operations Win32 port: - Unix.waitpid now implements the WNOHANG option. Mac OS ports: - Mac OS X public beta is supported. - Int64.format works on Mac OS 8/9. ------------------- To unsubscribe, mail caml-list-request@inria.fr. Archives: http://caml.inria.fr