English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[ANN] STMlib and Enhtop available
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-03-06 (14:51)
From: Zheng Li <li@p...>
Subject: [ANN] STMlib and Enhtop available

Hi list,

I recently announced the availability of these two small piece of code at
the beginners list [1][2]. Then some people kindly encouraged me to post
it here also. Here are they:


This is a user-space implementation of STM (Software Transactional Memory)
library for OCaml. It's mainly inspired by the STM library of Haskell, with
some exceptions due to the different nature of languages and different
strategies of implementation.

- This library is a user level implementation, whereas the Haskell version is
based on primitives built into the runtime.

- This library is purely an add-on to the already existed concurrent library
of standard OCaml: threads, processes (TODO) and network programs
(TODO). I.e. you can still program your concurrent applications with all
facilities already exist in OCaml (e.g. Thread, Event, Unix etc.), but with the
functions from this library you may transactionally read/write shared data
instead of using locks or messages (and you may mix them if you really want).

- There are subtle differences on the signatures and semantics of some
specific functions between this library and the Haskell version. They are
documented in the library manual.

Currently only the threads (also vmthread) back-end is provided as a proof of
concept. Other back-ends (process and network program), which share the exact
interface, will come out in future version. The object is being able to write
one .ml source program, compile once, but link with different back-ends to get
executables of various execution model for different environments.

Source code and documents are available at



This is an experimental patch (we also provide pre-built testing executable and
Debian package) for an enhanced OCaml toplevel with following features:

For any kind of bindings (i.e. value, type, module, class etc.):

  * Identifiers been rebound are shown differently by default, to distinguish
    with currently effective ones
  * A new directive to query (by kinds or names or their composition) and show
    both current and history bindings
  * A new directive to show the current binding of any identifier without
    evaluating or rebinding it
  * A type-check-only testing mode to experiment your definitions without
    polluting the world, and the directive to enter/leave it

Documents (running examples and installation instructions) and deliverables are
available at


PS. some wrong dependency (on libc6-dev 2.5) in the previously provided Debian
packages is now fixed.


[1] http://tech.groups.yahoo.com/group/ocaml_beginners/message/7390
[2] http://tech.groups.yahoo.com/group/ocaml_beginners/message/7393

Zheng Li