Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[ANN] coThreads 0.10
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-09-17 (16:29)
From: Zheng Li <li@p...>
Subject: [ANN] coThreads 0.10


I'd like to announce the first public release of coThreads, a 
concurrent programming library for OCaml. 

It originated as STMlib [1], and was accepted as a Google Summer 
of Code 2007 project [2] mentored by Yoriyuki Yamagata from the 
Free Software Initiative of Japan [3].   The official website of 
coThreads is where you can find 
the source code and some preliminary documents. It's a wiki-based 
website, so feel free to register and contribute.    A byproduct 
of the project, the Vprint [4] module, was already announced 
independently a few weeks ago on this list.   Enjoy.   [1] [2] [3] [4]   From 
the README: 
= Description =  coThreads is a concurrent programming library for 
OCaml. It enhances the Threads library of the standard OCaml 
distribution in two dimensions:  * coThreads implements the same 
API of the standard Threads library on different execution engines 
(process, netwoker(todo)), so that a single copy of source code 
can be compiled and deployed to different environments without 
modification  * coThreads is also a super set of the standard 
Threads library, with extra components (STM etc.), functions 
(spawn etc.) and features (object-level compatibility etc.)   = 
Features =  The design of coThreads brings several advantages:  == 
Powerfulness ==  * The process engine can give you real speedup on 
multi-core and multi-processor machines, the networker engine 
(todo) will give you both speedup and scalability.   * Combining 
the original components from the Threads library and the newly 
added ones, coThreads is a full-fledged toolbox covering two main 
concurrent programming paradigms, namely shared-memory and message 
passing, with both high-level and low-level constructors.   * All 
constructors (e.g. thread, mutex, condition, event, channel, tvar, 
stm etc.) are first class values that can be communicated and 
shared between independent threads.   == Compatibility ==  * Full 
compatibility with the original Threads library (systhreads and 
vmthreads), so that you can now deploy your legacy code to new 
environment for free — without modifying source code, without 
learning something new.   * Both source-level and object-level 
compatibility among different execution engines, so that you can 
keep a single copy of source code as well as a single copy of 
objects files.   == Convenience ==  * The full library is 
implemented in user-space, no modification to the OCaml compiler 
and runtime, so that you can use it as a set of plain modules.   * 
Switching engines is as easy as changing the include paths of 
compilation, and it's quite easy to automate the building process 
over a set of engines (e.g. with lines of pattern rules in your 
Makefile)   -- 
Zheng Li