SYNchronous Applications, Languages, and Programs


The purpose of this web site is to gather and spread out information about ongoing work in the field of synchronous languages. These languages have been invented in the early 1980's (yes that was in the past century) to make the programming of reactive systems easier.

Reactive Systems

Any automatic control software is classified as a reactive system. Indeed, such software must react continuously to their environment. They differ from interactive systems (e.g. operating systems) by the fact that their reaction speed is imposed by the environment, because the environment cannot wait. Examples of such software include nuclear plant controllers, airplane flight systems, and so on.

The essential characteristics of reactive systems are:

Classical Approach

Classical programming tools are not well-suited to reactive systems programming: Automata-based systems lack high-level parallel programming primitives while asynchronous languages do not respect the intrinsic determinism of reactive systems. Asynchronous language inherit from the field of operating systems and shared time. In particular, asynchronous parallelism is solved by interleaving: The construct a||b is either implemented as a;b or as b;a, thus introducing an unwanted non-determinism. This is the case of well known languages like Occam and Ada which use rendezvous based mechanism inspired by CSP. It is also the case of SDL which uses waiting queues inspired by Petri Nets.

Synchronous Abstraction

On the other hand, synchronous languages are based on the simultaneity principle: The construct a||b is implemented as the package ab, leaving to the compiler the choice of the scheduling. Another way of viewing a synchronous program consists of saying that all the parallel processes evolve simultaneously, along a common discrete time scale. This is known as the logical time abstraction: All the processes compute one discrete time step at the same time. This is the approach taken by the synchronous language Esterel.

Another approach is to view a synchronous program as a dynamical system, specified as a system of dynamical equations. The job of the synchronous compiler consists then in solving this system of equations. This is the approach taken by the synchronous languages Lustre and Signal.

Advantages of the Synchronous Approach

There are numerous advantages to the synchronous approach. The main one is that the temporal semantics is simplified, thanks to the aforementioned logical time abstraction. This leads to clear temporal constructs and easier time reasoning. Just like ML and Pascal are high level sequential programming languages, in the sense that they are typed and structured, synchronous languages are high level parallel languages in the sense that they are temporally typed and structured. Therefore, programming with ML reduces functional bugs, and programming with synchronous languages reduces temporal bugs.

Another key advantage is the reduction of state-space explosion, thanks to the discrete logical time abstraction: The systems evolves in a sequence of discrete steps, and nothing occurs between two successive steps. A first consequence is that program debugging, testing, and validating is made easier. In particular, formal verification of synchronous programs is possible with techniques like model checking. Another consequence is that synchronous language compilers are able to generate automatically embeddable code, with performances that can be measured precisely. Hence the reaction time of the software can be known at compile time, and can be compared with the desired sampling period. Thus control engineers can specify and tune their automatic control algorithm with synchronous languages, and then rely on the compiler to generate automatically embeddable code, therefore avoiding the tedious and error-prone task of actually implementing the code corresponding to their algorithm.

Synchronous Languages

Historically, the first synchronous language is Esterel, developped at the Centre de Mathématiques Appliquées (CMA) of École des Mines de Paris, in Sophia-Antipolis, France, and later joined by people from INRIA. It is an imperative language that was originally inspired by CCS and SCCS. Esterel introduces constructs like preemption and communication by synchronous broadcast. It is devoted to the programming of discrete event systems. The Esterel Technologies company now markets an industrial version of the Esterel compiler. There exists several other synchronous languages. This is just a selection, presented in chronological order:

While Esterel, Argos, and SL are more suited to discrete event systems, Lustre, Signal and Polis are very close to the specification formalisms used by automatic control engineers: block diagrams, differential equations, data flow networks, automata, and so on.

Impact in Industry

Synchronous languages have recently seen a tremendous interest from leading companies developing automatic control software for critical applications, such as Schneider, Dassault, Aerospatiale, Snecma, Cadence, Texas, Thomson... For instance, Lustre is used to develop the control software for nuclear plants and Airbus planes. Esterel is used to develop DSP chips for mobile phones, to design and verify DVD chips, and to program the flight control software of Rafale fighters. And Signal is used to develop digital controllers for airplane engines. The key advantage pointed by these companies is that the synchronous approach has a rigorous mathematical semantics which allows the programmers to develop critical software faster and better.


In summary, synchronous programming is an interesting approach for designing and programming automatic control software. Synchronous languages have a well founded mathematical semantics which allows ideal temporal constructs as well as formal verification of the programs and automatic code generation. We think that they are ideally suited to programming automatic control software, because they are close to the classic specification formalisms used by control engineers, and also because they offer code generation tools that avoid the tedious and error-prone task of implementing the control algorithm after having specified it. These nice features were confirmed by their recent successes in automatic control industry.

About this web site

The informations have been organised into several pages: Conferences, people and labs, industry partners, software, official bibliography references, useful related links, and a mailing list of people working in the field. Click on the corresponding links on the left frame. - browse the Keyword Map of
Last modifications: March 26th, 2004