Synchronous Dataflow Programming
Zélus
Developed together with Marc Pouzet.
Zélus is a first-order synchronous dataflow programming language (without a clock calculus) extended with Ordinary Differential Equations (ODEs). The ODEs permit the modelling of (a class of) physical systems. They can be composed, in a disciplined and type-checked way, with discrete programs, meaning that they can be reset and used within control strutures like automata and conditional branches.
Our work shows how to type and compile hybrid programs for simulation using a numerical solver (like Sundials CVODE). We make many experiments in the popular and powerful Simulink software from MathWorks to better understand the design space and the strengths and weaknesses of existing languages.
Zélus has its own website with a list of example code. It is described in several papers, concentrating on
- basic typing and compilation (LCTES2011),
- typing and compiling automata (EMSOFT2011),
- the underlying semantics (JCSS2012),
- implementation and use (HSCC2013),
- the analysis of causality (HSCC2014), and,
- application to SCADE Suite (CC2015).
Lucid Synchrone
Lucid Synchrone is a higher-order functional language with infinite sequences as primitive values. It includes features normally associated with imperative languages, like automata and signals. It is developed by Marc Pouzet.
These pages include
- A .deb package for installing Lucid Synchrone on Ubuntu.