Previous week   Up   Next week

Here is the latest Caml Weekly News, weeks 20 august to 3 september, 2002.

1)  OCaml 3.06 bug-fix release
2)  LablGTK 1.2.5 and windows binaries
3)  Announcing CIL: Infrastructure and tools for C program analysis and 
4)  Ocaml-Weblib?
5)  OCamOLE pre.3 and OCam'OLE pre.3b
6)  Music in Caml
7)  Toplevel wrapper for OS X
8)  SpamOracle
9)  Cameleon 1.0
10) OCaml-Win32 release 0.02
11) Cash 0.20
12) ocamlgsl release
13) Data structure library
14) PXP 1.1.92 (development version)

1)  OCaml 3.06 bug-fix release
Xavier Leroy announced:

A couple of embarrassing bugs crept into Objective Caml 3.05, so we've
just released version 3.06, available from the usual place:

This is essentially a bug-fix release, with no new features.  Users of
3.05 are strongly encouraged to upgrade to 3.06.

For general info on Objective Caml, see  Bug
reports go to, messages for the implementors to, and general discussions to the mailing-list, or the or comp.lang.functional


- Xavier Leroy, for the Objective Caml team.

Objective Caml 3.06:

- Apply value restriction to polymorphic record fields.

Run-time system:
- Fixed GC bug affecting lazy values.

Both compilers:
- Added option "-version" to print just the version number.
- Fixed wrong dependencies in .cmi generated with the -pack option.

Native-code compiler:
- Fixed wrong return value for inline bigarray assignments.

- Unix.getsockopt: make sure result is a valid boolean.

- ocamlbrowser: improved error reporting; small Win32 fixes.

Windows ports:
- Fixed two problems with the Mingw port under Cygwin 1.3.

2)  LablGTK 1.2.5 and windows binaries
Jacques Garrigue announced:

Since Objective Caml 3.06 was released, and it is not binary
compatible with 3.05, I have updated LablGTK and LablGL windows

Note that lablgtk sources were also updated, the main goal being to
allow interactive use on windows: toplevel threads are supported  
through a mechanism of call forwarding. For non-windows users, other
changes are only incremental.

3)  Announcing CIL: Infrastructure and tools for C program analysis and 
George Necula announced:

We have released a stable version of CIL. It consists of a complete C
parser (both for ANSI C and also the GCC and Microsoft Visual C extensions),
pretty-printer and an intermediate language that hides most of the dark
corners of the C language. This allows you for example to implement a
Stackguard instrumentation for your programs in about 80 lines of code and
apply it to ugly code such as the Linux kernel modules. CIL can impersonate
both the GCC and MSVC compilers allowing you to use your existing Makefiles
and can also merge your entire program into one source file for a quick
whole-program analysis.

CIL has been tested on many millions of lines of code, including the Linux
kernel and GIMP.

More information, a manual, ocamldoc API documentation and the distribution
can be found at

4)  Ocaml-Weblib?
Oliver Bandel asked and Gerd Stolpmann answered:

> Hello,
> is there a Library for parsing/analysing Webpages?
> I want to write a tool, that helps me searching
> on websites, and I don't want to rewrite such a library from scratch.
> Is there something for Ocaml, similar (or even better :))
> like Web-/CGI-Libs for Perl?

You may have a look at ocamlnet, 
It includes an HTML parser, and CGI support. For HTTP operations, netclient may be helpful.

5)  OCamOLE pre.3 and OCam'OLE pre.3b
Nicolas Cannasse announced:

A new release of OCam'OLE is available at :

- fixes a bug when using from the toplevel
- fixes a static interface generation bug with mixed guid / enum's

A precompiled DLL ( compatible with 3.04 to 3.06 ) is available for users
who does not have MSVC++ installed.

Nicolas Cannasse


OCam'OLE enable you to control remote COM objects with OCaml and is provided
with OLEGen, a program that generate ML/MLI static type interface from the 
OLE Type Libraries.

The current distribution include a sample that demonstrate the combined
usage of OCam'OLE and OLEGen to enable the creation and the control of an MS
Excel sheet in a few lines of OCaml code.

then announced again:

Each new day comes with its new release of OCam'OLE :)
Alright, all discovered bugs have been fixed, please update it at :

6)  Music in Caml
Diego Olivier Fernandez Pons remarked:

I found this surfing on the web :

The Ensemble Juke Box (EJB) is a distributed audio application
designed to exchange high-quality audio data bewteen users on local
area networks. The jukebox can read digital audio data from some cdrom
devices, and save it in files for later playback or play it directly
to an audio output device. This application makes use of the Ensemble
group communications system to connect multiple users on the network,
and to provide fault-tolerant behavior during network outages or
computer failures. EJB is a real-time system written in
Objective-Caml(a dialect of ML).

7)  Toplevel wrapper for OS X
Steve Harris announced:

Here's a little GPL'ed  OS X friendly (Cocoa) wrapper for the Ocaml
a lot like the Windows wrapper. Also supports saving and loading   
session history as plain text ocaml source files.  The toplevel itself
isn't included,
the program should ask for the path to the interpreter right away when
first run.

The link to the disk image is at
(only way I could get the download to work is to use Explorer, right
click the link on that page and choose "save to disk" -  sorry about
the crummy web page)

I've compiled it for OS X 10.2 (Jaguar), not sure what previous
versions of OS X it will work on.
The full ProjectBuilder project is included though so you should be
able to just hit "compile" from PB
to compile it yourself.  I'd be interested to know if that doesn't work.

Bugs, patches, suggestions etc are welcome, send to

8)  SpamOracle
Xavier Leroy announced:

[ Spam filtering is rather off-topic for this list, but this tool is
  written in OCaml, and needs adventurous users of the kind found on
  this list to be tested... ]

Are you tired with spam messages cluttering your e-mail?  Are you
retentive enough to have meticulously archived all this spam,
separately from your regular e-mail, in the hope that someday some
program might learn by example how to recognize spam -- something that
any human does in a fraction of second?

If so, rejoice!  The time has come!

Introducing the Spam Oracle, a.k.a. "Saint Peter".  From the README:

  SpamOracle is a BiCapitalized tool to help detect and filter away "spam"
  (unsolicited commercial e-mail).  It proceeds by statistical analysis
  of the words that appear in the e-mail, comparing the frequencies of
  words with those found in a user-provided corpus of known spam and
  known legitimate e-mail.  The classification algorithm is based on
  Bayes' formula, and is described in Paul Graham's paper, "A plan for

  This program is designed to work in conjunction with procmail.
  The result of the analysis is output as an additional message header
  "X-Spam:", followed by "yes", "no" or "unknown", plus additional
  details.  A procmail rule can then test this "X-Spam:" header and
  deliver the e-mail to the appropriate mailbox.

  In addition, SpamOracle also also analyses MIME attachments,
  extracting relevant information such as MIME type, character encoding
  and attached file name, and summarizing them in an additional
  "X-Attachments:" header.  This allows procmail to easily reject
  e-mails containing suspicious attachments, e.g. Windows executables
  which often indicate a virus.

All for the incredibly low price of $0.00 !  But hurry -- it won't
last long!  Grab your copy from

This AMAZING product, based on college-level statistical theory less
than one century old, will just REVOLUTIONIZE your life!  Or your
money back!  But don't take my words for it!  See the testimonials
from our happy customers!  Xavier L., from Versailles: "What with all
these e-mails about V**gra, p*nis enlargement, and hot teen*ge sl*ts,
I just couldn't concentrate on writing quality software and research
papers.  Your product just restored peace in my mailbox and in my
mind, too.  Now, I can spend whole days watching my procmail log
and bursting into hysterical laughter every time another spam bites
the dust!  Why, it feels so good, I think I'll subscribe to some of
these "one-time use" mailing lists JUST FOR FUN!"

9)  Cameleon 1.0
Maxence Guesdon announced:

I'm pleased to announce the release of Cameleon 1.0.
A lot of Changes for this new release, see the ChangeLog below.
A big change is that now all my development tools will
be maintained inside Cameleon, including the last born Epeire.

You can find Cameleon here:

I will release a binary rpm for intel in the next days.

Comments are welcome.

Enjoy !

Maxence Guesdon

BTW, i just developed a tool to generate my software HTML pages.
It is available at the above url, and is called toolpage.
You can freely use it.


 - cam-config added
 - topcameleon, graphical toplevel, added, with cam-mktop
 - omom added
 - only one toolbar (horizontal), customizable
 - graphical configuration of key bindings
 - additional views can be defined in plug-ins
 - new command cam-config to get the installation values in scripts
 - new modules view (use a dump.odoc target and a dump.odoc file
   in the selected directory to display the modules of the selected
 - new window showing the list of available internal commands
   (a double click on a command execute it)
 - embedded apps in plugins
 - choice of plugins to load in a nwe tab of the configuration window
 - shared plugins and personal plugins
 - a command (reload_plugin) to select a plug-in and reload it
 - support of configure options to select where to install cameleon files
 - Cameleon is now a set of tools and libs (zoggy, report, configwin, ...)
 - configuration of fonts and colors
 - configuration files file_types and doc moved to a common
   configuration file core
 - configuration file toolbar now moved into the file gui
 - a 'make' plug-in added, and a new 'make' default menu added
 - some new functions in Cam_plug (background_execute, ...)
 - creation and installation of doc during the install process,
   making doc on cameleon and the standard ocaml library available
   in the doc browser when starting Cameleon for the first time

   configwin 0.95:
   - new parameter hotkey

   zoggy 0.94:
   - pixmap widgets are handled
   - ask to save before exit if modified
   - window#add_accel_group generated if possible
   - better error messages when a value is missing

   epeire 0.83:
   - shortcuts in the code window to activate some menus of the main window
   - memorize the positions and sizes of the windows
   - new option -I (same as in the traditionnal ocamldebug)

10) OCaml-Win32 release 0.02
Harry Chomsky announced:

I'm pleased to announce release 0.02 of OCaml-Win32, an OCaml library
providing direct access to the Win32 API.  This is a major upgrade from
release 0.01, with many new features, but also some incompatibilities
involving how message handlers need to be written.

The library is made available under the LGPL license, at the following URL:

11) Cash 0.20
Bruno Verlyck announced:

I'm pleased to announce a new release of Cash, the Caml Shell.

* Release 0.20

What's new:
- Cash now compiles on Cygwin and OS with no support for dynamic
  linking by Objective Caml;
- A complete tty/pty interface, covering Posix, SYSV and BSD;
- An emulation of string channels;
- Unbuffered I/O is fully working with Ocaml 3.05;
- Some bugs have been fixed, some examples added (in examples/).
Also added:
- write_string and its cousins;
- fork_with_pipe_plus (complex connections in pipes);
- call_with_input_file, call_with_output_file, call_with_fdes_fn
  (Scheme compatibility);
- run_with_out_channel, run_with_outchan_plus_proc, and
  run_with_chan_plus_proc becomes run_with_inchan_plus_proc.

For more information, see:
Download the most recently distributed source:
Stay in sync with latest development / bug fixes (CVS archive):

* What is Cash ?

Cash is a Caml implementation of (an as large as possible subset of) the
API of Scsh (0.5.3), the Scheme Shell by Olin Shivers.  It's designed for
writing standalone Unix programs and shell scripts (but rather *not* for
interactive command use). It spans a wide range of application, from
"script" applications usually handled with perl or sh, to more standard
systems applications usually written in C.

* Bugs

Bug reports, comments, doc typos, and contributions are very welcome:
drop me a mail at

12) ocamlgsl release
Olivier Andrieu announced:

I'm releasing a wrapper for GSL, the GNU Scientific Library
<> . GSL is "a collection of routines
for numerical computing" : this includes random number generators,
random distributions, special functions, FFT, linear algebra,
numerical integration, multi-dimensional root-finding and
minimization, least-square fitting, etc.

The wrapper is fairly complete (but not overly tested). There's not
much documentation but the (very good) GSL documentation should be
enough for using it. The wrapper is synced with the current release of
GSL (1.2).

the wrapper :

the GSL documentation :

13) Data structure library
Diego Olivier Fernandez Pons announced:

I put a prerelease of Edison data structure library for Caml in

I hope it will be usefull
I am afraid my port of FGL (functional graph library, Erwig) wont be
ready on time, anyway graphs are too regular for a generic library to
be really useful, you should better specialise usual graph algorithms
to the particular rectangular board graph.

Facile library could be useful too

And I think there will be at least one non-connexe graph map

14) PXP 1.1.92 (development version)
Gerd Stolpmann announced:

there is a new development version of PXP: 1.1.92. This version
focuses on cleaning up the way lexers are generated. There is a new tool,
lexpp, that generates the lexers from only five files. Furthermore, much
more 8 bit character sets are now supported as internal encodings. In
previous versions of PXP, the internal representation of the XML trees was
restricted to either UTF-8 or ISO-8859-1. Now, a number of additional
encodings are supported, including the whole ISO-8859 series.

Bugfix: If the processing instruction <?xml...?> occurs in the middle of the
XML document, version 1.1.91 will immediately stop parsing, and ignore the
rest of the file. This is now fixed.

The new version can be found at the usual place:

Old cwn

If you happen to miss a cwn, you can send me a message
( and I'll mail it to you. If you also wish to
receive it every week by mail, just tell me so.


Alan Schmitt