- to do this, and make the result runnable on pre-thumb arm, change
upstreams assembler snippets and stubs to use "mov pc,reg" instead
of the return/call-to-thumb-friendly "bx reg", which is not available
in non-thumb-enabled arm CPUs. Whether this is the way to go, or a
seperate "armt" architecture for ocaml is needed, needs to be discussed
with upstream.
Resulting compiler, when running its selftest suite, has 6 errors less than
the same on i386. Unison compiled natively with this passes its self-test.
Some of the highlights in release 3.12 are:
* Polymorphic recursion is supported, using explicit type
declarations on the recursively-defined identifiers.
* First-class modules: module expressions can be embedded as
values of the core language, then manipulated like any other
first-class value, then projected back to the module level.
* New operator to modify a signature a posteriori: S with type
t := tau denotes signature S where the t type component is
removed and substituted by the type tau elsewhere.
* New notations for record expressions and record patterns:
{ lbl } as shorthand for { lbl = lbl }, and { ...; _ } marks
record patterns where some labels were intentionally omitted.
* Local open let open ... in ... now supported by popular demand.
* Type variables can be bound as type parameters to functions;
such types are treated like abstract types within the
function body, and like type variables (possibly generalized)
outside.
* The module type of construct enables to recover the module
type of a given module.
* Explicit method override using the method! keyword, with
associated warnings and errors.
* 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
By using /bin/ksh (${SH}), we get the desired value of $CWD in on of the
scripts called by the programs install procedure.
Fixes installation under solaris, other platforms unaffected.
- 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
order. Remove "@unexec rmdir" lines made redundant by the reordering.
Also, use a more succinct way to match ${OPSYS} + ${MACHINE_ARCH} by
just checking ${MACHINE_PLATFORM}.
* 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')
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.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
- split out the profiled libraries in the PLIST, because they
don't get built on Darwin.
- set INSTALL_UNSTRIPPED on Darwin for both ocaml itself and
anything that directly depends on it, because the ocaml compiler
generates binaries that don't strip properly.
- 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.
${CC} with options or '-libs' specification.
This fix the build of the package with threaded tcl/tk libraries
from the tcl/tk packages.
While here remove FIX_RPATH, bl3 framework takes care of that for us.