Abstract
Many Internet of Things and embedded projects are event driven, and therefore require asynchronous and concurrent programming. Current proposals for C++20 suggest that coroutines will have native language support. It is timely to survey the current use of coroutines in embedded systems development. This article investigates existing research which uses or describes coroutines on resource-constrained platforms. The existing research is analysed with regard to: software platform, hardware platform, and capacity; use cases and intended benefits; and the application programming interface design used for coroutines. A systematic mapping study was performed, to select studies published between 2007 and 2018 which contained original research into the application of coroutines on resource-constrained platforms. An initial set of 566 candidate papers, collated from on-line databases, were reduced to only 35 after filters were applied, revealing the following taxonomy. The C 8 C++ programming languages were used by 22 studies out of 35. As regards hardware, 16 studies used 8- or 16-bit processors while 13 used 32-bit processors. The four most common use cases were concurrency (17 papers), network communication (15), sensor readings (9), and data flow (7). The leading intended benefits were code style and simplicity (12 papers), scheduling (9), and efficiency (8). A wide variety of techniques have been used to implement coroutines, including native macros, additional tool chain steps, new language features, and non-portable assembly language. We conclude that there is widespread demand for coroutines on resource-constrained devices. Our findings suggest that there is significant demand for a formalised, stable, well-supported implementation of coroutines in C++, designed with consideration of the special needs of resource-constrained devices, and further that such an implementation would bring benefits specific to such devices.
Supplemental Material
Available for Download
Supplemental movie, appendix, image and software files for, A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems
- Ala Al-Fuqaha, Mohsen Guizani, Mehdi Mohammadi, Mohammed Aledhari, and Moussa Ayyash. 2015. Internet of Things: A survey on enabling technologies, protocols, and applications. IEEE Communications Surveys and Tutorials 17, 4 (2015), 2347--2376. arxiv:arXiv:1011.1669v3.Google Scholar
Digital Library
- Mariano Alvira and Taylor Barton. 2013. Small and Inexpensive Single-Board Computer for Autonomous Sailboat Control. Springer, Berlin, 105--116.Google Scholar
- Sidharta Andalam, Partha S. Roop, Alain Girault, and Claus Traulsen. 2014. A predictable framework for safety-critical embedded systems. IEEE Trans. Comput. 63, 7 (2014), 1600--1612. Google Scholar
Digital Library
- Michael P. Andersen, Gabe Fierro, and David E. Culler. 2016. System design for a synergistic, low power mote/BLE embedded platform. In 2016 15th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN). IEEE, Vienna, Austria, 1--12. Google Scholar
Digital Library
- Michael P. Andersen, Gabe Fierro, and David E. Culler. 2017. Enabling synergy in IoT: Platform to service and beyond. Journal of Network and Computer Applications 81 (2017), 96--110. Google Scholar
Digital Library
- AspenCore Global Media. 2017. 2017 Embedded Markets Study. http://m.eet.com/media/1246048/2017-embedded-market-study.pdf.Google Scholar
- Luigi Atzori, Antonio Iera, and Giacomo Morabito. 2010. The Internet of Things: A survey. Computer Networks 54, 15 (2010), 2787--2805. arxiv:arXiv:1011.1669v3. Google Scholar
Digital Library
- Richard Barry. 2018. The FreeRTOS Kernel. https://www.freertos.org/.Google Scholar
- Alexandre Bergel, William Harrison, Vinny Cahill, and Siobhán Clarke. 2011. FlowTalk: Language support for long-latency operations in embedded devices. IEEE Transactions on Software Engineering 37, 4 (2011), 526--543. Google Scholar
Digital Library
- Gavin Bierman, Claudio Russo, Geoffrey Mainland, Erik Meijer, and Mads Torgersen. 2012. Pause ‘n’ play: Formalizing asynchronous C sharp. In ECOOP 2012 -- Object-Oriented Programming, James Noble (Ed.). Springer Berlin, 233--257. Google Scholar
Digital Library
- Nicholas M. Boers, Paweł Gburzyński, Ioanis Nikolaidis, and Włodek Olesiński. 2010. Developing wireless sensor network applications in a virtual environment. Telecommunication Systems 45, 2--3 (2010), 165--176. Google Scholar
Digital Library
- Pearl Brereton, Barbara A. Kitchenham, David Budgen, Mark Turner, and Mohamed Khalil. 2007. Lessons from applying the systematic literature review process within the software engineering domain. Journal of Systems and Software 80, 4 (2007), 571--583. Google Scholar
Digital Library
- Etienne Brodu, Stéphane Frénot, and Frédéric Oblé. 2015. Toward automatic update from callbacks to promises. In Proceedings of the 1st Workshop on All-Web Real-Time Systems - AWeS’15. ACM, New York, 1--8. Google Scholar
Digital Library
- David L. Clark. 2009. Powering intelligent instruments with Lua scripting. In 2009 IEEE AUTOTESTCON. IEEE, 101--106.Google Scholar
- Marcelo Cohen, Thiago Ponte, Silvana Rossetto, and Noemi Rodriguez. 2007. Using coroutines for RPC in sensor networks. In 2007 IEEE International Parallel and Distributed Processing Symposium. 1--8.Google Scholar
Cross Ref
- Melvin E. Conway. 1963. Design of a separable transition-diagram compiler. Commun. ACM 6, 7 (July 1963), 396--408. Google Scholar
Digital Library
- Ana Lúcia De Moura, Noemi Rodriguez, and Roberto Ierusalimschy. 2004. Coroutines in Lua. Journal of Universal Computer Science 10, 7 (2004), 910--925.Google Scholar
- Tom Duff. 1988. Duff’s Device. https://groups.google.com/forum/#!original/comp.lang.c/sWJtHn6sVps/ESTEdYEpeLsJ.Google Scholar
- Adam Dunkels. 2005. About protothreads. http://dunkels.com/adam/pt/about.html.Google Scholar
- A. Dunkels, B. Gronvall, and T. Voigt. 2004. Contiki—a lightweight and flexible operating system for tiny networked sensors. In 29th Annual IEEE International Conference on Local Computer Networks. IEEE (Comput. Soc.), 455--462. Google Scholar
Digital Library
- Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. 2006. Protothreads: Simplifying event-driven programming of memory-constrained embedded systems. In Proceedings of the 4th International Conference on Embedded Networked Sensor Systems. ACM, New York, 29--42. Google Scholar
Digital Library
- Caglar Durmaz, Moharram Challenger, Orhan Dagdeviren, and Geylani Kardas. 2017. Modelling contiki-based IoT systems. In 6th Symposium on Languages, Applications and Technologies (SLATE 2017) (OpenAccess Series in Informatics (OASIcs)), Ricardo Queirós, Mário Pinto, Alberto Simões, José Paulo Leal, and Maria João Varanda (Eds.), Vol. 56. Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 5:1--5:13.Google Scholar
- ECMA. 2017. ECMAScript Latest Draft (ECMA-262) Async Function Definitions. https://tc39.github.io/ecma262/#sec-async-function-definitions.Google Scholar
- Jonathan Edwards. 2009. Coherent reaction. In Proceeding of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications - OOPSLA’09. ACM, New York, 925. Google Scholar
Digital Library
- Atis Elsts, George Oikonomou, Xenofon Fafoutis, and Robert Piechocki. 2017. Internet of Things for smart homes: Lessons learned from the SPHERE case study. In 2017 Global Internet of Things Summit (GIoTS). 1--6.Google Scholar
- Ralf S. Engelschall. 2000. Portable multithreading—The signal stack trick for user-space thread creation. In USENIX Annual Technical Conference, General Track. https://dl.acm.org/citation.cfm?id=1267744 Google Scholar
Digital Library
- L. Evers, P. J. M. Havinga, J. Kuper, M. E. M. Lijding, and N. Meratnia. 2007. SensorScheme: Supply chain management automation using wireless sensor networks. In 2007 IEEE Conference on Emerging Technologies and Factory Automation (EFTA 2007). 448--455.Google Scholar
Cross Ref
- Rene Fritzsche and Christian Siemers. 2010. Scheduling of time enhanced C (Tec). In 2010 World Automation Congress. 1--6.Google Scholar
- 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 ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation - PLDI’03. ACM, New York, 1--11. Google Scholar
Digital Library
- Damien George. 2014. MicroPython - Python for microcontrollers. http://micropython.org/.Google Scholar
- Damien P. George and Paul Sokolovsky. 2014. General information about the ESP8266 port -- MicroPython 1.9.4 documentation. http://docs.micropython.org/en/latest/esp8266/esp8266/general.html.Google Scholar
- R. Glistvain and M. Aboelaze. 2010. Romantiki OS - A single stack multitasking operating system for resource limited embedded devices. In 7th International Conference on Informatics and Systems (INFOS’10). 1--8. https://ieeexplore.ieee.org/document/5461735.Google Scholar
- Lois Goldthwaite. 2006. Technical report on C++ performance. ISO/IEC PDTR 18015 (2006).Google Scholar
- Nat Goodspeed. 2014. Stackful Coroutines and Stackless Resumable Functions. Technical Report. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4232.pdf.Google Scholar
- Jayavardhana Gubbi, Rajkumar Buyya, Slaven Marusic, and Marimuthu Palaniswami. 2013. Internet of Things (IoT): A vision, architectural elements, and future directions. Future Generation Computer Systems 29, 7 (2013), 1645--1660. arxiv:1207.0203. Google Scholar
Digital Library
- R. K. Gupta, C. N. Coelho Jr., and G. De Micheli. 1992. Synthesis and simulation of digital systems containing interacting hardware and software components. In 29th ACM/IEEE Design Automation Conference (DAC’92). IEEE Computer Society Press, Los Alamitos, CA, 225--230. http://dl.acm.org/citation.cfm?id=113938.149413 Google Scholar
Digital Library
- Philipp Haller and Jason Zaugg. 2016. SIP-22 - Async - Scala Documentation. http://docs.scala-lang.org/sips/pending/async.html.Google Scholar
- Ralph Hempel. 2008. Porting Lua to a microcontroller. Lua Programming Gems (2008).Google Scholar
- Dominic Herity. 2015. Modern C++ in embedded systems—Part 1: Myth and Reality | Embedded. https://www.embedded.com/design/programming-languages-and-tools/4438660/1/Modern-C--in-embedded-systems---Part-1--Myth-and-Reality.Google Scholar
- R. Inam, J. Mäki-Turja, M Sjödin, S. M. H. Ashjaei, and S. Afshar. 2011. Support for hierarchical scheduling in FreeRTOS. In ETFA2011. 1--10.Google Scholar
- ISO/IEC. 2017. N4680 Programming Languages - C++ Extensions for Library Fundamentals. (2017). http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4680.pdf.Google Scholar
- Pekka Jääskeläinen, Pertti Kellomäki, Jarmo Takala, Heikki Kultala, and Mikael Lepistö. 2008. Reducing context switch overhead with compiler-assisted threading. In 2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing, Vol. 2. 461--466. Google Scholar
Digital Library
- Erwan Jahier. 2016. RDBG: A reactive programs extensible debugger. In Proceedings of the 19th International Workshop on Software and Compilers for Embedded Systems (SCOPES’16), Sander Stuijk (Ed.). ACM, New York, NY, USA, 116--125. Google Scholar
Digital Library
- Rubem Kalebe, Gustavo Girao, and Itamir Filho. 2017. A library for scheduling lightweight threads in Internet of Things microcontrollers. In 2017 International Conference on Computing Networking and Informatics (ICCNI). IEEE, 1--7.Google Scholar
Cross Ref
- Kennedy Kambona, Elisa Gonzalez Boix, and Wolfgang De Meuter. 2013. An evaluation of reactive programming and promises for structuring collaborative web applications. In 7th Workshop on Dynamic Languages and Applications (DYLA’13). ACM, New York, 3:1--3:9. Google Scholar
Digital Library
- Marcin Karpinski and Vinny Cahill. 2007. High-level application development is realistic for wireless sensor networks. In 2007 4th Annual IEEE Communications Society Conference on Sensor, Mesh and Ad Hoc Communications and Networks. 610--619.Google Scholar
Cross Ref
- Meysam Khezri, Mehdi Agha Sarram, and Fazlollah Adibniya. 2008. Simplifying concurrent programming of networked embedded systems. In 2008 IEEE International Symposium on Parallel and Distributed Processing with Applications. 993--998. Google Scholar
Digital Library
- Barbara Kitchenham. 2004. Procedures for Performing Systematic Reviews. Technical Report TR/SE-0401. 28 pages.Google Scholar
- Barbara Kitchenham and Stuart Charters. 2007. Guidelines for Performing Systematic Literature Reviews in Software Engineering Version 2.3. Technical Report. arxiv:1304.1186Google Scholar
- Barbara A. Kitchenham, David Budgen, and O. Pearl Brereton. 2011. Using mapping studies as the basis for further research - A participant-observer case study. Information and Software Technology 53, 6 (2011), 638--651. Google Scholar
Digital Library
- Donald E. Knuth. 1997. The art of computer programming, Vol. 1: Fundamental algorithms (3rd. ed.). (1997). Google Scholar
Digital Library
- Patrick Kugler, Philipp Nordhus, and Bjoern Eskofier. 2013. Shimmer, Cooja and Contiki: A new toolset for the simulation of on-node signal processing algorithms. In 2013 IEEE International Conference on Body Sensor Networks. 1--6.Google Scholar
Cross Ref
- Nagendra J. Kumar, Vasanth Asokan, Siddhartha Shivshankar, and Alexander G. Dean. 2007. Efficient software implementation of embedded communication protocol controllers using asynchronous software thread integration with time- and space-efficient procedure calls. ACM Transactions on Embedded Computing Systems 6, 1 (Feb 2007). Google Scholar
Digital Library
- Philip Levis and David Culler. 2002. Mate: A tiny virtual machine for sensor networks. ACM SIGPLAN Notices 37, 10 (2002), 85--95. Google Scholar
Digital Library
- P. Levis, S. Madden, J. Polastre, R. Szewczyk, K. Whitehouse, A. Woo, D. Gay, J. Hill, M. Welsh, E. Brewer, and D. Culler. 2005. TinyOS: An Operating System for Sensor Networks. Springer Berlin, 115--148.Google Scholar
- B. Liskov and L. Shrira. 1988. Promises: Linguistic support for efficient asynchronous procedure calls in distributed systems. ACM SIGPLAN Notices 23, 7 (1988), 260--267. Google Scholar
Digital Library
- Weichen Liu, Jiang Xu, Jogesh K. Muppala, Wei Zhang, Xiaowen Wu, Yaoyao Ye, and Wei Zhang. 2011. Coroutine-based synthesis of efficient embedded software from SystemC models. IEEE Embedded Systems Letters 3, 1 (2011), 46--49. Google Scholar
Digital Library
- LLVM Project. 2018. Download LLVM releases. http://releases.llvm.org/.Google Scholar
- Daniel Lohmann, Olaf Spinczyk, Wanja Hofer, and Wolfgang Schröder-Preikschat. 2012. The Aspect-Aware Design and Implementation of the CiAO Operating-System Family. Springer, Berlin, 168--215. Google Scholar
Digital Library
- Magnus Madsen, Ondřej Lhoták, and Frank Tip. 2017. A model for reasoning about JavaScript promises. Proceedings of the ACM on Programming Languages 1, OOPSLA (2017). Google Scholar
Digital Library
- James Manyika, Michael Chui, Peter Bisson, Jonathan Woetzel, Richard Dobbs, Jacques Bughin, and Dan Aharon. 2015. The Internet of Things: Mapping the value beyond the hype. McKinsey Global InstituteJune (2015), 144. https://www.mckinsey.com//media/McKinsey/Business%20Functions/McKinsey%20Digital/Our%20Insights/The%20Internet%20of%20Things%20The%20value%20of%20digitizing%20the%20physical%20world/The-Internet-of-things-Mapping-the-value-beyond-the-hype.ashx.Google Scholar
- Christopher D. Marlin. 1979. Coroutines: A Programming Methodology, a Language Design and an Implementation. Number 95 in Lecture Notes in Computer Science. Springer, Berlin, Heidelberg. Google Scholar
Digital Library
- Erik Meijer. 2010. Reactive extensions (Rx): Curing your asynchronous programming Blues. In ACM SIGPLAN Commercial Users of Functional Programming on - CUFP’10. ACM Press, New York, New York, USA, 1. Google Scholar
Digital Library
- Microsoft Corporation. 2018. The latest supported Visual C++ downloads. https://support.microsoft.com/en-au/help/2977003/the-latest-supported-visual-c-downloads.Google Scholar
- Eric Mittelette. 2015. Coroutines in Visual Studio 2015--Update 1--Visual C++ Team Blog. https://blogs.msdn.microsoft.com/vcblog/2015/11/30/coroutines-in-visual-studio-2015-update-1/.Google Scholar
- Christian Motika and Reinhard von Hanxleden. 2015. Light-weight synchronous Java (SJL): An approach for programming deterministic reactive systems with Java. Computing 97, 3 (2015), 281--307. Google Scholar
Digital Library
- Peter Niebert and Mathieu Caralp. 2014. Cellular Programming. Springer International Publishing, Cham, 11--22.Google Scholar
- Uzair A. Noman, Behailu Negash, Amir M. Rahmani, Pasi Liljeberg, and Hannu Tenhunen. 2017. From threads to events: Adapting a lightweight middleware for Contiki OS. In 2017 14th IEEE Annual Consumer Communications and Networking Conference (CCNC). 486--491.Google Scholar
Cross Ref
- Semih Okur, David L. Hartveld, Danny Dig, and Arie van Deursen. 2014. A study and toolkit for asynchronous programming in C#. In 36th International Conference on Software Engineering - ICSE 2014. ACM, New York, 1117--1127. Google Scholar
Digital Library
- Frank Oldewurtel, Janne Riihijärvi, Krisakorn Rerkrai, and Petri Mähönen. 2009. The RUNES architecture for reconfigurable embedded and sensor networks. In 2009 3rd International Conference on Sensor Technologies and Applications. 109--116. Google Scholar
Digital Library
- Jonathan Paisley and Joseph Sventek. 2006. Real-time detection of grid bulk transfer traffic. In 2006 IEEE/IFIP Network Operations and Management Symposium NOMS 2006. 66--72.Google Scholar
Cross Ref
- Sihyeong Park, Hyungshin Kim, Soo Yeong Kang, Cheol Hea Koo, and Hyunwoo Joe. 2015. Lua-based virtual machine platform for spacecraft on-board control software. In 2015 IEEE 13th International Conference on Embedded and Ubiquitous Computing. 44--51. Google Scholar
Digital Library
- Kai Petersen, Robert Feldt, Shahid Mujtaba, and Michael Mattsson. 2008. Systematic mapping studies in software engineering. In 12th International Conference on Evaluation and Assessment in Software Engineering. BCS Learning 8 Development Ltd., 68--77. Google Scholar
Digital Library
- Kai Petersen, Sairam Vakkalanka, and Ludwik Kuzniarz. 2015. Guidelines for conducting systematic mapping studies in software engineering: An update. Information and Software Technology 64 (2015), 1--18. arxiv:arXiv:1011.1669v3. Google Scholar
Digital Library
- Till Riedel, Nicolaie Fantana, Adrian Genaid, Dimitar Yordanov, Hedda R. Schmidtke, and Michael Beigl. 2010. Using web service gateways and code generation for sustainable IoT system development. In 2010 Internet of Things (IOT). 1--8.Google Scholar
- Torvald Riegel. 2015. P0073R0—On unifying the coroutines and resumable functions proposals. (2015). http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0073r0.pdf.Google Scholar
- Geoff Romer, James Dennett, and Chandler Carruth. 2018. P1063R0—Core Coroutines Making coroutines simpler, faster, and more general. (2018). http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1063r0.pdf.Google Scholar
- Silvana Rossetto and Noemi Rodriguez. 2006. A cooperative multitasking model for networked sensors. In International Conference on Distributed Computing Systems (2006). Google Scholar
Digital Library
- Paul H. Schimpf. 2012. Modified protothreads for embedded systems. Journal of Computing Sciences in Colleges 28, 1 (2012), 177--184. http://dl.acm.org/citation.cfm?id=2379703.2379738 Google Scholar
Digital Library
- S. Sicari, A. Rizzardi, L. A. Grieco, and A. Coen-Porisini. 2015. Security, privacy and trust in Internet of Things: The road ahead. Computer Networks 76 (Jan. 2015), 146--164. arxiv:1404.7799 Google Scholar
Digital Library
- Ian Skerrett. 2017. IoT Developer Trends 2017 Edition. https://ianskerrett.wordpress.com/2017/04/19/iot-developer-trends-2017-edition/.Google Scholar
- Vincent St-Amour and Marc Feeley. 2010. PICOBIT: A Compact Scheme System for Microcontrollers. Springer Berlin, 1--17.Google Scholar
- Bjarne Stroustrup. 1986. An overview of C++. In SIGPLAN Workshop on Object-Oriented Programming (OOPWORK’86). ACM, New York, 7--18. Google Scholar
Digital Library
- M. Strube, M. Daum, R. Kapitza, F. Villanueva, and F. Dressler. 2010. Dynamic operator replacement in sensor networks. In The 7th IEEE International Conference on Mobile Ad-hoc and Sensor Systems (IEEE MASS 2010). 748--750.Google Scholar
Cross Ref
- E. Susilo, P. Valdastri, A. Menciassi, and P. Dario. 2009. A miniaturized wireless control platform for robotic capsular endoscopy using advanced pseudokernel approach. Sensors and Actuators, A: Physical 156, 1 (2009), 49--58.Google Scholar
- Don Syme, Tomas Petricek, and Dmitry Lomov. 2011. The Fsharp asynchronous programming model. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) 6539 LNCS (2011), 175--189. Google Scholar
Digital Library
- Simon Tatham. 2000. Coroutines in C. https://www.chiark.greenend.org.uk/ sgtatham/coroutines.html.Google Scholar
- The Python Software Foundation. 2018. 9. Classes--Python 3.6.4 documentation. https://docs.python.org/3/tutorial/classes.html#generators.Google Scholar
- C. Tismer. 2000. Continuations and stackless Python. In 8th International Python Conference (2000), 2000--01. https://svn.python.org/www/trunk/pydotorg/workshops/2000-01/proceedings/papers/tismers/spcpaper.doc.Google Scholar
- Christian Tismer. 2018. About Stackless. https://github.com/stackless-dev/stackless/wiki.Google Scholar
- Rob van der Meulen. 2017. Gartner Says 8.4 Billion Connected “Things” Will Be in Use in 2017, Up 31 Percent From 2016. http://www.gartner.com/newsroom/id/3598917.Google Scholar
- Guido van Rossum and Phillip J. Eby. 2005. PEP 342—Coroutines via Enhanced Generators. (2005). https://www.python.org/dev/peps/pep-0342/.Google Scholar
- Reinhard von Hanxleden. 2009. SyncCharts in C: A proposal for light-weight, deterministic concurrency. In 7th ACM International Conference on Embedded Software. ACM, New York, 225--234. Google Scholar
Digital Library
- Rolf H. Weber. 2015. Internet of Things: Privacy issues revisited. Computer Law 8 Security Review: The International Journal of Technology Law and Practice 31 (2015), 618--627.Google Scholar
- Min Yu, SiJi Xiahou, and XinYu Li. 2008. A survey of studying on task scheduling mechanism for TinyOS. 2008 4th International Conference on Wireless Communications, Networking and Mobile Computing (2008), 1--4.Google Scholar
Cross Ref
Index Terms
A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems
Recommendations
Revisiting coroutines
This article advocates the revival of coroutines as a convenient general control abstraction. After proposing a new classification of coroutines, we introduce the concept of full asymmetric coroutines and provide a precise definition for it through an ...
Implementing an embedded compiler using program transformation rules
Domain-specific languages DSLs are well-recognized to ease programming and improve robustness for a specific domain, by providing high-level domain-specific notations and checks of domain-specific properties. The compiler of a DSL, however, is often ...
Hierarchical coroutines a mechanism for improved program structure
ICSE '79: Proceedings of the 4th international conference on Software engineeringThe design of a built-in hierarchical coroutine mechanism for a procedural language is described. This mechanism allows the simultaneous activation of coroutines and recursive procedures and permits coroutines to have value or reference parameters. It ...






Comments