ReactiveML, ten years later

Ten years ago we introduced ReactiveML, an extension of a strict ML language with synchronous parallelism à la Esterel to program reactive applications. Our purpose was to demonstrate that synchronous language principles, originally invented and used for critical real-time control software, would integrate well with ML and prove useful in a wider context: reactive applications with complex data structures and sequential algorithms, organized as a dynamically evolving set of tightly synchronized parallel tasks. While all ReactiveML programs presented at PPDP'05 still compile, the language has evolved continuously to incorporate novel programming constructs, compilation techniques and dedicated static analyses. ReactiveML has been used for applications that we never anticipated: the simulation of large-scale ad-hoc and sensor networks, an interactive debugger, and interactive mixed music. These applications were only possible due to the efficient compilation of ReactiveML into sequential code, which we present here for the first time. We also present a parallel implementation that uses work-stealing techniques through shared memory. Finally, we give a retrospective view on ReactiveML over the past ten years.

[1]  Gérard Berry,et al.  Esterel on hardware , 1992, Philosophical Transactions of the Royal Society of London. Series A: Physical and Engineering Sciences.

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

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

[4]  Louis Mandel,et al.  Reactivity of Cooperative Systems - Application to ReactiveML , 2014, SAS.

[5]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[6]  Louis Mandel,et al.  Interactive Programming of Reactive Systems , 2009, Electron. Notes Theor. Comput. Sci..

[7]  Mitchell Wand,et al.  Continuation-Based Multiprocessing , 1980, High. Order Symb. Comput..

[8]  Camilo Rueda,et al.  Executing Hierarchical Interactive Scores in ReactiveML , 2014 .

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

[10]  Louis Mandel,et al.  Conception, sémantique et implantation de réactiveML : un langage à la ML pour la programmation réactive , 2006 .

[11]  David Chase,et al.  Dynamic circular work-stealing deque , 2005, SPAA '05.

[12]  Frédéric Boussinot Reactive Programming of Cellular Automata , 2004 .

[13]  Paul Hudak,et al.  Functional reactive programming from first principles , 2000, PLDI '00.

[14]  Manuel Serrano,et al.  Hiphop: a synchronous reactive extension for hop , 2011, PLASTIC '11.

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

[16]  Frédéric Boussinot,et al.  Reactive C: An extension of C to program reactive systems , 1991, Softw. Pract. Exp..

[17]  Robert de Simone,et al.  The SL Synchronous Language , 1996, IEEE Trans. Software Eng..

[18]  Xavier Leroy The objective caml system release 3 , 2001 .

[19]  John C. Reynolds,et al.  The discoveries of continuations , 1993, LISP Symb. Comput..

[20]  Louis Mandel,et al.  Simulation of Mobile Ad hoc Network Protocols in ReactiveML , 2005 .

[21]  Maurice Herlihy,et al.  The art of multiprocessor programming , 2020, PODC '06.

[22]  Stephen A. Edwards,et al.  The synchronous languages 12 years later , 2003, Proc. IEEE.

[23]  Marc Pouzet,et al.  A synchronous embedding of Antescofo, a domain-specific language for interactive mixed music , 2013, 2013 Proceedings of the International Conference on Embedded Software (EMSOFT).

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

[25]  Christophe Deleuze Programmation réactive en OCaml , 2009 .

[26]  Frédéric Boussinot,et al.  FairThreads: mixing cooperative and preemptive threads in C , 2006, Concurr. Comput. Pract. Exp..

[27]  Jérôme Vouillon,et al.  Lwt: a cooperative thread library , 2008, ML '08.

[28]  Robert de Simone,et al.  ESTEREL: a formal method applied to avionic software development , 2000, Sci. Comput. Program..

[29]  Frédéric Boussinot FairThreads: mixing cooperative and preemptive threads in C: Research Articles , 2006 .

[30]  Marc Pouzet,et al.  Selected Papers from SLA++P 07 and 08 Model-Driven High-Level Programming of Embedded Systems , 2008, EURASIP J. Embed. Syst..

[31]  X. Leroy The Objective Caml system release 3.09 Documentation and user''s manual , 2005 .

[32]  Marc Pouzet,et al.  Lucid Synchrone - version 2.0: Tutorial and reference manual , 2001 .

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

[34]  Hubertus Franke,et al.  An Efficient Implementation of MPI , 1994 .

[35]  Marc Pouzet,et al.  ReactiveML: a reactive extension to ML , 2005, PPDP.

[36]  Craig W. Reynolds Flocks, herds, and schools: a distributed behavioral model , 1998 .

[37]  Gérard Berry,et al.  Preemption in Concurrent Systems , 1993, FSTTCS.

[38]  Marc Pouzet,et al.  Time refinement in a functional synchronous language , 2015, Sci. Comput. Program..

[39]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1988, Theoretical Computer Science.

[40]  Florence Maraninchi,et al.  GLONEMO: global and accurate formal models for the analysis of ad-hoc sensor networks , 2006, InterSense '06.