Jason Bonthron

Esterel

Esterel is one of several "synchronous" languages. Synchronous languages ensure determinism for highly concurrent reactive systems. They have broad industrial applications particularly critical control systems like airplanes. Incredibly the three main synchronous languages: Esterel, Signal, and LUSTRE were invented independently at different universities, but at the same time and in the same country ! (France, early 1980s)

The fundamental principle on which Esterel is based is called: the synchronous hypothesis that states a system reacts to environmental events in zero time. Furthermore, communication among system components is also instantaneous. The synchronous hypothesis separates the notion of physical time from the execution time of the system, which is largely a side-effect of an implementation. Esterel was designed by Gérard Berry at Inria (the National Institute for Research in Computer Science and Automation).

"This is a brutal but effective way to separate concerns, simplify the semantics, and reconcile concurrency and determinism. It is the interference between physical and implementation time that makes classical asynchronous concurrent programs nondeterministic, difficult to write, and hard to analyze." (Berry)

The following are papers I've collected on Esterel. Also of interest is SyncCharts, a graphical model that is fully compatible with the imperative synchronous language Esterel. And HipHop a domain-specific language dedicated to event-based process orchestration using the synchronous reactive model of Esterel.


Massif de l'Esterel 43° 30′ N, 6° 49′ E 

Synchronous Programming of Reactive Systems: an Introduction to Esterel
August 1988
Gerard Berry

A reactive system is a system that repeatedly responds to inputs from its environment by producing outputs. Reactive systems include real-time process controllers and all kinds of control automata. We present a new synchronous programming technology, introduced in the Esterel languages. It is based on a synchrony hypothesis which states that response to input is instantaneous.

The Esterel v5 Language Primer
January 2004
Gerard Berry

This document is the primer for the Esterel synchronous programming language, which is devoted to programming control-dominated software or hardware reactive systems. The Evolution of Esterel; A Brief History of Esterel; Other Synchronous Languages; Deterministic Reactive Systems; Esterel Programming Style; Constructive Causality; Reflections on Perfect Synchrony; Esterel Grammar;

The Semantics of Pure Esterel
January 1993
Gerard Berry

Esterel is a synchronous programming language dedicated to hardware or software reactive systems. It is based on the perfect synchrony hypothesis: control transmission, signal broadcasting, and elementary computations are supposed to take no time, making the ouputs of a system perfectly synchronous with its inputs. Perfect synchrony has the major advantage of making concurrency and determinism live together in harmony.

The Esterel Programming Language: Design, Semantics, Implementation
May 1988
Gerard Berry

We present the Esterel programming language which is especially designed to program reactive systems, that is systems which maintain a permanent interaction with the environment: real time process controllers, communication protocols, man-machine interface drivers, etc. Esterel is a deterministic concurrent programming language.

Communicating Reactive Processes
March 1993
Gerard Berry

We present a new programming paradigm called Communicating Reactive Processes or CRP that unifies the capabilities of asynchronous and synchronous concurrent programming languages.

Programming a Digital Watch in Esterel v3
January 1989
Gerard Berry

We study how to program a reasonably complex digital wristwatch in Esterel, how to simulate the Esterel program under the Esterel v3 system, and how to execute the generated C code in a fullscreen simulation of the wristwatch under UNIX.

Representation and Analysis of Reactive Behaviors: A Synchronous Approach
July 1996
Charles André

Reactive systems involve communication, concurrency and preemption. Few models support these three concepts, even less can correctly deal with their coexistence. The synchronous paradigm allows a rigorous approach to this problem, crucial to reactive systems. This paper analyzes the underlying hypotheses of the synchronous approach. Reactive behaviors are characterized. A new visual model (SYNCCHARTS) is then proposed. This graphical model is fully compatible with the imperative synchronous language Esterel and is specially convenient to express complex reactive behaviors.

Computing SyncCharts Reactions
July 2003
Charles André

SyncCharts are a state-based visual synchronous model. Though using a simple graphical syntax, SyncCharts may exhibit complex instantaneous behavior, mixing concurrent evolutions, preemptions and state re-incarnations. This paper explains such reactions in terms of microsteps. The underlying semantics is a constructive semantics, fully compatible with the Esterel’s semantics. The semantics is presented in a semi-formal way, as resulting from the cooperation of concurrent reactive cells.

Semantics of SyncCharts
April 2003
Charles André

SyncCharts are a visual synchronous model. They were conceived in the mid nineties as a graphical notation for the Esterel language. As such, SyncCharts were given a mathematical semantics fully compatible with the Esterel semantics. A technical report explained this semantics. This is a valuable document for people familiar with formal semantics but may be difficult to read for most potential users. Since SyncCharts were also devised as a graphical model, akin to finite state machine, intended for engineers, an informal presentation of the model and its semantics was missing. This paper is an attempt to fill this need.

Argos: an Automaton-Based Synchronous Language
April 2008
Florence Maraninchi

Argos belongs to the family of synchronous languages , designed for programming reactive systems (Lustre, Esterel, Signal. Argos is a set of operators that allow one to combine Boolean Mealy machines, in a compositional way. It takes its origin in Statecharts, but with the Argos operators, one an build only a subset of Statecharts, roughly those that do not make use of multi-level arrows. We explain the main motivations for the definition of Argos, and the main differences with Statecharts and their numerous semantics. We define the set of operators, give them a perfectly synchronous semantics in the sense of Esterel, and prove that it is compositional, with respect to the trace equivalence of Boolean Mealy machines.

IEEE: The Synchronous Languages 12 years later
albert benveniste, paul caspi, stephen a. edwards, nicolas halbwachs, paul le guernic, and robert de simone
January 2003

Today, synchronous languages have been established as a technology of choice for modeling, specifying, validating, and implementing real-time embedded applications. The paradigm of synchrony has emerged as an engineer-friendly design method based on mathematically sound tools. This paper discusses the improvements, difficulties, and successes that have occurred with the synchronous languages since 1991. It begins with a discussion of the synchronous philosophy and the challenge of maintaining functional, deterministic system behavior when combining the synchronous notion of instantaneous communication with deterministic concurrency.

Hop and HipHop : Multitier Web Orchestration
November 2013
Gerard Berry
Manuel Serrano

Rich applications merge classical computing, client-server concurrency, web-based interfaces, and the complex time- and event-based reactive programming found in embedded systems. To handle them, we extend the Hop web programming platform by HipHop, a domain-specific language dedicated to event-based process orchestration. Borrowing the synchronous reactive model of Esterel, HipHop is based on synchronous concurrency and preemption primitives that are known to be key components for the modular design of complex reactive behaviors. HipHop departs from Esterel by its ability to handle the dynamicity of Web applications, thanks to the reflexivity of Hop.