A higher-order extension for imperative synchronous languages

This article presents the very first effective design of higher-order modules in the synchronous programming language Esterel. Higher-order modules, together with the robust separate compilation scheme that implements it, allow us to address a yet unexplored application spectrum ranging from rapid prototyping of embedded functionality to hot reconfiguration of embedded software within the formal modeling framework of the "synchronous hypothesis". While extensions of data-flow synchronous languages had already been proposed for Lustre [11] and Signal [25], the adaptation of similar programming concepts to imperative synchronous frameworks like Esterel has long posed major technical challenges, due to the specificity of its model of computation. We present a framework including a formal semantics, a type system, and a modular code generator, that tackle this challenge. We consider a specific stack-based module call convention and a simple event pooling protocol; in consequence signals can refer to modules and modules can be transmitted and instantiated by referencing a signal. We define a type system that computes the potential emissions of a module and prove it sound. Our type system seamlessly fits an extension of Esterel's constructive semantics with higher-order modules.

[1]  Frédéric Boussinot,et al.  The Junior Reactive Kernel , 1999 .

[2]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[3]  Marc Pouzet,et al.  Towards a higher-order synchronous data-flow language , 2004, EMSOFT '04.

[4]  Gérard Boudol,et al.  ULM: A Core Programming Model for Global Computing: (Extended Abstract) , 2004, ESOP.

[5]  Laurent Pautet,et al.  Cronos: A Separate Compilation Toolset for Modular Esterel Applications , 1999, World Congress on Formal Methods.

[6]  Marc Pouzet,et al.  Synchronous Kahn networks , 1996, ICFP '96.

[7]  Stavros Tripakis,et al.  Modularity vs. Reusability: Code Generation from Synchronous Block Diagrams , 2008, 2008 Design, Automation and Test in Europe.

[8]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[9]  Thierry Coupaye,et al.  An Open Component Model and Its Support in Java , 2004, CBSE.

[10]  Stephen A. Edwards,et al.  An Esterel compiler for large control-dominated systems , 2002, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[11]  Robin Milner,et al.  Communicating and mobile systems - the Pi-calculus , 1999 .

[12]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[13]  Klaus Schneider,et al.  Modular Compilation of Synchronous Programs , 2006, DIPES.

[14]  Albert Benveniste,et al.  Compositionality in Dataflow Synchronous Languages: Specification and Code Generation , 1997, COMPOS.

[15]  A. Hugo A Hardware Implementation of Pure Esterel , 1991 .

[16]  Robert de Simone,et al.  Optimizations for faster execution of Esterel programs , 2003, First ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2003. MEMOCODE '03. Proceedings..

[17]  Stephen A. Edwards,et al.  Separate Compilation for Synchronous Modules , 2005, ICESS.

[18]  Frédéric Boussinot,et al.  The SugarCubes tool box: a reactive Java framework , 1998 .

[19]  Frédéric Boussinot,et al.  SugarCubes Implementation of Causality , 1998 .

[20]  Gérard Berry,et al.  The constructive semantics of pure esterel , 1996 .

[21]  Michel Poize,et al.  SAXO-RT: Interpreting Esterel Semantic on a Sequential Execution Structure , 2002, SLAP@ETAPS.

[22]  Jean-Pierre Talpin,et al.  A Synchronous Semantics of Higher-Order Processes for Modeling Reconfigurable Reactive Systems , 1998, FSTTCS.

[23]  Melvin E. Conway,et al.  Design of a separable transition-diagram compiler , 1963, CACM.

[24]  Rahim Tafazolli,et al.  The RMA-A Framework for Reconfiguration of SDR Equipment(Special Issue on Software Defined Radio Technology and Its Applications) , 2002 .

[25]  Stephen A. Edwards,et al.  Compiling Esterel , 2007 .