skip to main content
research-article

The Design and Implementation of the Synchronous Language CÉU

Published:13 July 2017Publication History
Skip Abstract Section

Abstract

CéU is a synchronous language targeting soft real-time systems. It is inspired by Esterel and has a simple semantics with fine-grain control over program execution. CéU uses an event-triggered notion of time that enables compile-time checks to detect conflicting concurrent statements, resulting in deterministic and concurrency-safe programs. We present the particularities of our design in comparison to Esterel, such as stack-based internal events, concurrency checks, safe integration with C, and first-class timers. We also present two implementation back ends: one aiming for resource efficiency and interoperability with C, and another as a virtual machine that allows remote reprogramming.

References

  1. Sidharta Andalam, Partha Roop, and Alain Girault. 2010. Predictable multithreading of embedded applications using PRET-C. In Proceedings of the MEMOCODE Conference (MEMOCODE’10). IEEE, Los Alamitos, CA, 159--168. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Austin Armbruster, Jason Baker, Antonio Cunei, Chapman Flack, David Holmes, Filip Pizlo, Edward Pla, Marek Prochazka, and Jan Vitek. 2007. A real-time Java virtual machine with applications in avionics. ACM Transactions on Embedded Computing Systems 7, 1, 5.Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Faisal Aslam, Luminous Fennell, Christian Schindelhauer, Peter Thiemann, Gidon Ernst, Elmar Haussmann, Stefan Rührup, and Zastash A. Uzmi. 2010. Optimized Java binary and virtual machine for tiny motes. In Proceedings of the DCOSS Conference (DCOSS’10). 15--30. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Jean-Christophe Baillie. 2005. Urbi: Towards a universal robotic low-level programming language. In Proceedings of the International Conference on Intelligent Robots and Systems. IEEE, Los Alamitos, CA, 820--825. Google ScholarGoogle ScholarCross RefCross Ref
  5. Albert Benveniste, Paul Caspi, Stephen A. Edwards, Nicolas Halbwachs, Paul Le Guernic, and Robert De Simone. 2003. The synchronous languages twelve years later. Proceedings of the IEEE 91, 64--83. Google ScholarGoogle ScholarCross RefCross Ref
  6. Gérard Berry. 1993. Preemption in concurrent systems. In Foundations of SoftwareTechnology and Theoretical Computer Science. Lecture Notes in Computer Science, Vol. 761. Springer, 72--93. Google ScholarGoogle ScholarCross RefCross Ref
  7. Gérard Berry. 1999. The Constructive Semantics of Pure Esterel (Draft Version 3). Ecole des Mines de Paris and INRIA.Google ScholarGoogle Scholar
  8. Gérard Berry. 2000. The Esterel-V5 Language Primer (Version 5.10, Release 2.0). CMA and Inria, Sophia-Antipolis, France.Google ScholarGoogle Scholar
  9. G. Berry, S. Ramesh, and R. K. Shyamasundar. 1993. Communicating reactive processes. In Proceedings of the POPL Conference (POPL’93). ACM, New York, NY, 85--98. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Marian Boldt, Claus Traulsen, and Reinhard von Hanxleden. 2008. Worst case reaction time analysis of concurrent reactive programs. Electronic Notes in Theoretical Computer Science 203, 4, 65--79. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Gregory Bollella and James Gosling. 2000. The real-time specification for Java. Computer 33, 6, 47--54. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. T. Bourke and A. Sowmya. 2009. Delays in Esterel. In Proceedings of the SYNCHRON Conference (SYNCHRON’09). 55.Google ScholarGoogle Scholar
  13. Frédéric Boussinot. 1991. Reactive C: An extension of C to program reactive systems. Software: Practice and Experience 21, 4, 401--428. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Frédéric Boussinot. 1998. SugarCubes Implementation of Causality. Retrieved June 5, 2017, from http://www-sop.inria.fr/meije/rp/RapportsRecherche/RR-3487.pdfGoogle ScholarGoogle Scholar
  15. Frédéric Boussinot and Robert De Simone. 1991. The Esterel language. Proceedings of the IEEE 79, 9, 1293--1304. Google ScholarGoogle ScholarCross RefCross Ref
  16. Adriano Branco, Francisco Sant’Anna, Roberto Ierusalimschy, Noemi Rodriguez, and Silvana Rossetto. 2015. Terra: Flexibility and safety in wireless sensor networks. ACM Transactions on Sensor Networks 11, 4, Article No. 59. DOI:http://dx.doi.org/10.1145/2811267 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Niels Brouwers, Peter Corke, and Koen Langendoen. 2008. Darjeeling, a Java compatible virtual machine for microcontrollers. In Proceedings of the ACM/IFIP/USENIX Middleware’08 Conference Companion. ACM, New York, NY, 18--23. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Jonathan Chaffer. 2009. Learning JQuery 1.3: Better Interaction and Web Development with Simple JavaScript Techniques. Packt Publishing Ltd.Google ScholarGoogle Scholar
  19. Etienne Closse, Michel Poize, Jacques Pulou, Patrick Venier, and Daniel Weil. 2002. Saxo--RT: Interpreting Esterel semantic on a sequential execution structure. Electronic Notes in Theoretical Computer Science 65, 5, 80--94. Google ScholarGoogle ScholarCross RefCross Ref
  20. M. W. Sajeewa Dayaratne, Partha S. Roop, and Zoran Salcic. 2005. Direct execution of Esterel using reactive microprocessors. In Proceedings of the SLAP Conference (SLAP’05).Google ScholarGoogle Scholar
  21. Ana Lúcia de Moura and Roberto Ierusalimschy. 2009. Revisiting coroutines. ACM Transactions on Programming Languages and Systems 31, 2, 6:1--6:31.Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Robert de Simone, Jean-Pierre Talpin, and Dumitru Potop-Butucaru. 2005. The synchronous hypothesis and synchronous languages. In Embedded Systems Handbook, (2nd ed.), R. Zurawski (Ed.). CRC Press, Boca Raton, FL, 8--1. Google ScholarGoogle ScholarCross RefCross Ref
  23. Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. 2006. Protothreads: Simplifying event-driven programming of memory-constrained embedded systems. In Proceedings of the SenSys Conference (SenSys’06). ACM, New York, NY, 29--42. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Robert Eckstein, Marc Loy, and Dave Wood. 1998. Java Swing. O’Reilly 8 Associates.Google ScholarGoogle Scholar
  25. Stephen A. Edwards. 1999. Compiling Esterel into sequential code. In Proceedings of the 7th International Workshop on Hardware/Software Codesign. ACM, New York, NY, 147--151.Google ScholarGoogle Scholar
  26. Stephen A. Edwards. 2003. Tutorial: Compiling concurrent languages for sequential processors. ACM Transactions on Design Automation of Electronic Systems 8, 2, 141--187. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Stephen A. Edwards. 2005. Using and Compiling Esterel. In Proceedings of the MEMOCODE’05 Tutorial.Google ScholarGoogle Scholar
  28. David Gay, Philip Levis, Robert von Behren, Matt Welsh, Eric Brewer, and David Culler. 2003. The nesC language: A holistic approach to networked embedded systems. In Proceedings of the PLDI Conference (PLDI’03). 1--11. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Nicolas Halbwachs. 1994. Synchronous Programming of Reactive Systems. Vol. 215. Springer Science 8 Business Media.Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Grégoire Hamon and John Rushby. 2007. An operational semantics for stateflow. International Journal on Software Tools for Technology Transfer 9, 5--6, 447--456. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. David Harel and Amnon Naamad. 1996. The STATEMATE semantics of statecharts. ACM Transactions on Software Engineering and Methodology 5, 4, 293--333. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Wahbi Haribi. 2012. Compiling Esterel for multi-core execution. In Proceedings of the Synchrone Sprachen Seminar. 45.Google ScholarGoogle Scholar
  33. Jason Hill, Robert Szewczyk, Alec Woo, Seth Hollar, David Culler, and Kristofer Pister. 2000. System architecture directions for networked sensors. ACM SIGPLAN Notices 35, 11, 93--104. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Marcin Karpinski and Vinny Cahill. 2007. High-level application development is realistic for wireless sensor networks. In Proceedings of the SECON Conference (SECON’07). 610--619. Google ScholarGoogle ScholarCross RefCross Ref
  35. Oliver Kasten and Kay Römer. 2005. Beyond event handlers: Programming wireless sensors with attributed state machines. In Proceedings of the ISPN Conference (IPSN’05). 45--52. Google ScholarGoogle ScholarCross RefCross Ref
  36. Hermann Kopetz. 2011. Real-Time Systems: Design Principles for Distributed Embedded Applications. Springer Science 8 Business Media.Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Xin Li, Jan Lukoschus, Marian Boldt, Michael Harder, and Reinhard von Hanxleden. 2005. An Esterel processor with full preemption support and its worst case reaction time analysis. In Proceedings of the CSES Conference (CASES’05). ACM, New York, NY, 225--236. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Louis Mandel and Marc Pouzet. 2005. ReactiveML: A reactive extension to ML. In Proceedings of the PPDP Conference (PPDP’05). ACM, New York, NY, 82--93. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Robert Nystrom. 2014. Game Programming Patterns. Genever Benning.Google ScholarGoogle Scholar
  40. John K. Ousterhout. 1991. An X11 toolkit based on the TCL language. In Proceedings of the USENIX Winter Conference. 105--116.Google ScholarGoogle Scholar
  41. John K. Ousterhout. 1996. Why Threads Are a Bad Idea (for most purposes). Retrieved June 5, 2017, from https://web.stanford.edu/~ouster/cgi-bin/papers/threads.pdf.Google ScholarGoogle Scholar
  42. Becky Plummer, Mukul Khajanchi, and Stephen A. Edwards. 2006. An Esterel virtual machine for embedded systems. In Proceedings of the SLAP Conference (SLAP’06).Google ScholarGoogle Scholar
  43. P. S. Roop, Z. Salcic, and M. W. Dayaratne. 2004. Towards direct execution of Esterel programs on reactive processors. In Proceedings of the EMSOFT Conference (EMSOFT’04). ACM, New York, NY, 240--248. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Francisco Sant’Anna. 2013. Safe System-Level Concurrency on Resource-Constrained Nodes with Céu. Ph.D. Dissertation. PUC--Rio.Google ScholarGoogle Scholar
  45. Francisco Sant’Anna, Noemi Rodriguez, and Roberto Ierusalimschy. 2012. Céu: Embedded, Safe, and Reactive Programming. Technical Report 12/12. PUC-Rio.Google ScholarGoogle Scholar
  46. Francisco Sant’Anna, Noemi Rodriguez, and Roberto Ierusalimschy. 2013a. Advanced control reactivity for embedded systems. In Proceedings of the Workshop on Reactivity, Events, and Modularity (REM’13).Google ScholarGoogle Scholar
  47. Francisco Sant’Anna, Noemi Rodriguez, and Roberto Ierusalimschy. 2015. Structured synchronous reactive programming with Céu. In Proceedings of the Modularity Conference (Modularity’15).Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Francisco Sant’Anna, Noemi Rodriguez, Roberto Ierusalimschy, Olaf Landsiedel, and Philippas Tsigas. 2013b. Safe system-level concurrency on resource-constrained nodes. In Proceedings of the SenSys Conference (SenSys’13). ACM, New York, NY. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Klaus Schneider and Michael Wenz. 2001. A new method for compiling schizophrenic synchronous programs. In Proceedings of the CASES Conference (CASES’01). ACM, New York, NY, 49--58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Ellen M. Sentovich. 1997. Quick conservative causality analysis. In Proceedings of the 10th International Symposium on System Synthesis. IEEE, Los Alamitos, CA, 2--8. Google ScholarGoogle ScholarCross RefCross Ref
  51. Thomas R. Shiple, Gerard Berry, and Hemé Touati. 1996. Constructive analysis of cyclic circuits. In Proceedings of the ED and TC Conference (ED8TC’96). IEEE, Los Alamitos, CA, 328--333. Google ScholarGoogle ScholarCross RefCross Ref
  52. Olivier Tardieu and Robert De Simone. 2004. Curing schizophrenia by program rewriting in Esterel. In Proceedings of the MEMOCODE Conference (MEMOCODE’04). IEEE, Los Alamitos, CA, 39--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Stefan Tilkov and Steve Vinoski. 2010. Node.js: Using JavaScript to build high-performance network programs. IEEE Internet Computing 6, 80--83. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Michael von der Beeck. 1994. A comparison of statecharts variants. In Proceedings of the FTRTFT Conference (FTRTFT’94). 128--148.Google ScholarGoogle Scholar
  55. Reinhard von Hanxleden. 2009. SyncCharts in C: A proposal for light-weight, deterministic concurrency. In Proceedings of the EMSOFT Conference (EMSOFT’09). ACM, Los Alamitos, CA, 225--234. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Reinhard von Hanxleden, Björn Duderstadt, Christian Motika, Steven Smyth, Michael Mendler, Joaquín Aguado, Stephen Mercer, and Owen O’Brien. 2014a. SCCharts: Sequentially constructive statecharts for safety-critical applications: HW/SW-synthesis for a conservative extension of synchronous statecharts. In Proceedings of the PLDI Conference (PLDI’14). ACM, New York, NY, 372--383. DOI:http://dx.doi.org/10.1145/2594291.2594310 Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Reinhard von Hanxleden, Michael Mendler, Joaquín Aguado, Björn Duderstadt, Insa Fuhrmann, Christian Motika, Stephen Mercer, Owen O’brien, and Partha Roop. 2014b. Sequentially constructive concurrency—a conservative extension of the synchronous model of computation. ACM Transactions on Embedded Computing Systems 13, 4 (Suppl), Article No. 144. DOI:http://dx.doi.org/10.1145/2627350 Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Daniel Weil, Valérie Bertin, Etienne Closse, Michel Poize, Patrick Venier, and Jacques Pulou. 2000. Efficient compilation of ESTEREL for real-time embedded systems. In Proceedings of the CASES Conference (CASES’00). ACM, New York, NY, 2--8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Simon Yuan, Li Hsien Yoong, and Partha S. Roop. 2011. Compiling Esterel for multi-core execution. In Proceedings of the 14th DSD Conference (DSD’11). IEEE, Los Alamitos, CA, 727--735. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Jeong-Han Yun, Chul-Joo Kim, Seonggun Kim, Kwang-Moo Choe, and Taisook Han. 2013. Detection of harmful schizophrenic statements in Esterel. ACM Transactions on Embedded Computing Systems 12, 3, 80.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. The Design and Implementation of the Synchronous Language CÉU

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!