Parkas Team Software
The PARKAS group runs and contributes to several software projects.
| Decades |
First-order synchronous dataflow language |
| GCC |
The GNU Compiler Collection |
| Hybrid Synchrone |
Synchronous dataflow + 1st order ODEs |
| isl |
Integer Set Library, state-of-the-art Presburger Arithmetic library |
| Jazz |
Programming language for large synchronous digital circuits |
| Lucid Synchrone |
Higher-order synchronous dataflow language |
| Lucy-n |
A n-synchronous language experiment |
| ML-Sundials |
An Ocaml interface to the Sundials CVODE solver |
| ReactiveML |
Reactive programming in ML |
Short Descriptions
Decades
Le langage Decades a pour but d'offrir une version simple, efficace et robuste de Lustre facilitant la recherche et l'expérimentation. Un certain nombre d'extentions, comme les automates, sont déjà incorporées. Il sert de base pour plusieurs expérimentations actuelles comme un typage linéaire des tableaux ou l'introduction de calculs parallèles asynchrones. Le compilateur développé dans l'équipe génère du code C, du java et du VHDL.
GCC: The GNU Compiler Collection
http://gcc.gnu.org
Licence: GPLv3+ and LGPLv3+
The GNU Compiler Collection includes front ends for C, C++,
Objective-C, Fortran, Java, Ada, and Go, as well as libraries for
these languages (libstdc++, libgcj,...). GCC was originally written as
the compiler for the GNU operating system. The GNU system was
developed to be 100% free software, free in the sense that it respects
the user's freedom.
PARKAS contributes to the polyhedral compilation framework (Graphite)
and distributes an experimental branch for a stream-programming
extension of OpenMP, borrowing key design elements to synchronous
data-flow languages.
Hybrid Synchrone
Hybrid Synchrone est un langage expérimental pour la simulation de systèmes hybrides. C'est un langage synchrone du premier ordre sans horloges auquel on a ajouté des équations différentielles ordinaires avec réinitialisation. Les programmes hybrides sont compilés vers le sous-ensemble discret du langage et exécutés en collaboration avec un solveur numérique; actuellement, le solveur est
Sundials CVODE utilisé par le biais d'une
Interface Ocaml.
isl: Integer Set Library
http://freshmeat.net/projects/isl
Licence: LGPLv2.1+
isl is a library for manipulating sets and relations of integer points bounded by linear constraints. Supported operations on sets include intersection, union, set difference, emptiness check, convex hull, (integer) affine hull, integer projection, and computing the lexicographic minimum using parametric integer programming. It also includes an ILP solver based on generalized basis reduction.
Jazz
http://www.di.ens.fr/~jv/jazz/
Lucid Synchrone
http://www.di.ens.fr/~pouzet/lucid-synchrone/
Lucid Synchrone is an experimental language for the implementation of reactive systems. It is based on the synchronous model of time as provided by Lustre combined with some features from ML languages. The main characteristics of the language are the following:
- It is a strongly typed, higher-order functional language managing infinite sequences or streams as primitive values. These streams are used for representing input and output signals of reactive systems and are combined through the use of synchronous data-flow primitives à la Lustre.
- The language is founded on several type systems (e.g., type and clock inference, causality and initialization analysis) which statically guarantee safety properties on the generated code.
- Programs are compiled into sequential imperative code.
- The language is built above Objective Caml used as the host language. Combinatorial values are imported from Objective Caml and programs are compiled into Objective Caml code. A simple module system is provided for importing values from the host language or from other synchronous modules.
Lucy-n
http://www.lri.fr/~mandel/lucy-n
Lucy-n est un langage expérimental pour la programmation dans le modèle
n-synchrone. Ce langage est similaire à Lustre auquel est ajouté une
construction de buffer. Le rôle du compilateur est de garantir que le
programme peut s'exécuter en mémoire bornée et de calculer
automatiquement la taille des buffers. Ce langage permet donc de
programmer des réseaux de Kahn à FIFO de taille bornée.
ML-Sundials
Cette bibliothèque fournit une interface Ocaml au solveur
Sundials (version
2.4.0), mais
actuellement, seul le solveur CVODE avec vecteurs séries est disponible. La structure et la nomenclature suivent pour la plupart la bibliothèque originelle, à la fois pour qu'il soit facile de lire la documentation actuelle et également pour aider la transformation de codes source existants. Néanmoins, plusieurs changements ont été faits pour faciliter la programmation :
- les sessions du solveur sont configurées avec un type de données algébrique plutôt que par de multiples appels de fonctions,
- les conditions d'erreurs sont communiquées par des exceptions et non pas par des codes de retour (même dans les procédures de rappel fournis par l'utilisateur),
- les données sont partagées entre les procédures de rappel à l'aide de fermetures (applications partielles de fonctions d'ordre supérieure), et,
- il n'y a aucun besoin de commandes explicites pour libérer la mémoire étant donné que Ocaml est un langage avec glaneur de cellules.
ReactiveML
Compiler licence: Q Public Licence 1.0
Library licence: GNU Library General Public Licence 2.0
http://www.reactiveml.org/
ReactiveML is a programming language dedicated to the implementation of interactive systems as found in graphical user interfaces, video games or simulation problems. ReactiveML is based on the synchronous reactive model of Boussinot embedded in an ML language (here Objective Caml). The synchronous reactive model provides synchronous parallel composition and dynamic features like the dynamic creation of processes. In ReactiveML, the reactive model is integrated at the language level (not as a library) which leads to safer and more natural programming.