Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Caml-list] beta-test of OCaml 3.10.0

10 views
Skip to first unread message

Xavier Leroy

unread,
Mar 7, 2007, 8:13:10 AM3/7/07
to Caml List
Hello,

The long-awaited release 3.10 of Objective Caml is making good
progress and is now ready for beta-testing. A source-only
beta distribution can be downloaded from

http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-3.10.0+beta.tar.gz

We would be grateful if some of you could compile it, give it a
good workout on your favorite Caml programs, and report any problems
you might encounter via the Caml bug tracker.

The main novelties in 3.10 are:

- A new tool: ocamlbuild, a compilation manager for OCaml projects.
- Much work on Camlp4, including a new API.
- A long-awaited feature: stack backtraces on uncaught exceptions
that work for native-code as well as for bytecode.
- Two new 64-bit ports: to Windows 64/AMD64 and MacOS X/PowerPC 64.

Other changes are listed below.

The documentation is not up to date yet, but some preliminary
documentation on ocamlbuild and the new Camlp4 can be found on
Nicolas Pouillard's Web page, http://gallium.inria.fr/~pouillar/

Enjoy,

- Xavier Leroy, for the Caml development team

----------------------------------------------------------------------

Objective Caml 3.10.0:
----------------------

(Changes that can break existing programs are marked with a "*" )

Language features:
- Added virtual instance variables in classes "val virtual v : t"
* Changed the behaviour of instance variable overriding; the new
definition replaces the old one, rather than creating a new
variable.

New tools:
- ocamlbuild: compilation manager for OCaml applications and libraries.
See draft documentation at http://gallium.inria.fr/~pouillar/
* Camlp4: heavily revised implementation, new API.

New ports:
- MacOS X PowerPC 64 bits.
- MS Windows 64 bits (x64) using the Microsoft PSDK toolchain.
- MS Windows 32 bits using the Visual Studio 2005 toolchain.

Compilers:
- 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.

Native-code compiler:
- Print a stack backtrace on an uncaught exception.
(Compile and link with ocamlopt -g; execute with OCAMLRUNPARAM=b.)
Supported on Intel/AMD in 32 and 64 bits, PPC in 32 and 64 bits.
- Stack overflow detection on MS Windows 32 bits (courtesy O. Andrieu).
- 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 (PR#4124).
- Fixed bug causing duplication of literals (PR#4152).

Run-time system:
- C/Caml interface functions take "char const *" arguments
instead of "char *" when appropriate.
- Faster string comparisons (fast case if strings are ==).

Standard library:
- Refined typing of format strings (type format6).
- Printf, Format: new function ifprintf that consumes its arguments
and prints nothing (useful to print conditionally).
- Scanf:
new function format_from_string to convert a string to a format string;
new %r conversion to accomodate user defined scanners.
- Filename: improved Win32 implementation of Filename.quote.
- List: List.nth now tail-recursive.
- Sys: added Sys.is_directory. Some functions (e.g. Sys.command) that
could incorrectly raise Sys_io_blocked now raise Sys_error as intended.

Other libraries:
- Bigarray: mmap_file takes an optional argument specifying
the start position of the data in the mapped file.
- Dynlink: now defines only two modules, Dynlink and Dynlinkaux (internal),
reducing risks of name conflicts with user modules.
- Labltk under Win32: now uses Tcl/Tk 8.4 instead of 8.3 by default.
- VM threads: improved performance of I/O operations (less polling).
- Unix: new function Unix.isatty.
- Unix emulation under Win32:
fixed incorrect error reporting in several functions (PR#4097);
better handling of channels opened on sockets (PR#4098);
fixed GC bug in Unix.system (PR#4112).

Documentation generator (OCamldoc):
- correctly handle '?' in value names (PR#4215)
- new option -hide-warnings not to print ocamldoc warnings

Lexer generator (ocamllex): improved error reporting.

License: fixed a typo in the "special exception" to the LGPL.

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

micha

unread,
Mar 7, 2007, 9:13:10 AM3/7/07
to Xavier Leroy, Caml List
Am Wed, 07 Mar 2007 14:10:38 +0100
schrieb Xavier Leroy <Xavier...@inria.fr>:

>
> - A new tool: ocamlbuild, a compilation manager for OCaml projects.

building with "./build/fastworld.sh" doesn't work here (Etch, 2.6.20.1,
Athlon XP)

> ./configure -cc "gcc -march=athlon-xp -O3"
> make world ..
> ./build/fastworld.sh

after some compilation gives errors:
..
+ cd yacc
+ make
make: Für das Ziel »all« ist nichts zu tun.
+ ./boot/ocamlrun boot/myocamlbuild.boot boot/stdlib.cma
boot/std_exit.cmo
SANITIZE: a total of 664 files that should probably not be in your
source
tree has been found. A script shell file "sanitize.sh" is being
created.
Check this script and run it to remove unwanted files or use other
options
(such as defining hygiene exceptions or using the -no-hygiene option).
IMPORTANT: I cannot work with leftover compiled files.
ERROR: Leftover Ocaml compilation files:
File lambda.cmo in bytecomp has suffix .cmo
File printlambda.cmo in bytecomp has suffix .cmo
File typeopt.cmo in bytecomp has suffix .cmo
File switch.cmo in bytecomp has suffix .cmo
.. many more...
ERROR: Leftover ocamllex-generated files:
Files lexer.mll and lexer.ml should not be together in debugger
ERROR: Leftover ocamlyacc-generated files:
Files parser.mly and parser.ml should not be together in debugger
Files parser.mly and parser.mli should not be together in debugger
ERROR: Leftover Ocaml compilation files:
File dynlink.cmo in debugger has suffix .cmo
...many more...
Exiting due to hygiene violations.

cheers,
Michael

Joel Reymont

unread,
Mar 7, 2007, 9:17:59 AM3/7/07
to micha

On Mar 7, 2007, at 2:08 PM, micha wrote:

> building with "./build/fastworld.sh" doesn't work here (Etch,
> 2.6.20.1,
> Athlon XP)

You need to do 'make clean' beforehand but I still get this on Mac
OSX 10.4.8 Intel:

Error while linking bytecomp/symtable.cmo:
Reference to undefined global `Runtimedef'
Exit code 2 while executing this command:
boot/ocamlrun ./ocamlc -nostdlib -g -I stdlib
myocamlbuild_config.cmo utils/config.cmo bytecomp/bytesections.cmo
utils/misc.cmo bytecomp/dll.cmo parsing/linenum.cmo utils/
terminfo.cmo utils/warnings.cmo parsing/location.cmo parsing/
longident.cmo typing/ident.cmo typing/path.cmo typing/primitive.cmo
typing/types.cmo typing/btype.cmo typing/predef.cmo typing/
datarepr.cmo utils/tbl.cmo typing/subst.cmo utils/clflags.cmo utils/
consistbl.cmo typing/env.cmo bytecomp/lambda.cmo bytecomp/
instruct.cmo bytecomp/opcodes.cmo bytecomp/meta.cmo bytecomp/
symtable.cmo utils/ccomp.cmo bytecomp/bytelink.cmo bytecomp/
bytelibrarian.cmo bytecomp/switch.cmo bytecomp/bytegen.cmo bytecomp/
printlambda.cmo typing/ctype.cmo typing/typedtree.cmo bytecomp/
typeopt.cmo typing/parmatch.cmo bytecomp/matching.cmo bytecomp/
translobj.cmo bytecomp/translcore.cmo bytecomp/translclass.cmo typing/
mtype.cmo typing/oprint.cmo typing/printtyp.cmo bytecomp/
translmod.cmo bytecomp/emitcode.cmo typing/includeclass.cmo typing/
includecore.cmo typing/includemod.cmo typing/stypes.cmo typing/
typetexp.cmo typing/typecore.cmo typing/typedecl.cmo typing/
typeclass.cmo typing/typemod.cmo bytecomp/bytepackager.cmo bytecomp/
printinstr.cmo bytecomp/simplif.cmo driver/pparse.cmo parsing/
syntaxerr.cmo parsing/parser.cmo parsing/lexer.cmo parsing/parse.cmo
parsing/printast.cmo typing/unused_var.cmo driver/compile.cmo driver/
errors.cmo driver/main_args.cmo driver/main.cmo -o driver/main.byte

--
http://wagerlabs.com/

micha

unread,
Mar 7, 2007, 9:57:32 AM3/7/07
to Caml List
Am Wed, 7 Mar 2007 14:12:32 +0000
schrieb Joel Reymont <joe...@gmail.com>:

>
> On Mar 7, 2007, at 2:08 PM, micha wrote:
>

> > building with doesn't work here (Etch,

> > 2.6.20.1,
> > Athlon XP)
>
> You need to do 'make clean' beforehand but I still get this on Mac
> OSX 10.4.8 Intel:

so make clean and then "./build/fastworld.sh" gives this error:

+ boot/ocamlrun boot/myocamlbuild.boot -just-plugin -install-lib-dir
_build/ocamlbuild -byte-plugin boot/ocamlrun boot/ocamlc -I boot
-nostdlib
-I /home/micha/ocaml-3.10.0+beta/_build/ocamlbuild /home/micha/ocaml-3.10.0+beta/_build/ocamlbuild/ocamlbuildlightlib.cma
myocamlbuild_config.mli myocamlbuild_config.ml
myocamlbuild.ml /home/micha/ocaml-3.10.0+beta/_build/ocamlbuild/ocamlbuildlight.cmo
-o myocamlbuild
>> Fatal error: cannot open pervasives.cmi
Fatal error: exception Misc.Fatal_error
(Program not linked with -g, cannot print stack backtrace)


Exit code 2 while executing this command:

boot/ocamlrun boot/ocamlc -I boot -nostdlib
-I /home/micha/ocaml-3.10.0+beta/_build/ocamlbuild /home/micha/ocaml-3.10.0+beta/_build/ocamlbuild/ocamlbuildlightlib.cma
myocamlbuild_config.mli myocamlbuild_config.ml
myocamlbuild.ml /home/micha/ocaml-3.10.0+beta/_build/ocamlbuild/ocamlbuildlight.cmo
-o myocamlbuild

Nicolas Pouillard

unread,
Mar 7, 2007, 10:05:44 AM3/7/07
to micha
On 3/7/07, micha <mic...@fantasymail.de> wrote:
> Am Wed, 7 Mar 2007 14:12:32 +0000
> schrieb Joel Reymont <joe...@gmail.com>:
>
> >
> > On Mar 7, 2007, at 2:08 PM, micha wrote:
> >
> > > building with doesn't work here (Etch,
> > > 2.6.20.1,
> > > Athlon XP)
> >
> > You need to do 'make clean' beforehand but I still get this on Mac
> > OSX 10.4.8 Intel:
>

Switching from one mode to another require this:

$ make clean
$ ./build/distclean.sh

Then running configure is required.

--
Nicolas Pouillard

Nicolas Pouillard

unread,
Mar 7, 2007, 10:06:57 AM3/7/07
to Joel Reymont
On 3/7/07, Joel Reymont <joe...@gmail.com> wrote:
>
> On Mar 7, 2007, at 2:08 PM, micha wrote:
>
> > building with "./build/fastworld.sh" doesn't work here (Etch,
> > 2.6.20.1,
> > Athlon XP)
>
> You need to do 'make clean' beforehand but I still get this on Mac
> OSX 10.4.8 Intel:

You have this problem even after a full clean (make clean &&
/build/distclean.sh) ?


--
Nicolas Pouillard

Joel Reymont

unread,
Mar 7, 2007, 10:21:44 AM3/7/07
to Nicolas Pouillard

On Mar 7, 2007, at 3:01 PM, Nicolas Pouillard wrote:

> You have this problem even after a full clean (make clean &&

> ./build/distclean.sh) ?

That works fine, thanks!

Vu Ngoc San

unread,
Mar 7, 2007, 10:43:59 AM3/7/07
to Xavier Leroy
I've noticed that standard compilation (make world.opt) uses 333 Mb of
hard disk, while ./build/fastworld.sh uses much more: 443 Mb

anyhow both work :)

(Linux debian 2.6.18-4-686)

Paul Snively

unread,
Mar 10, 2007, 4:25:59 PM3/10/07
to Xavier Leroy
Dr. Leroy:

First, my deepest thanks to you and your colleagues for your
excellent, hard work on the Objective Caml system and its related
tools. I'm simultaneously learning a tremendous amount from
programming in O'Caml and having great fun doing so.

I'm curious as to whether there's any chance of having (some variant
of) the attached patch applied to the O'Caml 3.10.0 codebase. The
attached patch was provided to me by Alon Kama, maintainer of the
Ensemble process group communication system, in support of enabling
Ensemble 2.01 to work correctly on Mac OS X. As you know, Mac OS X is
a BSD-derived platform, hence makes the distinction between
SO_REUSEADDR and SO_REUSEPORT in socket options related socket
rebinding--a distinction that affects much server-oriented socket
code. So this patch should benefit any BSD-derived platform, not only
Mac OS X. Having said that, I cannot honestly say that I fully
understand what changes, particularly conditionalization, might be
necessary to ensure its proper use on all supported O'Caml platforms;
nor, of course, can I say whether making that determination with your
available staff, hardware, OS, and time resources is realistic at
all, let alone in the time remaining to deliver O'Caml 3.10.0. So I
appreciate your forbearance.

Many thanks and best regards,
Paul Snively

ocaml-3.08.3.the_patch.txt

Sven Luther

unread,
Mar 12, 2007, 7:24:38 AM3/12/07
to Xavier Leroy
On Wed, Mar 07, 2007 at 02:10:38PM +0100, Xavier Leroy wrote:
> - Two new 64-bit ports: to Windows 64/AMD64 and MacOS X/PowerPC 64.

What about 64bit support for linux/powerpc64 ?

Friendly,

Sven Luther

Mike Lin

unread,
Mar 16, 2007, 4:56:15 AM3/16/07
to Caml List
On 3/7/07, Xavier Leroy <Xavier...@inria.fr> wrote:
>
>
> - Much work on Camlp4, including a new API.


Has this broken a lot of stuff?? e.g. ocamlgsl has a camlp4 extension inside
it and will not compile under 3.10 ('Unbound value Quotation.add'). what are
we to do with existing extensions?

Nicolas Pouillard

unread,
Mar 16, 2007, 5:00:10 AM3/16/07
to Mike Lin

When Camlp4 is used as a library yes. The API is completly different.

--
Nicolas Pouillard

Gabriel Kerneis

unread,
Mar 16, 2007, 5:07:40 AM3/16/07
to caml...@yquem.inria.fr
Le Fri, 16 Mar 2007 04:54:28 -0400, "Mike Lin" <mik...@mit.edu> a
écrit :

> On 3/7/07, Xavier Leroy <Xavier...@inria.fr> wrote:
> > - Much work on Camlp4, including a new API.
> Has this broken a lot of stuff??

Yes, but once you understand the changes, it's much easier to use.

> e.g. ocamlgsl has a camlp4 extension
> inside it and will not compile under 3.10 ('Unbound value
> Quotation.add'). what are we to do with existing extensions?

Rewrite them. See http://gallium.inria.fr/~pouillar/camlp4-changes.html
for the common pitfalls, it helps a lot in moving from old to new
camlp4.

I guess Nicolas Pouillard will give you more details.

Regards,
--
Gabriel

signature.asc

Olivier Andrieu

unread,
Mar 16, 2007, 5:21:25 AM3/16/07
to Mike Lin
On 3/16/07, Mike Lin <mik...@mit.edu> wrote:

I'll be rewriting this part soon.

Peter Halacsy

unread,
Mar 17, 2007, 1:48:15 PM3/17/07
to Caml List

On Mar 7, 2007, at 2:10 PM, Xavier Leroy wrote:

> - A new tool: ocamlbuild, a compilation manager for OCaml projects.

Hi,
I've downloaded and succesfuly compiled and installed 3.10 (on Intel
MacBook Pro). Ocamlbuild is a great tool!

I only wonder how I can build a cmxa file from several ml files.
Should I define a custom target or something like that?

peter


Nicolas Pouillard

unread,
Mar 17, 2007, 1:55:41 PM3/17/07
to Peter Halacsy

Just write a .mllib file with the contents of your library.

$ cat foo.mllib
Bar
Baz

$ ocamlbuild foo.cma foo.cmxa

If you have a main module (Foo) and want a library from it, it will
make a library with the sorted transitive closure from Foo.

$ ocamlbuild foo.cma foo.cmxa

--
Nicolas Pouillard

Peter Halacsy

unread,
Mar 18, 2007, 3:59:10 AM3/18/07
to Caml List

On Mar 17, 2007, at 6:54 PM, Nicolas Pouillard wrote:

>> I only wonder how I can build a cmxa file from several ml files.
>> Should I
>> define a custom target or something like that?
>
> Just write a .mllib file with the contents of your library.
>

Thanks, it works. I was stupid, sorry for the question. Is there any
support in official ocaml to install libraries? Or ocamlfind is the
right tool?

peter

Nicolas Pouillard

unread,
Mar 18, 2007, 6:05:14 AM3/18/07
to Peter Halacsy
On 3/18/07, Peter Halacsy <pe...@halacsy.com> wrote:
>
>
> On Mar 17, 2007, at 6:54 PM, Nicolas Pouillard wrote:
>
> Is there any support in official ocaml to install libraries?
Not yet (not in 3.10)

Oliver Bandel

unread,
Mar 20, 2007, 4:02:37 PM3/20/07
to caml...@inria.fr
On Wed, Mar 07, 2007 at 02:10:38PM +0100, Xavier Leroy wrote:
[...]

> - Unix: new function Unix.isatty.
[...]

Yes, that's nice.
I waited for this function for a longer time; is good for a lot of things.
For I tool I just write, it would be good to have this function
available. :)

When will OCaml 3.10 be available as a well tested, stable release?

Ciao,
Oliver

0 new messages