Section: New Results

Models, semantics, and languages

Participants : Pejman Attar, Gérard Berry [correspondant] , Gérard Boudol, Frédéric Boussinot, Johan Grande, Cyprien Nicolas, Manuel Serrano.


HipHop is a new Domain Specific Language for Hop dedicated to request and event orchestration. HipHop follows the synchronous reactive model of the Esterel and ReactiveC languages, originally developed for embedded systems programming. It is based on synchronous concurrency and preemption primitives, which are known to be key components for the modular design of complex temporal behaviors. Although the language is concurrent, the generated code is purely sequential and thread-free. HipHop is translated to Hop code to be interpreted by the Hop runtime, either on server or client sides. HipHop has been described in a paper [9] accepted at the new International Workshop on Programming Language And Systems Technologies for Internet Clients (Plastic 2011).


Tesard is a programming language of the Caml family, designed to offer simple constructs for shared memory concurrency and a deadlock-free semantics.

It features in particular the 2 following constructs:

  • thread e which launches a thread that will execute expression e , and returns immediately;

  • lock x in e which takes a lock on mutable value x (possibly waiting to be able to do so), executes expression e , releases the lock on x and returns the result of the execution of e .

A type and effect system is used at compile-time to:

  • associate a mutex with every mutable value

  • make the lock ... in... construct implement deadlock avoidance.

The language is implemented as an interpreter and a bytecode compiler. It is a fork of Llama Light, which is itself derived from Caml. Llama Light is functionnaly roughly equivalent to Caml Light, but a large part of its code comes from OCaml, along with the threads library and runtime that we ported ourselves.

Several key parts of the language have been implemented: the runtime and most of the type and effect system, including inference of the creation of mutexes (let region r in ... ) but not region polymorphism yet. The project is not in a usable state (no release has been made yet). Development versions are publicly available via GitHub at https://github.com/nahoj/llama .

Synchronous orchestration and beyond

We studied DSL, an orchestration language based on the synchronous/reactive model. In DSL, systems are composed of several sites executed asynchronously. Within each site, scripts are run in a synchronous parallel way. Scripts may call functions that are treated in an abstract way: their effect on the memory is not considered, but only their “orchestration”, i.e., the organisation of their calls in time and in place (the site where they are called). The mapping of sites onto cores allows one to benefit from multicore architectures. Two properties are required by DSL: reactivity of sites and absence of interferences between scripts run by distinct sites. We also introduced DSLM, which adds a memory level to DSL and a way to automatically adapt the execution to get a maximal use of the available cores. This work, presented respectively in [18] and [15] , was funded by the ANR-08-EMER-010 grant PARTOUT.