Previous week Up Next week


Here is the latest Caml Weekly News, for the week of 13 to 20 April, 2004.

  2. ocaml-sqlite 0.3.5
  3. Camomile-0.5.0
  4. Godiva
  5. cf-0.1 (pagoda core foundation)
  6. ocamlconf-0.4 release
  7. ocaml-freetds release
  8. About the UTF-8 bug when compiling OCaml 3.07pl2 on fedora
  9. ocamljitrun initial release

Christophe Troestler said and Xavier Leroy answered:
> The domain will be available in a little more than one month (if Mr J
> Assange really lost interest, he will not renew it).  Maybe one should
> consider buying it, or rather -- to avoid the same thing to happen
> again -- it may be better that INRIA buys it and gives it back to the
> community (some people were ready to give machines and maintenance
> time as I understood it).

Please don't bother Julian.  He contacted me recently about
transferring the ownership of to INRIA before the current
registration expires.  In parallel, Vincent Simonet and Maxence
Guesdon are working on a (long overdue) redesign of the site.  If everything goes well, in the
forthcoming months we should have a good and up-to-date Web site
accessible through the three addresses (, and

ocaml-sqlite 0.3.5

Evan Martin announced:
I fixed up Mikhail Fedotov's nice SQLite[1] bindings for OCaml, and
after I sent him the patch he offered to let me maintain it.  So I have
integrated my patch (and a few other cleanups) and released a new version.

You can get it at

Additionally, I have sent a patch to the ocamldbi developers, and
so hopefully SQLite support will be in the next release of ocamldbi.

[1] SQLite is a SQL engine available as a library.  It's good when you
need to use a database but don't want to require a MySQL (, etc.)
install.  See for details.


Yamagata Yoriyuki:
Camomile-0.5.0, a new version of Camomile, is available from

Camomile is a comprehensive Unicode library for OCaml.  Changes from
the previous version are,

* Internationalized Pervasives, Char, String, Buffer modules
* Search strings by matching collation
* Binding to ISO C Locale.
  - UChar.is_printable
  - Locale.current_locale, Locale.set_locale
  - CharEncoding.enc_name
* New encodings
  - iso_c_locale : the encoding specified by the current LC_CTYPE locale.
  - CP932
* Packed and unpacked libraries.

More information is available from our homepage

Also, I invite everyone interested in Camomile to join our mailing
Skaller asked and Shawn Wagner answered:
Skaller wrote:
> Yamagata Yoriyuki wrote:
> > * Search strings by matching collation
> > * Binding to ISO C Locale.
> I have a question here. The C locale concept does need
> a binding, unfortunately. However it is well known
> this is a seriously deficient hack, and the use
> of C locales should be strongly discouraged.

Extlib supports the standard C locale functions (setlocale, the ctype.h
character classification functions, strcoll, localeconv, etc.) It doesn't
try to work around any of the problems with the C locale model, but it's
better than nothing.


Regarding package management, Skaller said and William Lovas answered:
> We can do both. First hack together any crappy code that works,
> then make something elegant -- using the crappy code to help
> bootstrap the effort.
> How do we do this? Well, one thing must NOT be crappy,
> even for the crappy code -- and that is the specification.
> Writing a package manager isn't the problem, IMHO.
> The problem is defining what a package IS, where the pieces go,
> and how dependencies are stated.. etc etc.

This is essentially the goal of the GODIVA project (formerly GODOR) that
Owen Gunden and i are working on:  We're grafting a sensible specification
onto the frontend of GODI so that it's easier for developers to make
packages.  In the future, this specification could stay around if some
other underlying backend technology supplanted GODI, and all that would
require updating would be the backend of GODIVA.

A (very!) preliminary release of GODIVA is available as the GODI package
called godor.  In a few days, Owen and i will be packaging up a new release
incorporating the ideas from this paper:

(And this time, "a few days" really means "a few days" -- we have a hard
(academic) deadline to meet!)

More information is available on the GODIVA website (but the paper is more

cf-0.1 (pagoda core foundation)

James Woodyatt announced:
I am releasing an update to the Core Foundation library of my Pagoda
project (which contains other foundation libraries yet unreleased).
The big deal is that I fixed the Cf library so it builds and works on
Suse Linux 9.0 as well as Mac OS X 10.3, and the socket extensions now
contain support for UDP (both IPv4 and IPv6, as well as both unicast
and multicast).  The license is *still* the 2-clause BSD-style (I *do*
live in San Francisco, you know? the neighborhood has a reputation to

As before, the new distribution is available at either of the following

And the online documentation (generated by ocamldoc) can be found here:

There is still no programmer's guide.  If people start using this
library, then maybe I'll write one.  As far as I can tell, nobody else
is using this library yet.  (If the terms of the BSD license are a
problem for you, then I'm willing to negotiate.)

----- README -----

Highlighted features include:

- Functional streams and stream processors (extended).
- Functional bootstrapped skew-binomial heap.
- Functional red-black binary tree (associative array).
- Functional sets based on red-black binary tree.
- Functional real-time catenable deque.
- Functional LL(x) parsing using state-exception monad.
- Functional lazy deterministic finite automaton (DFA).
- Functional lexical analyzer (using lazy DFA and monadic parser).
- Functional substring list manipulation (message buffer chains).
- Gregorian calendar date manipulation.
- Standard time manipulation.
- System time in Temps Atomique Internationale (TAI).
- Unicode transcoding.
- Extended socket interface (supports IPv6 and UDP w/multicast).
- Universal resource identifier (URI) manipulation.
- Extensions for I/O event multiplexing (with

Note: see the ISSUES file for a list of open problems in this release.

===== New for Version 0.1 =====

Highlights of the changes:

+ Compile and pass self-tests on Suse Linux 9.0.
+ Unified [sequence] and [accumulate] monad functions in [Cf_seq].
+ Added [Cf_exnopt] module with a simple convenience type.
+ New monadic constructors for [Cf_seq] and [Cf_flow] types.
+ Moderate overhaul of [Cf_gadget] (fix bugs, design problems).
+ Fix portability bugs in [Cf_socket] and cognates.
+ Add support for UDP, IP multicast and network interface selection.
+ Fix bug in [Cf_poll.idle] event polling (and give a timestamp).
+ Slightly better self-tests for [Cf_socket].

Note: see the CHANGES file for technical details about these changes.

===== Required Components =====

This library requires the following external components:

- Objective Caml (v3.07+2 or newer)
- Findlib (tested with v0.8.1 and v1.0.4)

Principle development was on Mac OS X 10.3.  The final version of this
library also compiled successfully without warnings and self-tests on
Suse Linux 9.0 on x86-32.  Other platforms with POSIX-like environments
should require only a minimal porting effort.

One major open issue: the extended socket interface is broken under
(The author invites help porting the library to other environments.)

===== Building =====

No 'configure' script is provided.  Compile the library with:

    $ make default

Compile both bytecode and native versions with:

    $ make default opt

Execute tests for byte and native versions with:

    $ make test test.opt

Install the library with ocamlfind using:

    $ make install

Uninstall the library with ocamlfind using:

    $ make uninstall

Make the reference documentation with ocamldoc using:

    $ make doc

ocamlconf-0.4 release

Kenneth Knowles announced:
OcamlConf version 0.4


Direct links to tarballs:

Summary of OcamlConf:

OcamlConf is a build helper for ocaml programs.  It takes a '' and
creates a 'configure' script.  This script prompts for compile time toggles and
variable settings, ensures libraries exist, etc, and outputs an
automatically generated makefile.

Changes in this version:

* Large improvements in mixed C/Ocaml libraries

* Removed dependency on dynamically loaded code. Now instead of using the
  toplevel it uses the compiler. This, among other fixes, should make
  ocamlconf work on Cygwin.

* Removed "rootdir" from the standard configuration parameters; "prefix"
  should be used at configure time, or use DESTDIR at "make install" time.

* Changed Makefile to support "make DESTDIR=... install" style used by
  autoconf, Gentoo's ebuild.

* Fixed Makefile so environment variable OCAMLFIND_DESTDIR is obeyed

* Added "cleaned" parameter to MakeMake.output for wiping up emacs backups,
  etc (arbitrary glob).

* Added "reinstall" target that is basically "uninstall, install." (very
  convenient when developing a findlib package)

ocaml-freetds release

Kenneth Knowles announced:
OCaml-FreeTDS initial 0.1 release

OCaml-FreeTDS is a binding to the ct-lib component of the FreeTDS library, for
accessing Sybase and Microsoft (or other TDS) database servers.

If you don't know what "ct-lib" means then you should probably not be using
this, but rather OCamlDBI, which I've written a working Dbi_freetds for (and am
submitting simultaneously, so it is not in OCamlDBI yet)


Direct tarballs:
Richard Jones added:
The OCamlDBI driver is now in CVS:

About the UTF-8 bug when compiling OCaml 3.07pl2 on fedora

Maxence Guesdon said:

as more and more of our users tell us about this bug, I think I must
make an announce.

On fedora, when compiling OCaml 3.07pl2, the compilation fails in the ocamldoc
directory, because of the preprocessing script used to remove DEBUG lines
in ocamldoc sources.

This is already fixed in the CVS (by adding LC_ALL=C in the script).
I attached the new script remove_DEBUG:


#(*                            OCamldoc                                 *)
#(*                                                                     *)
#(*            Damien Doligez, projet Moscova, INRIA Rocquencourt       *)
#(*                                                                     *)
#(*  Copyright 2003 Institut National de Recherche en Informatique et   *)
#(*  en Automatique.  All rights reserved.  This file is distributed    *)
#(*  under the terms of the Q Public License version 1.0.               *)
#(*                                                                     *)

# $Id: remove_DEBUG,v 1.3 2004/04/15 16:18:52 doligez Exp $

# usage: remove_DEBUG <file>
# remove from <file> every line that contains the string "DEBUG",
# respecting the cpp # line annotation conventions

echo "# 1 \"$1\""
LC_ALL=C sed -e '/DEBUG/s/.*//' "$1"

ocamljitrun initial release

Basile Starynkevitch announced:
I coded and released ocamljitrun, a just in time translator of Ocaml
bytecode into machine code (on x86, and perhaps sparcv9 & PowerPC in
32 bits mode).

You need the latest Ocaml from CVS (ocaml 3.07 won't work).

You need the latest GNU lightning (from its CVS).

You can get it from the bazar-ocaml directory under CVS. In a couple
of hours, you should be able to get it there or at:

In particular, read the README file there.

(you need jitinterp.c cvs id $Id: jitinterp.c,v 1.6 2004/04/19
14:55:01 starynke Exp $)

It runs ocamlc & ocaml apparently ok, and many other tests. I feel it
is mature enough to be tried by others on x86 platform.

I didn't tested it on Sparcv9 or PowerPC (in 32 bits mode only), but
it might run on these, since GNU Lightning is portable on
x86+Sparc+PPC (in 32 bits mode).

Ocamlrunjit won't run on an AMD64 (i.e. an Opteron) in 64 bits mode.

It should be the case that ocamljitrun may be a plug-in replacement of

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}$'?'&lt;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