Synchronous languages has been introduced in the 80's for programming embedded control software. The purpose was to allow the designer to model control-systems in a high-level language --- mainly data-flow equations, hierarchical automata and their parallel composition ---, built on a mathematically precise semantics, and to associate it with static analysis and code generation mechanism insuring that the target code is equivalent to the source model. All these language share the "synchronous model of time", namely that computations can be neglected at modeling time because the compiler is
able to generate target code which is proved to run in bounded time and space. Several academic languages were developed, notably Esterel, Lustre, Signal,
and Lucid Synchrone. The industrial language SCADE 6, based on Lustre and Lucid Synchrone, is now used for the development of the most critical parts of software in various domains, notably, avionics, power generation, railways, circuits, etc.
The success of the original synchronous languages has spurred the development of new languages, based on the same principles, that increase modularity, expressiveness and that address new applications like real-time video streaming, latency-insensitive designs, large scale simulations, hybrid (continuous/discrete) systems.
Lucid Synchrone is one of these new languages. It has served as a basis for experiment with several novel extensions including,
higher-order functions, type systems for the clock calculus, hierarchical state machines with shared variables, signals and new compilation methods. Many of these ideas have been adopted in commercial tools, notably SCADE 6. New topics include techniques for allowing bounded desynchronisation through buffers (N-synchrony) and extensions for modeling continuous systems.
During my talk, I will present the mathematical principles of synchronous languages, the major extensions that has been done in the past, notably the mix of data-flow with hierarchical automata. Then, I will detail two recent research development:
- The extension of synchronous languages to deal with computer intensive applications that communicate through bounded FIFOs (e.g., TV boxes);
- The treatment of discrete and continuous-time to model, in a unified manner, both a discrete controller and its physical environment described by Ordinary Differential Equations (ODEs).