summaryrefslogtreecommitdiffstats
path: root/Changes
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2003-06-24 09:50:02 +0000
committerXavier Leroy <xavier.leroy@inria.fr>2003-06-24 09:50:02 +0000
commita41e89a3e7862d25bd3376850d309b206b40724e (patch)
tree713faccc11b41f657522e8b0f126e72894fc40b8 /Changes
parent230179ff8bb991524cf988c5319918e497cc8b85 (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--Changes105
1 files changed, 76 insertions, 29 deletions
diff --git a/Changes b/Changes
index 880e66c29..b28380b45 100644
--- a/Changes
+++ b/Changes
@@ -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