Bibliothèque TML

Les travaux décrits ici se sont
poursuivis avec l’exploration de la concurrence légère
en OCaml (
light weight concurrency).

ReactiveML

ReactiveML est une extension du langage OCaml ajoutant des constructions réactives inspirées du langage synchrone Estérel. Le compilateur ReactiveML peut générer du code pour différents backends qui sont essentiellement des machines réactives écrites en OCaml. Il fournit donc des fichiers sources OCaml qui sont destinés à être compilés et liés à une bibliothèque.

TML

J’ai développé une bibliothèque (appelée TML pour trampolined ML) permettant la programmation réactive en OCaml. Celle-ci met en œuvre l’ordonnancement et les communications entre processus, en reprenant le modèle de ReactiveML. Les processus devront être écrits en style trampoline, et feront appel aux fonctions de la bibliothèque.

Fournir ces mécanismes au sein du langage plutôt que par une extension apporte un certain nombre d’avantages. L’intégralité du langage est disponible (ReactiveML ne supporte pas les foncteurs ni les objets), ainsi que les outils associés (débogueur, profileur, environnement de développement). D’autre part la bibliothèque peut être utilisée avec des extensions de OCaml comme par exemple MetaOCaml.

Bien sur il n’y a pas que des avantages. Un langage spécialisé fournit des constructions syntaxiques spécifiques et surtout, peut réaliser des vérifications sémantiques sur les constructions réactives.

La bibliothèque existe en trois versions :

TML4
ne met pas en œuvre les constructions de contrôle,
TML5
permet des constructions de contrôle non imbriquées,
TML6
gère complètement les constructions de contrôle.

Ces versions imposent que tous les signaux portent le même type de valeurs (les opérations sur les signaux ne sont pas polymorphes), ce qui se résoud en définissant un type somme des types possibles. La bibliothèque est définie comme un foncteur paramétré par ce type.

Une version expérimentale (qui fait usage du forçage de type Obj.magic de OCaml) levant cette contrainte est également disponible.

Code source

Les scripts mettent en forme le code source avec l’outil ocamlweb. Un patch (pour ocamlweb 1.37) pour traiter aussi les sources ReactiveML a été réalisé.

Documentation et publications

[1]
Deleuze (Christophe). – Programmation réactive en OCaml – Implémentation de la bibliothèque TML. – Rapport technique, LCIS, 2009.[pdf]
[2]
Deleuze (Christophe). – Programmation réactive en OCaml. Journal Européen des Systèmes Automatisés, vol. 43, n 7,8,9, 2009, pp. 757–771. – Actes de MSR’09.[pdf]
[3]
Deleuze (Christophe). – Programmation réactive en OCaml. – Rapport technique, LCIS, 2009.[pdf]

Ce document a été traduit de LATEX par HEVEA