Browse thread
OCaml release 3.10.0
- Xavier Leroy
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Xavier Leroy <Xavier.Leroy@i...> |
| Subject: | OCaml release 3.10.0 |
I'm happy to announce the release of version 3.10.0 of Objective Caml
(the "ascension day" release).
The main novelties in this release include:
* Instance variables in classes can be declared virtual and
implemented in subclasses. Syntax is val virtual v : t.
* Printing of stack backtraces on uncaught exceptions, previously
available only for bytecode-compiled programs, is now supported for
native-code programs as well. (Supported on Intel/AMD and PPC, in 32
and 64 bits).
* New ports: MacOS X, PowerPC, 64 bits; Microsoft Windows 64 bits
(x64) using the Microsoft PSDK toolchain; Microsoft Windows 32 bits
using the Visual Studio 2005 toolchain.
* The Camlp4 preprocessor was partially reimplemented and offers a
new, more modular API for syntax extensions. (Users of third-party
syntax extensions may wish to stay with OCaml 3.09 until these
extensions are ported to the new API.)
* A new experimental tool, ocamlbuild: a compilation manager that
automates the building of OCaml applications and libraries.
A more detailed list of changes is appended.
Sources, documentation and Windows binary distributions are available
from the usual place:
http://caml.inria.fr/ocaml/release.html
MacOS X binaries are not yet available.
Enjoy,
- Xavier Leroy
----------------------------------------------------------------------
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
variable.
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.
Compilers:
- 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.