Parkas Team Software

The PARKAS group runs and contributes to several software projects.

Decades First-order synchronous dataflow language
GCC The GNU Compiler Collection
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
SundialsML An Ocaml interface to the Sundials CVODE solver
ReactiveML Reactive programming in ML
Zélus Synchronous dataflow + 1st order ODEs

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.


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.


SundialsML?

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.


#Zelus

Zélus

Zélus 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.
 
Webmaster: webdi[@]di[.]ens[.]fr.