Team Gallium

Overall Objectives
Scientific Foundations
Application Domains
New Results
Contracts and Grants with Industry
Other Grants and Activities

Section: New Results

Other results on the implementation of functional programming languages

Lightweight concurrency for GHC

Participants : Andrew Tolmach, Peng Li [ Univ. of Pennsylvania ] , Simon Peyton Jones [ Microsoft Research Cambridge ] , Simon Marlow [ Microsoft Research Cambridge ] .

Andrew Tolmach participated in a collective effort to design a set of lightweight concurrency primitives for the Glasgow Haskell Compiler (GHC). GHC supports a large set of concurrency operations; these are currently implemented in C within the runtime system, which is complex, error-prone, and difficult to maintain or extend. The goal of this work is to define a new, minimal runtime system substrate for concurrency that supports the implementation of most concurrency features within Haskell itself. Initial results of this work were described in a paper presented at the ACM Haskell Workshop 2007 [Oops!] .

Lazy recursive modules

Participant : Keiko Nakata.

The goal of this work is to extend the ML module system, the theoretical underpinning of the OCaml module system, with recursion by designing a suitable evaluation strategy for modules. The introduction of recursion in the module system increases its expressive power and enables it to express widely-adopted programming idioms, often found in object-oriented programming. that are useful for extensible software development. Combined with other flexible features of the module system, the potential expressive power gained by a recursive module extension can go beyond that of object systems with respect to the extensibility.

Keiko Nakata is investigating a new evaluation strategy for modules, inspired by the lazy evaluation mechanism. The lazy evaluation mechanism, already available for instance in the OCaml core language, carries two aspects. On the one hand, it allows flexible treatment of recursion, which is hard to obtain under the eager evaluation mechanism. On the other hand, it requires runtime tests to determine whether the evaluation is still suspended or has been forced, causing additional run-time costs. Keiko Nakata is exploring disciplined uses of the lazy evaluation mechanism to keep a good balance between expressiveness and efficiency. Preliminary results have been submitted for publication [Oops!] .


Logo Inria