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

The language Decades aims to provide a simple, efficient and stable version of Lustre, that facilitates research and experimentation. Some extensions have already been made, most notably automata. It's currently used to experiment with linear typing for arrays and also to introduce a concept of asynchronous parallel computations. The compiler developed in our team generates C, java and VHDL code.


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 is a language to program in the n-synchronous model. The language is similar to Lustre with a buffer construct. The Lucy-n compiler ensures that programs can be executed in bounded memory and automatically computes buffer sizes. Hence this language allows to program Kahn networks with bounded FIFOs.


SundialsML?

This library provides an Ocaml interface to Sundials (version 2.4.0), though only the CVODE solver with serial nvectors is currently supported. The structure and naming conventions largely follow the original libraries, both for ease of reading the existing documentation and for converting existing source code, but several changes have been made for programming convenience, namely:
  • solver sessions are configured through algebraic data types rather than through multiple function calls,
  • error conditions are signalled by exceptions rather than return codes (including in user-supplied callback routines),
  • closures (partial applications of higher-order functions) are used to share user data between callback routines, and,
  • explicit free commands are not necessary nor provided since Ocaml is a garbage-collected language.


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

Zelus is an experimental language for simulating hybrid systems. It is a first-order synchronous language without clocks that has been augmented with first-order Ordinary Differential Equations (ODEs) that can be reset. Hybrid programs are compiled into the discrete subset and executed by an external numerical solver; currently the Sundials CVODE solver via an OCaml Interface.
 
Webmaster: webdi[@]di[.]ens[.]fr.