English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
beta-test of OCaml 3.10.0
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-03-07 (13:10)
From: Xavier Leroy <Xavier.Leroy@i...>
Subject: beta-test of OCaml 3.10.0

The long-awaited release 3.10 of Objective Caml is making good
progress and is now ready for beta-testing.  A source-only
beta distribution can be downloaded from


We would be grateful if some of you could compile it, give it a
good workout on your favorite Caml programs, and report any problems
you might encounter via the Caml bug tracker.

The main novelties in 3.10 are:

- A new tool: ocamlbuild, a compilation manager for OCaml projects.
- Much work on Camlp4, including a new API.
- A long-awaited feature: stack backtraces on uncaught exceptions
  that work for native-code as well as for bytecode.
- Two new 64-bit ports: to Windows 64/AMD64 and MacOS X/PowerPC 64.

Other changes are listed below.

The documentation is not up to date yet, but some preliminary
documentation on ocamlbuild and the new Camlp4 can be found on
Nicolas Pouillard's Web page, http://gallium.inria.fr/~pouillar/


- Xavier Leroy, for the Caml development team


Objective Caml 3.10.0:

(Changes that can break existing programs are marked with a "*"  )

Language features:
- Added virtual instance variables in classes "val virtual v : t"
* Changed the behaviour of instance variable overriding; the new
  definition replaces the old one, rather than creating a new

New tools:
- ocamlbuild: compilation manager for OCaml applications and libraries.
  See draft documentation at http://gallium.inria.fr/~pouillar/
* Camlp4: heavily revised implementation, new API.

New ports:
- MacOS X PowerPC 64 bits.
- MS Windows 64 bits (x64) using the Microsoft PSDK toolchain.
- MS Windows 32 bits using the Visual Studio 2005 toolchain.

- Faster type-checking of functor applications.
- Referencing an interface compiled with -rectypes from a module
    not compiled with -rectypes is now an error.
- Revised the "fragile matching" warning.

Native-code compiler:
- Print a stack backtrace on an uncaught exception.
  (Compile and link with ocamlopt -g; execute with OCAMLRUNPARAM=b.)
  Supported on Intel/AMD in 32 and 64 bits, PPC in 32 and 64 bits.
- Stack overflow detection on MS Windows 32 bits (courtesy O. Andrieu).
- Stack overflow detection on MacOS X PPC and Intel.
- Intel/AMD 64 bits: generate position-independent code by default.
- Fixed bug involving -for-pack and missing .cmx files (PR#4124).
- Fixed bug causing duplication of literals  (PR#4152).

Run-time system:
- C/Caml interface functions take "char const *" arguments
  instead of "char *" when appropriate.
- Faster string comparisons (fast case if strings are ==).

Standard library:
- Refined typing of format strings (type format6).
- Printf, Format: new function ifprintf that consumes its arguments
    and prints nothing (useful to print conditionally).
- Scanf:
    new function format_from_string to convert a string to a format string;
    new %r conversion to accomodate user defined scanners.
- Filename: improved Win32 implementation of Filename.quote.
- List: List.nth now tail-recursive.
- Sys: added Sys.is_directory.  Some functions (e.g. Sys.command) that
    could incorrectly raise Sys_io_blocked now raise Sys_error as intended.

Other libraries:
- Bigarray: mmap_file takes an optional argument specifying
    the start position of the data in the mapped file.
- Dynlink: now defines only two modules, Dynlink and Dynlinkaux (internal),
    reducing risks of name conflicts with user modules.
- Labltk under Win32: now uses Tcl/Tk 8.4 instead of 8.3 by default.
- VM threads: improved performance of I/O operations (less polling).
- Unix: new function Unix.isatty.
- Unix emulation under Win32:
    fixed incorrect error reporting in several functions (PR#4097);
    better handling of channels opened on sockets (PR#4098);
    fixed GC bug in Unix.system (PR#4112).

Documentation generator (OCamldoc):
- correctly handle '?' in value names (PR#4215)
- new option -hide-warnings not to print ocamldoc warnings

Lexer generator (ocamllex): improved error reporting.

License: fixed a typo in the "special exception" to the LGPL.