Previous week   Up   Next week

Here is the latest Caml Weekly News, week 13 to 20 august, 2002.

1) Example of camlp4: One Day Compilers (slide show)
2) ocaml mode included in XEmacs
3) Unison status and request for help...
4) Announcement: PXP 1.1.91 (development version)

1) Example of camlp4: One Day Compilers (slide show)
Mattias Waldau announced:

One Day Compilers (Graydon Hoare) (via Ken Rawlings)

A tutorial on implementing DSLs, using O'caml, syntax extension, and a C

The approach is based on using Camlp4 for embedding the DSL in O'caml,
and producing C source code using the author's Cquot package (for C code

2) ocaml mode included in XEmacs
Ville Skyttä announced:


we've recently included the O'Caml emacs mode in XEmacs as a package.
Our version is a slightly modified one (by yours truly) of the version
included in the O'Caml 3.05 distribution.  You can take a look at our 
version in the XEmacs CVS [1].

As the XEmacs package manager (together with Peter Brown,
<>), my job is to inform package authors about the
packages' inclusion in XEmacs.  Our policy is that all package authors
get CVS commit access and maintainership to their packages in the XEmacs
CVS, if they desire so.  Just drop me an email if you're interested in


3) Unison status and request for help...
Benjamin Pierce declared:

Executive summary: Experts in both OCaml and Unison, your help is needed!


If you're a satisfied user of the Unison file synchronizer, you might 
have wondered if there was anything you could do to pay back the karma
that you've been accumulating by using this great tool completely free
of charge.  This message is for you...

Unison has come a long way in the past few years: from an experimental 
research prototype with a handful of users, it's become a stable,
full-featured system with a significant user community (several
thousand, at least) and wide visibility (e.g., it's included in
several Linux distributions).  It is often cited as a success story
for OCaml: its portability and robustness are due in large part to the
excellent engineering of the OCaml language and compiler.

A natural effect of its popularity is that maintaining Unison,
responding to postings on the users list, investigating bug reports,
etc. has become a lot of work.  At the same time, the original
developers have all moved on to other places and other research
activities: Trevor Jim is now at AT&T Research, Jerome Vouillon is at
CNRS Paris, Zhe Yang just moved to Aleri Systems, and I, though still
at Penn, am spending my research energy on a follow-on system called
Harmony.  What this means is that there is no longer *any one* whose
primary job it is to maintain and improve Unison.

At this point, some help is needed from the user community to ensure
that Unison continues to grow and improve.

  * We need as many "unison experts" as possible to join in discussions
    and respond to queries on the unison-users list.  This is something
    that everyone can help with.  If you consider yourself a power user
    of unison and you see a posting on a topic that you know something
    about, please jump in!

  * We need a few "unison hackers" who can help with investigating bug
    reports.  Contributing to this activity will require (or involve
    acquiring) at some familiarity with OCaml programming and with the
    Unison codebase.  (Tracking down the really nasty bugs sometimes
    involves familiarity with the internals of the ocaml compiler and
    runtime system, but most bugs are not this hard.)

    To facilitate discussions of unison internals, I've created a new
    mailing list,  You can subscribe by
    sending a message to
    Archives will be kept at

    Among other things, this list will be used to announce change
    summaries for all checkins to the unison source repository.  Checkins
    will be reflected immediately in the "developer tarball" available
    through the download page.  (It may be useful at some point to move
    this repository to someplace like SourceForge, to make it easier for
    people outside of Penn to commit changes.  For now, though, proposed
    changes can be submitted as patches to

    This list is also the place to discuss implementation issues for new
    functionality.  However, the focus in Unison's development will be on
    correctness, stability, and robustness -- new features will not be
    added to the main distribution unless they meet high standards of
    clean design and coding.

  * We badly need a Unison/Windows maintainer -- someone who understands the
    intricacies of OCaml compilation on Windows systems, can keep the
    Win32 source-installation instructions up to date with new versions
    of OCaml and Windows, build Windows executables for new Unison
    releases, etc.  (This need is really urgent: none of the current
    developers are heavy Windows users.)

    If you would be interested in taking this on, please send a message

  * We could also use a few people to help moderate the unison-users
    list.  This is a light task -- moderation is only used to filter
    spam, and the group is set up so that pending messages can be
    approved or rejected by any of the moderators in just a few
    keystrokes.  If you'd like to be a moderator, just send a message
    to  (You'll need to subscribe to the list
    first, if you are not already a member.)

4) Announcement: PXP 1.1.91 (development version)
Gerd Stolpmann announced:

Hi list,

a new development version of PXP is available. The changes:

- In addition to the "push" parser, there is now also a
  "pull" parser to process XML documents in an event-based
  way. Recall the difference: A push parser invokes a
  callback function supplied by the user to send the events
  to the user program, as in

  let handler event = ... in
  process_entity ... handler ...

  A pull parser returns a function, and by calling the function
  the user gets the next event:

  let next_event = create_pull_parser ... in
  let event = next_event()

  An interesting application of pull parsing is that one can
  easily build a stream from such a parser:

  let stream = Stream.from next_event

  Stream parsers can be used to analyze the XML document. The
  PXP distribution contains an example of that.

- There is a new entry point for event-based parsers: Entry_expr.
  It parses a single element, a single processing instruction,
  a single comment, or whitespace.

- The curly braces {, {{, }}, and } can now be used inside
  attributes to invoke escape parsing (calling another parser
  from PXP). In the previous version 1.1.90, this worked only
  in character data nodes.

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