diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2003-06-24 09:50:02 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2003-06-24 09:50:02 +0000 |
commit | a41e89a3e7862d25bd3376850d309b206b40724e (patch) | |
tree | 713faccc11b41f657522e8b0f126e72894fc40b8 /Changes | |
parent | 230179ff8bb991524cf988c5319918e497cc8b85 (diff) |
MAJ en vue 3.07
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5621 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'Changes')
-rw-r--r-- | Changes | 105 |
1 files changed, 76 insertions, 29 deletions
@@ -1,22 +1,23 @@ +Objective Caml 3.07: +-------------------- + Language features: -- Introduction of a new kind of data types: the concrete data types - with private constructors or labels, private types for short. - Private types are intended to modelize non free algebraic types that - must verify semantic relations that were not enforceable in - previously available Caml data types. - Values from private types can be freely used in pattern matching but - the creation of values for private types is reserved to special - purpose functions provided in the module implementation where the - private type definition occurs. - That way, the construction functions can enforce any required invariant for - the datatype. Private types are semi-concrete (since they allow - pattern matching as concrete types do) and semi-abstract (since they - forbid direct construction of values as abstract types do). +- Experimental support for recursive module definitions + module rec A : SIGA = StructA and B : SIGB = StructB .. +- Support for "private types", or more exactly concrete data types + with private constructors or labels. These data types can be + de-structured normally in pattern matchings, but values of these + types cannot be constructed directly outside of their defining module. - Added integer literals of types int32, nativeint, int64 (written with an 'l', 'n' or 'L' suffix respectively). Type-checking: -- Allow polymorphic generalization of covariant parts of expansive expressions +- Allow polymorphic generalization of covariant parts of expansive + expressions. For instance, if f: unit -> 'a list, "let x = f ()" + gives "x" the generalized type forall 'a. 'a list, instead of '_a list + as before. +- Format types now have 4 parameters instead of 3 (type ('a,'b,'c,'d) format) + in order to support format concatenation and kprintf. - Added a new "-dtypes" option to ocamlc/ocamlopt, and an emacs extension "emacs/caml-types.el". The compiler option saves inferred type information to file *.types, and the emacs extension allows the user to look at the @@ -25,7 +26,9 @@ Type-checking: Both compilers: - Added option "-dtypes" to dump detailed type information to a file. -- The sources for a module, say "Mod", can be placed either in Mod.ml or +- The "-i" option now generates no compiled files, it only prints + the inferred types. +- The sources for the module named "Mod" can be placed either in Mod.ml or in mod.ml. - Compilation of "let rec" on non-functional values: tightened some checks, relaxed some other checks. @@ -33,44 +36,88 @@ Both compilers: or "for i = a downto min_int". - An explicit interface Mod.mli can now be provided for the module obtained by ocamlc -pack -o Mod.cmo ... or ocamlopt -pack -o Mod.cmx ... +- Revised internal handling of source code locations, now handles + preprocessed code better. +- Pattern-matching bug on float literals fixed. +- Minor improvements on pattern-matching over variants. +- More efficient compilation of string comparisons and the "compare" function. +- More compact code generated for arrays of constants. +- Fixed GC bug with mutable record fields of type "exn". +- Added warning "E" for "fragile patterns": pattern matchings that would + not be flagged as partial if new constructors were added to the data type. Native-code compiler: -- Fixed bug in ocamlopt -pack related to tracking of imported modules. +- Fixed instruction selection bug on expressions of the kind (raise Exn)(arg). +- Several bug fixes in ocamlopt -pack (tracking of imported modules, + command line too long). +- Signal handling bug fixed. - x86 port: Added -ffast-math option to use inline trigo and log functions. - Small performance enhancements on float arithmetic. + Small performance tweaks for the Pentium 4. Fixed illegal "imul" instruction generated by reloading phase. - Sparc port: Enhanced code generation for Sparc V8 (option -march=v8) and Sparc V9 (option -march=v9). + Profiling support added for Solaris. +- PowerPC port: + Keep stack 16-aligned for compatibility with C calling conventions. Toplevel interactive system: - Tightened interface consistency checks between .cmi files, .cm[oa] files loaded by #load, and the running toplevel. - #trace on mutually-recursive functions was broken, works again. -Libraries: +Standard library: - Match_failure and Assert_failure exceptions now report (file, line, column), instead of (file, starting char, ending char). -- Module Arg: added Set_*, Symbol. +- float_of_string, int_of_string: some ill-formed input strings were not + rejected. +- Added format concatenation, string_of_format, format_of_string. +- Module Arg: added new option handlers Set_string, Set_int, Set_float, + Symbol, Tuple. +- Modules Lexing and Parsing: added better handling of positions + in source file. - Module Scanf: %n and %N formats to count characters / items read so far; assorted bug fixes. -- Module Random: better seeding; added functions for serious use. +- Modules Set and Map: fixed bugs causing trees to become unbalanced. +- Module Random: better seeding; functions to generate random int32, int64, + nativeint; added support for explicit state management. +- Module Sys: added Sys.readdir for reading the contents of a directory. Runtime system: - output_value/input_value: fixed bug with large blocks (>= 4 Mwords) - output on a 64-bit platform and incorrectly read back on a 32-bit + produced on a 64-bit platform and incorrectly read back on a 32-bit platform. +- Added MacOS X support for dynamic linking of C libraries. +- Fixed float alignment problem on Sparc V9 with gcc 3.2. +- Improved stack backtraces on uncaught exceptions. +- Fixed memory compaction bug involving input_value. + +Other libraries: +- Dynlink: + By default, dynamically-loaded code now has access to all + modules defined by the program; new functions Dynlink.allow_only + and Dynlink.prohibit implement access control. + Fixed Dynlink problem with files generated with ocamlc -pack. + Protect against references to modules not yet fully initialized. +- LablTK/CamlTK: added support for TCL/TK 8.4. +- Str: reimplemented regexp matching engine, now less buggy, faster, + and LGPL instead of GPL. +- Graphics: fixed draw_rect and fill_rect bug under X11. +- System threads: better implementation of Thread.exit. +- Bytecode threads: fixed two library initialization bugs. +- Unix: + Make Unix.openfile blocking to account for named pipes. + GC bug in Unix.*stat fixed. + Fixed proble with Unix.dup2 on Windows. -The Dynlink library: -- By default, dynamically-loaded code now has access to all - modules defined by the program; new functions Dynlink.allow_only - and Dynlink.prohibit for access control. -- Fixed Dynlink problem with files generated with ocamlc -pack. +Ocamllex: +- Can name parts of the matched input text, e.g. + "0" (['0'-'7']+ as s) { ... s ... } -The Str library: -- Reimplemented regexp matching engine, now less buggy, faster, and LGPL - instead of GPL. +Ocamldebug: +- Handle programs that run for more than 2^30 steps. +- Better support for preprocessed code. Emacs mode: - Added file caml-types.el to interactively display the type information |