Previous week Up Next week


Here is the latest Caml Weekly News, for the week of May 15 to 22, 2007.

  1. Commercial users of functional programming: call for talks
  2. OCaml release 3.10.0
  3. ODT: OCaml Development Tools 1.0.1 released
  4. Play with my balls

Commercial users of functional programming: call for talks


Simon Peyton-Jones announced:
This is just to remind you about the closing date for offers of talks at the 

        2007 Commercial Users of Functional Programming workshop 

The closing date is 1st June, in a couple of weeks.  The workshop itself is on 
Oct 4, co-located with ICFP at Freiburg, Germany. 

CUFP is a workshop for people who use functional programming (in some guise), 
because it's the best way to get the job done, rather than because it's a cool 
research topic. 

It's a very informal workshop.  No papers, no proceedings -- just stand up and 
tell us how it is for you.  But you have to tell us in advance so we can plan 
the day.  Please get in touch with me or Kathleen Fisher (details at the URL 

You can also nominate someone else.  That's even easier.  (But ask them 

And plan to come, too!

OCaml release 3.10.0


Xavier Leroy announced:
I'm happy to announce the release of version 3.10.0 of Objective Caml 
(the "ascension day" release). 
The main novelties in this release include: 

* Instance variables in classes can be declared virtual and 
  implemented in subclasses. Syntax is val virtual v : t. 

* Printing of stack backtraces on uncaught exceptions, previously 
  available only for bytecode-compiled programs, is now supported for 
  native-code programs as well. (Supported on Intel/AMD and PPC, in 32 
  and 64 bits). 

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

* The Camlp4 preprocessor was partially reimplemented and offers a 
  new, more modular API for syntax extensions. (Users of third-party 
  syntax extensions may wish to stay with OCaml 3.09 until these 
  extensions are ported to the new API.) 

* A new experimental tool, ocamlbuild: a compilation manager that 
  automates the building of OCaml applications and libraries. 

A more detailed list of changes is appended. 

Sources, documentation and Windows binary distributions are available 
from the usual place: 

MacOS X binaries are not yet available. 


- Xavier Leroy 


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 

New tools: 
- ocamlbuild: compilation manager for OCaml applications and libraries. 
  See draft documentation at 
* 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. 

- 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.
Joel Reymont asked and Xavier Leroy answered:
> Does it mean sources can be retrieved from CVS and just built,  without 
> needing the 3.10 release tag? 

No.  The CVS trunk is most probably broken, as all recent bug-fixing 
was done within the release branch. 
A quick guide to tags and branches in the OCaml CVS: 

- Releases have tags of the form "ocamlNNNN", e.g. "ocaml3100" for 3.10.0 

- Release branches (where bug-fixing takes place) have tags of the form 
  "releaseNNN", e.g. "release310" for the 3.10 branch 

As of today, if you're tracking the CVS, I recommend using the branch 
"release310", or "release309" if you need the old Camlp4.

ODT: OCaml Development Tools 1.0.1 released


Emmanuel Dieul announced:
The new version of ODT has been released this morning. It is ready 
for OCaml 3.10 and its new AST (e.g. virtual fields). 

Everything is available on the ODT website: 
The "overview" page explains its current main features, and the 
"install notes" page details some requirements and incompatibilities 
with older versions of OCaml. 
Some screenshots are also available to show the GUI. 

Please, don't hesitate to try ODT (for personal or professional use) 
and forward this mail to anyone which could be interested in.

Play with my balls


Jon Harrop announced:
Real-time 2D rigid body simulation with OpenGL visualization in under 400 
lines of OCaml code: 

Handles 100 balls with sub-centisecond accuracy on my machine.
Ken Rose asked and Mathias Kende answered:
> I'm using a 2GHz AMD64x2, 
> and getting about 2fps from it.  Anybody have any idea what might be 
> going wrong? 

Contrary to what is (was in fact) written on the web site, you should 
compile the software with ocamlopt rather than with ocamlc. 
I don't think that it relies heavily on the graphic card's driver.

Using folding to read the cwn in vim 6+

Here is a quick trick to help you read this CWN if you are viewing it using vim (version 6 or greater).

:set foldmethod=expr
:set foldexpr=getline(v:lnum)=~'^=\\{78}$'?'<1':1

If you know of a better way, please let me know.

Old cwn

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.

Alan Schmitt