* Bug fixes
* New features:
- made configure script work on PlayStation 3
- ARM port: brought up-to-date for Debian 4.0 (Etch)
- many other small changes and bugfixes in camlp4, ocamlbuild, labltk,
emacs files
- New language features
- New tools
- 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.
- Print a stack backtrace on an uncaught exception.
- Stack overflow detection on MS Windows 32 bits.
- 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.
- Fixed bug causing duplication of literals.
- C/Caml interface functions take "char const *" arguments
instead of "char *" when appropriate.
- Faster string comparisons (fast case if strings are ==).
- Other
Bug fixes:
- ocamldoc: -using modtype constraint to filter module elements displayed in doc
- ocamldoc: error in merging of top dependencies of modules
- ocamldoc: -dot-colors has no effect
- ocamdloc: missing crossref in text from intro files
- compilers: segfault with recursive modules
- compilers: infinite loop when compiling objects
- compilers: bad error message when signature mismatch
- compilers: infinite loop with -rectypes
- compilers: contravariance bug in private rows
- compilers: unsafe cast with polymorphic exception
- native compiler: bad assembly code generated for AMD64
- native compiler: stack alignment problems on MacOSX/i386
- stdlib: crash in marshalling
- stdlib: crash when closing a channel twice
- stdlib: memory leak in Sys.readdir
- C interface: better definition of CAMLreturn
- otherlibs/unix: crash in gethostbyname
- tools: subtle problem with unset in makefile
- camlp4: install pa_o_fast.o
- camlp4: install more modules
New features:
- ocamldoc: name resolution in cross-referencing {!name}: if name is not
found, then it is searched in the parent module/class, and in the parent
of the parent, and so on until it is found.
- ocamldoc: new option -short-functors to use a short form to display
functors in html generator
- ocamlprof: added "-version" option
Changes from 3.09.1:
----
Bug fixes:
- Makefile: problem with "make world.opt"
- compilers: problem compiling several modules with one command line
- compilers,ocamldoc: error message that Emacs cannot parse
- compilers: crash when printing type error
- compilers: -dtypes wrong for monomorphic type variables
- compilers: wrong warning on optional arguments
- compilers: crash when wrong use of type constructor in let rec
- compilers: better wording of "statement never returns" warning
- runtime: inefficiency of signal handling
- runtime: crashes with I/O in multithread programs
- camlp4: empty file name in error messages
- camlp4: stack overflow
- otherlibs/labltk: ocamlbrowser ignores its command line options
- otherlibs/unix: Unix.times wrong under Mac OS X
- otherlibs/unix: wrong doc for execvp and execvpe
- otherlibs/win32unix: random crash in Unix.stat
- stdlib: update_mod not found under Windows
- stdlib: Filename.dirname/basename wrong on Win32
- stdlib: incomplete documentation of Pervasives.abs
- stdlib: Printf bugs
- tools/checkstack.c missing include
- yacc: crash when given argument "-"
New features:
- ported to MacOS X on Intel
- configure: added support for GNU Hurd
* Bug fixes
* New features:
- otherlibs/labltk: browser uses menu bars instead of menu buttons
Changes 3.09.0:
Language features:
- Introduction of private row types, for abstracting the row in object
and variant types.
Type checking:
- Polymorphic variants with at most one constructor [< `A of t] are no
longer systematically promoted to the exact type [`A of t]. This was
more confusing than useful, and created problems with private row
types.
Native-code compiler (ocamlopt):
* Revised implementation of the -pack option (packing of several compilation
units into one). The .cmx files that are to be packed with
"ocamlopt -pack -o P.cmx" must be compiled with "ocamlopt -for-pack P".
In exchange for this additional constraint, ocamlopt -pack is now
available on all platforms (no need for binutils).
* Fixed wrong evaluation order for arguments to certain inlined functions.
* Other (see 'Changes')
New features:
- support for ocamlopt -pack under Mac OS X (PR#2634, PR#3320)
- ignore unknown warning options for forward and backward compatibility
- runtime: export caml_compare_unordered (PR#3479)
- camlp4: install argl.* files (PR#3439)
- ocamldoc: add -man-section option
- labltk: add the "solid" relief option (PR#3343)
- compiler: ocamlc -i now prints variance annotations
Bug fixes:
- typing: fix unsoundness in type declaration variance inference.
Type parameters which are constrained must now have an explicit variant
annotation, otherwise they are invariant. This is not backward
compatible, so this might break code which either uses subtyping or
uses the relaxed value restriction (i.e. was not typable before 3.07)
- typing: erroneous partial match warning for polymorphic variants (PR#3424)
- runtime: handle the case of an empty command line (PR#3409, PR#3444)
- stdlib: make Sys.executable_name an absolute path in native code (PR#3303)
- runtime: fix memory leak in finalise.c
- runtime: auto-trigger compaction even if gc is called manually (PR#3392)
- stdlib: fix segfault in Obj.dup on zero-sized values (PR#3406)
- camlp4: correct parsing of the $ identifier (PR#3310, PR#3469)
- windows (MS tools): use link /lib instead of lib (PR#3333)
- windows (MS tools): change default install destination
- autoconf: better checking of SSE2 instructions (PR#3329, PR#3330)
- graphics: make close_graph close the X display as well as the window (PR#3312)
- num: fix big_int_of_string (empty string) (PR#3483)
- num: fix big bug on 64-bit architecture (PR#3299)
- str: better documentation of string_match and string_partial_match (PR#3395)
- unix: fix file descriptor leak in Unix.accept (PR#3423)
- unix: miscellaneous clean-ups
- unix: fix documentation of Unix.tm (PR#3341)
- graphics: fix problem when allocating lots of images under Windows (PR#3433)
- compiler: fix error message with -pack when .cmi is missing (PR#3028)
- cygwin: fix problem with compilation of camlheader (PR#3485)
- stdlib: Filename.basename doesn't return an empty string any more (PR#3451)
- stdlib: better documentation of Open_excl flag (PR#3450)
- ocamlcp: accept -thread option (PR#3511)
- ocamldep: handle spaces in file names (PR#3370)
- compiler: remove spurious warning in pattern-matching on variants (PR#3424)
- windows: better handling of InterpreterPath registry entry (PR#3334, PR#3432)
the missing bits, namely labltk and ocaml-graphics, respectively. To
simplify this, add a Makefile.common. Bump PKGREVISION to 8.
Per discussion with wiz@ a while ago.
- split patches files
- always enable threading which has various advantages
- it fixes the build of the Tk library
- it greatly simplifies the package list handling
- it provides threading support under NetBSD 1.6/1.6.x
- correct default dependence in "buildlink2.mk" to "build"
Bump package revision because of all these changes.
* For consistency use SYS_bsd for system type
on powerpc. We differ from SYS_elf (presumably Linux) on
a few points here anyway.
* Fix signal handling on powerpc which caused a
seg fault when compiling native code version of coq.
* Install ocamllex.opt, camlp4o.opt and camlp4r.opt too.
(ephaeton at gmx dot net) in PR pkg/18023. Besten Dank!
Changes from 3.04 to 3.05 (abbreviated list, full list available at
http://caml.inria.fr/archives/200207/msg00558.html):
Language features:
- Support for polymorphic methods and record fields.
- Allows _ separators in integer and float literals, e.g. 1_000_000.
Type-checker:
- Fixed subtle typing bug with higher-order functors.
- Fixed several complexity problems;
- Fixed various bugs with objects and polymorphic variants.
Bytecode compiler:
- Fixed issue with ocamlc.opt and dynamic linking.
Native-code compiler:
- Fixed GC bug related to constant constructors of polymorphic variant types.
- Fixed compilation bug for top-level "include" statements.
Toplevel interactive system:
- ocamlmktop: minimized possibility of name clashes with user-provided modules.
Run-time system:
- Better support for lazy data in the garbage collector.
- Support for float formats that are neither big-endian nor little-endian
- Fixed bug in callback*_exn functions in the exception-catching case.
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.
- various fixes and enhancements to existing modules
Tools:
- ocamldoc part of distribution
- Debugger: now supports the option -I +dir.
- ocamllex: supports the same identifiers as ocamlc;
Changes from 3.05 to 3.06:
Type-checking:
- Apply value restriction to polymorphic record fields.
Run-time system:
- Fixed GC bug affecting lazy values.
Both compilers:
- Added option "-version" to print just the version number.
- Fixed wrong dependencies in .cmi generated with the -pack option.
Native-code compiler:
- Fixed wrong return value for inline bigarray assignments.
Libraries:
- Unix.getsockopt: make sure result is a valid boolean.
Tools:
- ocamlbrowser: improved error reporting;
> Update to version 3.04 based on patches submitted in PR#16896 by
> Marko Schuetz (MarcoSchuetz at web dot de) with minor modification by
> me, closing that PR.
(Pointed out by Takahiro Kambe)