Software

Software

I will keep uploading pieces of code I wrote, they are mostly OCaml or F# related.

OcamlP3l

A large part of my research work contributes to the evolving of OcamlP3l system, a skeleton-based parallel programming system written in, and for, OCaml. The essence of a skeleton system is that it provides a set of typical parallel structures as higher-order constructors (or say skeletons, patterns, combinators etc.), and the programmers create their parallel application simply by the instantiation of these well-know forms (with plain sequential routines describing the sequential portions of the application), as well as their composition (to form nested parallel structure). Compared with traditional approaches, skeletons provide a higher-level and structured way to program parallel applications with much less effort, cleaner semantics and better reliability. A highlight of OcamlP3l is that the three back-ends based on different kinds of semantics, namely sequential, graphical and parallel, make it possible to debug an applications in one way (preferably sequentially and graphically), and execute it in another (esp. in parallel). Other benefits include the possibility of mixing sequential and parallel computation, skeleton specializing, color based load balancing mechanics etc.

The current version of OcamlP3l as well as all its document is provided through its website. A next generation of the system, which is a total rewritten of current system to gain full extensibility, is currently in development.

Website:homepage at INRIA

coThreads

coThreads is a concurrent/parallel programming library for OCaml. It enhances the Threads library of the standard OCaml distribution in both dimensions:

Website:homepage at sourceforge
 project page at sourceforge

Enhtop

patch for an enhanced OCaml toplevel

Description:README changelog
Version:3.09 (2007.03.12), 3.10 (2007.08.27), 3.11 (2009.04.22)
Download:read the README first for instructions
 for OCaml 3.09: patch, executable, debian packages (i386)
 for OCaml 3.10: patch, executable, debian packages (i386), win32 files (mingw, i386)
 for OCaml 3.11: patch
Repository:browse

Vprint

a runtime value printer for OCaml, extremely experimental at the moment, use at your own risk.

Description:README
Version:0.01
Download:vprint_0.01.tar.gz
Repository:browse, darcs URI
Documentation:manual

Weaktbl

a weak hash table library for OCaml, with an interface compatible with the standard Hashtbl library.

Description:README
Version:0.02
Download:weaktbl_0.02.tar.gz
Repository:browse, darcs URI
Documentation:manual

SDFlow

a high-level combinatorial dataflow programming library based upon destructive lazy streams.

Description:README
Version:0.01
Download:sdflow_0.01.tar.gz
Repository:browse, darcs URI
Documentation:manual

SECD

a toy implementation of Landin’s SECD machine in OCaml

Description:README
Version:0.01
Download:secd_0.01.tar.gz
Repository:browse, darcs URI
Documentation:manual

pa_scope

OCaml syntax extension (via camlp4) for opening modules in current scope

Description:README
Version:0.02
Download:pa_scope_0.02.tar.gz
Repository:browse, darcs URI

pa_use

OCaml syntax extension (via camlp4) simulating F#’s “use” binding syntax

Description:README
Version:0.01
Download:pa_use_0.01.tar.gz
Repository:browse, darcs URI

pa_cexp

OCaml syntax extension (via camlp4) backporting F#’s computation expression

Description:README
Version:0.01
Download:pa_cexp_0.01.tar.gz
Repository:browse, darcs URI

pa_trybind

OCaml syntax extension (via camlp4) for handling exceptions in scope of bindings

Description:README
Version:0.01
Download:pa_trybind_0.01.tar.gz
Repository:browse, darcs URI

STMlib

a user-space STM library for OCaml, Google Summer of Code 2007 project. It’s now obsoleted by coThreads.

Description:README
Download:stmlib-0.01.tar.gz

This document was translated from LATEX by HEVEA.