Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] OCaml 3.05 released
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Xavier Leroy <xavier.leroy@i...>
Subject: [Caml-list] OCaml 3.05 released
Version 3.05 of the Objective Caml system is now available from

        http://caml.inria.fr/ocaml/distrib.html

The main novelty in this release is the addition of first-class
polymorphism for methods and record fields.  Also, the ocamldoc
documentation generator is now included in the release, and the
modules Complex and Scanf were added to the standard library.  This
comes in addition to the usual amount of bug fixes, which are
described in more details below.

For general info on Objective Caml, see http://caml.inria.fr.  Bug
reports go to caml-bugs@inria.fr, messages for the implementors to
caml@inria.fr, and general discussions to the mailing-list
caml-list@inria.fr, or the comp.lang.ml or comp.lang.functional
newsgroups.

Enjoy,

- Xavier Leroy, for the Objective Caml team.


Objective Caml 3.05:
--------------------

Language features:
- Support for polymorphic methods and record fields.
- Allows _ separators in integer and float literals, e.g. 1_000_000.

Type-checker:
- New flag -principal to enforce principality of type inference.
- Fixed subtle typing bug with higher-order functors.
- Fixed several complexity problems; changed (again) the  behaviour of
  simple coercions.
- Fixed various bugs with objects and polymorphic variants.
- Improved some error messages.

Both compilers:
- Added option "-pack" to assemble several compilation units as one unit
  having the given units as sub-modules.
- More precise detection of unused sub-patterns in "or" patterns.
- Warnings for ill-formed \ escapes in string and character literals.
- Protect against spaces and other special characters in directory names.
- Added interface consistency check when building a .cma or .cmxa library.
- Minor reduction in code size for class initialization code.
- Added option "-nostdlib" to ignore standard library entirely.

Bytecode compiler:
- Fixed issue with ocamlc.opt and dynamic linking.

Native-code compiler:
- Added link-time check for multiply-defined module names.
- Fixed GC bug related to constant constructors of polymorphic variant types.
- Fixed compilation bug for top-level "include" statements.
- PowerPC port: work around limited range for relative branches,
  thus removing assembler failures on large functions.
- IA64 port: fixed code generation bug for 3-way constructor matching.

Toplevel interactive system:
- Can load object files given on command line before starting up.
- ocamlmktop: minimized possibility of name clashes with user-provided modules.

Run-time system:
- Minor garbage collector no longer recursive.
- Better support for lazy data in the garbage collector.
- Fixed issues with the heap compactor.
- Fixed issues with finalized Caml values.
- The type "int64" is now supported on all platforms: we use software 
  emulation if the C compiler doesn't support 64-bit integers.
- Support for float formats that are neither big-endian nor little-endian
  (one known example: the ARM).
- Fixed bug in callback*_exn functions in the exception-catching case.
- Work around gcc 2.96 bug on RedHat 7.2 and Mandrake 8.0, 8.1 among others.
- Stub DLLs now installed in subdir stublibs/ of standard library dir.

Standard library:
- Protect against integer overflow in sub-string and sub-array bound checks.
- New module Complex implementing arithmetic over complex numbers.
- New module Scanf implementing format-based scanning a la scanf() in C.
- Module Arg: added alternate entry point Arg.parse_argv.
- Modules Char, Int32, Int64, Nativeint, String: added type "t" and function
  "compare" so that these modules can be used directly with e.g. Set.Make.
- Module Digest: fixed issue with Digest.file on large files (>= 1Gb);
    added Digest.to_hex.
- Module Filename: added Filename.open_temp_file to atomically create and
    open the temp file; improved security of Filename.temp_file.
- Module Genlex: allow _ as first character of an identifier.
- Module Lazy: more efficient implementation.
- Module Lexing: improved performances for very large tokens.
- Module List: faster implementation of sorting functions.
- Module Printf:
    added %S and %C formats (quoted, escaped strings and characters);
    added kprintf (calls user-specified continuation on formatted string).
- Module Queue: faster implementation (courtesy of François Pottier).
- Module Random: added Random.bool.
- Module Stack: added Stack.is_empty.
- Module Pervasives:
    added sub-module LargeFile to support files larger than 1Gb
      (file offsets are int64 rather than int);
    opening in "append" mode automatically sets "write" mode;
    files are now opened in close-on-exec mode;
    string_of_float distinguishes its output from a plain integer;
    faster implementation of input_line for long lines.
- Module Sys:
     added Sys.ocaml_version containing the OCaml version number;
     added Sys.executable_name containing the (exact) path of the
       file being executable;
     Sys.argv.(0) is now unchanged w.r.t. what was provided as 0-th argument
       by the shell.
- Module Weak: added weak hash tables.

Other libraries:
- Bigarray:
    support for bigarrays of complex numbers; 
    added functions Genarray.dims,
      {Genarray,Array1,Array2,Array3}.{kind,layout}.
- Dynlink: fixed bug with loading of mixed-mode Caml/C libraries.
- LablTK:
    now supports also the CamlTK API (no labels); 
    support for Activate and Deactivate events;
    support for virtual events;
    added UTF conversion;
    export the tcl interpreter as caml value, to avoid DLL dependencies.
- Unix:
    added sub-module LargeFile to support files larger than 1Gb
      (file offsets are int64 rather than int);
    added POSIX opening flags (O_NOCTTY, O_*SYNC);
    use reentrant functions for gethostbyname and gethostbyaddr when available;
    fixed bug in Unix.close_process and Unix.close_process_full;
    removed some overhead in Unix.select.

Tools:
- ocamldoc (the documentation generator) is now part of the distribution.
- Debugger: now supports the option -I +dir.
- ocamllex: supports the same identifiers as ocamlc; warns for
  bad \ escapes in strings and characters.
- ocamlbrowser:
    recenter the module boxes when showing a cross-reference;
    include the current directory in the ocaml path.

Windows port:
- Can now compile with Mingw (the GNU compilers without the Cygwin
  runtime library) in addition to MSVC.
- Toplevel GUI: wrong filenames were given to #use and #load commands;
  read_line() was buggy for short lines (2 characters or less).
- OCamlBrowser: now fully functional.
- Graphics library: fixed several bugs in event handling.
- Threads library: fixed preemption bug.
- Unix library: better handling of the underlying differences between
  sockets and regular file descriptors; 
  added Unix.lockf and a better Unix.rename (thanks to Tracy Camp).
- LablTk library: fixed a bug in Fileinput.
-------------------
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