summaryrefslogtreecommitdiff
path: root/Changes
diff options
context:
space:
mode:
Diffstat (limited to 'Changes')
-rw-r--r--Changes98
1 files changed, 93 insertions, 5 deletions
diff --git a/Changes b/Changes
index 15545c4aac..a77e018ec9 100644
--- a/Changes
+++ b/Changes
@@ -1,13 +1,101 @@
Objective Caml 3.08:
--------------------
+(Changes that can break existing programs are marked with a "*" )
+
+Language features:
+- Support for immediate objects, i.e. objects defined without going
+ through a class. (Syntax is "object <field and methods> end".)
+
+Type-checking:
+* When typing records, the module path annotation of the first path
+ annotated label now stands for all of the un-annotated labels of
+ the record.
+
+Both compilers:
+- More compact compilation of classes.
+- Much more efficient handling of class definitions inside functors
+ or local modules.
+- Simpler represention for method tables. Objects can now be marshalled
+ between identical programs with the flag Marshal.Closures.
+- Improved error messages for objects and variants.
+- Improved printing of inferred module signatures (toplevel and ocamlc -i).
+ Recursion between type, class, class type and module definitions is now
+ correctly printed.
+- The -pack option now accepts compiled interfaces (.cmi files) in addition
+ to compiled implementations.
+* A compile-time error is signaled if an integer literal exceeds the
+ range of representable integers.
+- Fixed code generation error for "module rec" definitions.
+- The combination of options -c -o sets the name of the generated
+ .cm[iox] files.
+
+Bytecode compiler:
+- Option -output-obj is now compatible with Dynlink and
+ with embedded toplevels.
+
+Native-code compiler:
+- Division and modulus by zero correctly raise exception Division_by_zero
+ (instead of causing a hardware trap).
+- Improved compilation time for the register allocation phase.
+- The float constant -0.0 was incorrectly treated as +0.0 on some processors.
+- AMD64: fixed bugs in asm glue code for GC invocation and exception raising
+ from C.
+- IA64: fixed incorrect code generated for "expr mod 1".
+- PowerPC: minor performance tweaks for the G4 and G5 processors.
+
+Standard library:
+* Revised handling of NaN floats in polymorphic comparisons.
+ The polymorphic boolean-valued comparisons (=, <, >, etc) now treat
+ NaN as uncomparable, as specified by the IEEE standard.
+ The 3-valued comparison (compare) treats NaN as equal to itself
+ and smaller than all other floats.
+* String-to-integer conversions now fail if the result overflows
+ the range of integers representable in the result type.
+* All array and string access functions now raise
+ Invalid_argument("index out of bounds") when a bounds check fails.
+ In earlier releases, different exceptions were raised
+ in bytecode and native-code.
+- Module Buffer: new functions Buffer.sub, Buffer.nth
+- Module Int32: new functions Int32.bits_of_float, Int32.float_of_bits.
+- Module Map: new functions is_empty, compare, equal.
+- Module Set: new function split.
+* Module Gc: in-order finalisation, new function finalise_release.
+
+Other libraries:
+- The Num library: complete reimplementation of the C/asm lowest
+ layer to work around potential licensing problems.
+ Improved speed on the PowerPC and AMD64 architectures.
+- The Str library: fixed bug in "split" functions with nullable regexps.
+- The Unix library:
+ . Added support for IPv6.
+ . Bug fixes in Unix.closedir.
+ . Allow thread switching on Unix.lockf.
+
Runtime System:
-- All global identifiers are now prefixed with "caml" to avoid name clashes
- with other libraries.
+* Name space depollution: all global C identifiers are now prefixed
+ with "caml" to avoid name clashes with other libraries. This
+ includes the "external" primitives of the standard runtime.
+
+Ports:
+- Windows ports: many improvements in the OCamlWin toplevel application
+ (history, save inputs to file, etc). Contributed by Christopher A. Watford.
+- Native-code compilation supported for HPPA/Linux. Contributed by Guy Martin.
+- Removed support for MacOS9. Mac OS 9 is obsolete and the port was not
+ updated since 3.05.
+- Removed ocamlopt support for HPPA/Nextstep.
+
+Ocamllex:
+- #line directives in the input file are now accepted.
+- Added character set concatenation operator "cset1 # cset2".
+
+Ocamlyacc:
+- #line directives in the input file are now accepted.
+
+Camlp4:
+* Support for new-style locations (line numbers, not just character numbers).
+- See camlp4/CHANGES and camlp4/ICHANGES for more info.
-Mac OS 9 Port:
-- Removed all MacOS9-specific files. The Mac OS 9 port is obsolete, it
- was not updated since 3.05.
Objective Caml 3.07:
--------------------