From: Xavier Leroy <Xavier.Leroy@inria.fr>
To: caml-announce@inria.fr
Subject: [Caml-list] OCaml 3.01 released
Date: Fri, 9 Mar 2001 10:18:42 +0100 [thread overview]
Message-ID: <20010309101842.A12751@pauillac.inria.fr> (raw)
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 +<subdir>" 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 <structure expression>" 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 +<subdir> to search a subdirectory <subdir> 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 = <big list>;; let x = 1;;" allows <big list> 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
next reply other threads:[~2001-03-09 9:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-03-09 9:18 Xavier Leroy [this message]
2001-03-09 11:19 ` Stephan Tolksdorf
2001-03-09 14:05 ` Xavier Leroy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20010309101842.A12751@pauillac.inria.fr \
--to=xavier.leroy@inria.fr \
--cc=caml-announce@inria.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox