list of recently released ocaml software

From: Toby Moth (
Date: Thu Jan 28 1999 - 23:01:38 MET

Date: Thu, 28 Jan 1999 22:01:38 GMT
Message-Id: <>
From: Toby Moth <>
Subject: list of recently released ocaml software

Dear all -

I think that the "Looking for a nail" thread really hit the spot as well
as the nail. Everyone seemed to either have something that they wished
to see developed, or else some piece of code which they had been
nursing secretly. Well, here is what I would like to see developed ...

I (and I am certainly not the first) think there ought to be an archive
slightly more more open than the Bazaar where
code can be put. It would fill my heart with gladness if this
place were called The Hump. We
could possibly even have a separate announce homepage
(something like freshmeat).

Could I develop/maintain this archive ? Probably not :(

Still, as a feasibility study I have compiled a list of everything
announced between now and the
beginning of December. The two major flurries of announcing activity were
(not surprisingly) mid-December when 2.01 came out and also in the
last few days in response to the nail on the head thread. Over this period
something was released to the ocaml community every couple of days.

Summaries, addresses and dates for these releases
have been chopped out and included below to make a posting which is hopefully
useful enough to justify its length. I have also made some attempt at
classifying the various releases. The subject index is pretty arbitrary, but
we all have to start somewhere. Please don't be offended that Ocaml2.01 gets
in under Ocaml tools/Extensions. Also, blame Daniel de Rauglaudre and not me
for the fact that one of the subjects is Genealogy.

I have quoted from one posting which wasn't announcing anything since
it seemed relevant, and included one entry (the last) to an emacs
extension by Didier Remy which I don't think was ever mentioned on the
mailing list. Francois Pottier, the prolific Markus Mottl and I were the
only people keen enough to announce something on someone else's behalf.

Feel free to post me with errata, omissions, comments and especially
more release information to include in this list.
If more stuff comes in and no-one objects I may post a list
once every couple of months - until The Hump comes into being, that is.

Toby Moth

Subject index:
* Ocaml tools/Extensions
* Graphics
* DB
* Web
* Interpreter
* Data structures
* Markup & pretty printing
* Expect
* String
* Games
* Genealogy



--- * Ocaml tools/Extensions From: Cuihtlauac ALVARADO <> Date: Thu, 28 Jan 1999 Where: Says: We (J.-F. Monin <> and I) made a new small ocamltags. It creates not too bad tags for classes, types, etc.

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

--- * COM/CORBA From: Xavier Leroy Date: Thu, 28 Jan 1999 Where: N/A Says: I am currently working on a COM binding for OCaml. The development is going relatively smoothly so far. In particular, OCaml classes and objects provide a good match for COM's interfaces -- nicer than what they have to do in Haskell due to lack of OO support.

However, some problems remain, not the least of which being writing a parser for this #$^#!! Microsoft IDL language, which seems to double in size approximately every year.

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

--- * COM/CORBA From: David McClain Date: Thu, 28 Jan 1999 Where: Says: I have a minimal interface for COM already in place for OCAML 2.01. I use it to connect with a COM-based universal scientific data server. I can handle the OLE types of interest to a scientist... (but not yet for things like UUID's and other more bizarred data types). I have to admit, that in order to do this I had to stoop to C++ because of the many types of ints and floats that are likely to arise, and also because of the need to access the SAFEARRAY data structure. I don't know how to do this yet in OCAML... It would be really great if OCAML could also be used for systems level programming chores like this, and for writing hardware control software...

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

--- * COM/CORBA (Cross-reference) From: Jon Moore <> Date: Wed, 27 Jan 1999 Where: Says: If anyone decides to pick up on this one, I would suggest having a look at: "Scripting COM components in Haskell," by Simon Peyton-Jones and Erik Meijer at

I know similar efforts are ongoing for SML/NJ, and would love to see OCaml have this too.

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

--- * Ocaml tools/Extensions From: Jean-Christophe Filliatre <> Date: Wed, 27 Jan 1999 Where: Says: To get Emacs tags for ocaml, a quick solution is the following :

====================================================================== find . -name "*.ml*" | sort -r | xargs \ etags "--regex=/let[ \t]+\([^ \t]+\)/\1/" \ "--regex=/let[ \t]+rec[ \t]+\([^ \t]+\)/\1/" \ "--regex=/and[ \t]+\([^ \t]+\)/\1/" \ "--regex=/type[ \t]+\([^ \t]+\)/\1/" \ "--regex=/exception[ \t]+\([^ \t]+\)/\1/" \ "--regex=/val[ \t]+\([^ \t]+\)/\1/" \ "--regex=/module[ \t]+\([^ \t]+\)/\1/" ======================================================================

It is very useful in practice. (It does not create tags for classes too.)

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

--- * Ocaml tools/Extensions From: Jacques GARRIGUE <> Date: Wed, 27 Jan 1999 Where: Says: I have put a snapshot of the caml-mode at

Along with some improvements to the emacs mode itself, it includes an ocamltags script, thanks to ITZ. This one does some clever parsing to give a reasonable amount of tags, including methods.

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

--- * Graphics From: Pascal Cuoq <> Date: Mon, 25 Jan 1999 Where: Says: Mlgtk provides bindings between Gtk (the GIMP ToolKit, see for info) and Ocaml (if you read this list you don't need a link). David Monniaux started the project sometime in 1997 (at a time when the Gtk interface was still changing daily in incompatibles ways).

Although mlgtk is not quite complete, I think it is time for "going public", at least to avoid any more "what's up with mlgtk? are they dead?" kind of messages in this list.

So (Miles Egan, this is for you!) if you have time to waste, you can download it, test it, propose patches, tutorials and other improvements for the real public announcement of mlgtk which should occur within a couple of weeks.

In particular, something which could afford to be more polished is ease-of-installation. But try it out (configure is for wimps anyway)!

A snapshot is always present there: but I can't tell you how up-to-date it tends to be, as I don't use it. You can also use this link: which point right into my version of the CVS tree.

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

--- * DB From: Date: Mon, 25 Jan 1999 07:36:26 -0600 Where: N/A Says: I have written postgresql bindings as well as ODBC bindings that work with MySQL's iODBC (and any other ODBC database) if anyone's interested. They need some work, but it's a start.

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

--- * Web From: Jean-Christophe Filliatre <> Date: Mon, 25 Jan 1999 Where: Says: Regarding web tools, Daniel de Rauglaudre and I freely distribute a (very) small library to write CGI in ocaml. It is available here :

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

--- * DB From: Gerd Stolpmann <> Date: Tue, 26 Jan 1999 Where: Says: I've put the current EXPERIMENTAL version of my DBMS interface to

It is a driver written in (C-)embedded SQL; the details of the driver are designed for the Adabas D DBMS, but it should be not so hard to derive drivers for other DBMS. The driver has a generic part that is DBMS-independent and that can be coupled with a low-level part doing the actual connection to the DBMS.

In a few weeks there will be a driver for Informix DBMS, too.

For the details, see the README file in the package.

A demo version of Adabas D for Linux can be downloaded from SuSE at (37 megabytes). At this location there is documentation, too. The demo version is restricted (size of DB + number of users). Please note that I've no commercial interest in announcing that; it's only that I had good experience with this particular DBMS in the past.

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

--- * DB From: Trevor Jim <> Date: Mon, 25 Jan 1999 Where: N/A Says: And I've written LDAP bindings if anyone's interested.

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

--- * Web From: Markus Mottl <> Date: Mon, 25 Jan 1999 Where: Says: Ah, apropos web server: Daniel de Rauglaudre has already written a small but beautiful version of a basic web server. Get it from:

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

--- * Interpreter From: Gerd Stolpmann <> Date: Fri, 22 Jan 1999 Where: Says: In 1997 I began a project that was intended to simplify ad-hoc usage of given C libraries in Ocaml. I have never completed it because of fights with the garbage collector, and because I had doubts if it was really useful.

The idea was to read a given C header file and automatically generate stub functions and other needed auxiliary functions dealing with the type mapping between C and Ocaml. As far as I can remember the program contains a lexer and a parser limited to header files, i.e. it cannot parse function bodies, but I think this is simple to add.

You can find the program on

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

--- * Interpreter From: Francois Pottier <> Date: Sat, 23 Jan 1999 Where: Says: Patrick Cousot has written a generic abstract interpreter in OCaml. It is available from

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

--- * Graphics From: Pierre Weis <> Date: Fri, 22 Jan 1999 Where: Says: We (François Pessaux, Jun Furuse, and Pierre Weis) are designing a library to load/save images in Caml. We plan to release it very soon in the bazar-ocaml directory of the Caml ftp distribution. For the time being this library is written in Objective Caml only. Do you need a Caml Light version ?

PS: The library handles BMP, gif, but not yet the ... format!

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

--- * Data Structures From: Markus Mottl <> Date: Tue, 19 Jan 1999 Where: Says: Just a short time ago I purchased Chris Okasaki's book "Purely Functional Data Structures", which contains a great number of interesting implementations of rather new data structures - unfortunately in SML and Haskell only.

To make life easier for OCAML-programmers, I have started to translate the sources from SML to OCAML - even applying lazy evaluation (module "Lazy") as proposed by the author.

Until now, all sources until chapter six have been ported. You can download them from:

During the next days (if I have time), I will try to make the rest of the sources available. If you want to help - mail me!

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

--- * Interpreter From: Christian Lindig <> Date: Mon, 18 Jan 1999 Where: Says: (long message .. have cut out most of it ) OCamlLex generated lexers often need some state information which must survive the actual call of the lexer from a parser. Examples for this kind of state are the current source line and column or some context information. Lexing HTML for example requires information whether the scanner reads tokens inside of a <tag attribute="value"> or outside of it. The meaning of quotes is totally different in- and outside of tags and thus the lexer must store some informations about its current context.

This information is typically stored in global variables inside the lexer. The generated lexer already uses and passes around a value of type `lexbuf' for its internal purposes. This value is accessible inside semantic actions of lexer rules. I would like to propose an extended data type for lexbuf which also permits to store user data inside of it.


Then gives adjusted address in subsequent message

... Sorry! The URL for the new Lexing implementation in my previous mail was wrong. The correct URL is:

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

--- * Ocaml tools/Extensions From: Trevor Jim <> Date: Wed, 13 Jan 1999 Where: Says: Ocamldot is available from

Ocamldot generates program dependency graphs for ocaml programs.

The dependency graph output by ocamldot can be rendered by a separate program, dot. Dot is freely available from

Ocamldot was derived from ocamldep, and is used in much the same way:

ocamldot *.ml >

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

--- * Web From: Gerd Stolpmann <> Date: Tue, 5 Jan 1999 Where: Says: after two weeks of work I can announce JavaCaml, a reimplementation of the Objective Caml bytecode interpreter in Java. As you expect after this introduction, JavaCaml is slow, it is even very slow. But it is still usable for many purposes that only want to provide a user interface for a background service.


I have made a homepage with much more information about JavaCaml, the sources, and even two demos:

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

--- * Markup & pretty printing From: Christian Lindig <> Date: Tue, 5 Jan 1999 Where: Says: It is my pleasure to announce my simple Extensible Markup Language (XML [1]) parser and pretty printer `Tony' written in Objective Caml. The parser is a spare time project and does not comply to the full XML standard. The pretty printer is based on the pretty printing algebra proposed by Philip Wadler [2] in his paper "A Prettier Printer". His lazy implementation was adopted for the strict evaluation of OCaml and may be interesting in its own right. The pretty printer module is available in a separate library `mylib'.

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

--- * Expect From: Ian T Zimmerman <> Date: Fri, 1 Jan 1999 00:21:05 -0800 Where: Says: mlexpect 0.9 has been uploaded to

All comments of any kind are heartily welcome.

I quote the README file:

This is mlexpect, a feeble attempt to to the same thing in ocaml as Don Libes' expect program does in Tcl. ... <comment from toby moth> <<I didn't know what expect does, I have included the following additional quote from John K. Ousterhout's Tcl book p.22:

expect is one of the oldest Tcl applications ad also one of the most popular. It is a program that "talks" to interactive programs. Following a script, expect knows what output can be expected from a program and what the correct responses should be.>>

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

--- * String From: Mark Hayden <> Date: Sun, 27 Dec 1998 Where: Says: You'll also find support for management of sub-strings in the Ensemble group communication toolkit written in Ocaml. ... which can be found at

The "substring" module are in the buffer subdirectory of the Ensemble distribution.

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

--- * Games From: Daniel de Rauglaudre <> Date: Mon, 28 Dec 1998 Where: Says: New release 1.01 of olibrt: games under X windows written in Ocaml.

You need Ocaml and Camlp4 to compile.

Games: * abalone: a strategy game * column: an arcade game like "tetris" * sht: a game with cards * sokoban: a maze game * vie: game of life * welltris: "tetris" in 2.5 dimensions ... Distribution: * Click on my home page below and then "Olibrt".

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

--- * Ocaml tools/Extensions From: Jacques GARRIGUE <> Date: Tue, 15 Dec 1998 Where: Says: OCamlBrowser 2.01 is now available.

OCamlBrowser provides the same functionality as LablBrowser for the original Objective Caml system. You need Objective Label to compile it.

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

--- * String From: Christian Lindig <> Date: Mon, 21 Dec 1998 Where: N/A Says: String processing includes scanning and splitting strings and is often done using regular expressions. Inspired by parser combinators I have written a light weight library of `lexer combinators' which uses an efficient internal representation of substrings: a substring is a (int * int) pair. The first element denotes the index of the first character and the second the length of the substring. The interface of the module is attached - mail me for the code.

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

--- * Ocaml tools/Extensions From: Albert Cohen <> Date: Wed, 16 Dec 1998 Where: Says: Tuareg 1.33 is now available, with support for OCaml 2.01.

It's goal is to provide a good support for Caml editing and debugging. ... See the README file and on-line help for details. Sorry, the right URL for Tuareg home page was

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

--- * Ocaml tools/Extensions Date: Tue, 15 Dec 1998 16:08:31 +0900 From: Jacques GARRIGUE <> Where: Says: As some would have expected, we release

The Objective Label Trilogy, version 2.01

Containing as before

* Objective Label O'Caml + labels + defaults + variants + polymorphic methods * LablTk Easy to use Tcl/Tk interface * LablBrowser Interface browser and type-aware editor ... More information on the Trilogy and LablGL at (soon)

Source at

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

--- * Markup & pretty printing From: Basile STARYNKEVITCH <> Date: Fri, 11 Dec 1998 Where: N/A Says: For those that are interested, I coded (in OCAML) a tiny style for prettyprinting OCAML in LOUT. ... If you don't know what LOUT is, look at "". In short, LOUT is a text formatter (similar to LaTeX in spirit) able to format part of text with arbitrary program filters. Lout generates (color) PostScript & PDF. Lout is freely available with sources (GPL-ed), written by Jeff Kingston ( ... If you want this tiny stuff (caml2lout.mll in Ocaml & camlprint in Lout), ask me. I'll probably be able to give it (but I have no ftp site, sorry).

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

--- * Genealogy From: Daniel de Rauglaudre <> Date: Wed, 9 Dec 1998 Where: Says: GeneWeb is a genealogy software with a Web interface. It can be used off-line or as a Web service.

The release 1.09 of GeneWeb is available, compilable with Ocaml 2.01 and Camlp4 2.01.

All infos about GeneWeb and downloading address at:

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

--- * Ocaml tools/Extensions From: Daniel de Rauglaudre <> Date: Wed, 9 Dec 1998 Where: Says: Camlp4 is a preprocessor-pretty-printer for Objective Caml.

The version 2.01, compatible with Ocaml 2.01 has been released.

All informations and downloading address at:

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

--- * Ocaml tools/Extensions From: Xavier Leroy <> Date: Wed, 9 Dec 1998 Where: Says: Objective Caml 2.01 has just been released -- right in time for Christmas. This is a bug-fix release that corrects all known 2.00 bugs, and adds some convenience features (see below for a complete list of changes) as well as a couple of new ports (Linux/StrongARM, IRIX/-n32).

It is available from the usual places:

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

--- * Ocaml tools/Extensions From: Didier Remy <> Date: Wed, 2 Dec 1998 Where: N/A Says: ( not on caml mailing list ) By the way I made my own addition to the caml-mode in order to highlight errors in the toplevel interactive loop as well, and a few other commands to send several phrases to the toplevel, but stopping on the first error encountered.

I have been using it for a while and it seems to work well. This could be intergrated in the standard distribution.

Currently, I load these extra functionalities in a file ocaml.el that itself loads the other files of the caml-mode. If the code were integrated in the caml-mode distribution it would better be located in the files inf-caml.el and caml.el.

This ocaml.el file is attached, if any of the caml-mode maintainers would like to integrate some of this in the standard style (or any one else use it).


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

This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:19 MET