Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3341105.3373994acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

Analyses of a model-based real-time language embedded in C++

Published: 30 March 2020 Publication History

Abstract

Real-time languages found in the literature, starting with Esterel up to Timed C, cannot be compiled using off-the-shelf C++ compilers and processed by off-the-shelf C++ tools (e.g., editors, debuggers, program analyzers). Since C++ is one of the de facto languages to program real-time systems, recently Tice has been proposed as a real-time language that is embedded in C++ by means of TMP (template metaprogramming) so that the experience of programming in Tice is the experience of using an ordinary C++ library, and as such, Tice programs are compilable and processable using off-the-shelf C++ compilers and tools. The proposal, however, only described Tice syntax, semantics, and the compile-time model analyses performed by the language implementation without addressing practical compilation times, which could prevent wide-spread adoption. Considering its novelty, potential industrial impact, and the implementation's repository being public, we analyzed its time complexity and validated our analyses empirically by using GCC and Clang, the widely available industrial off-the-shelf compilers. Furthermore, during analysis we learned the engineering techniques that likely shorten compilation times and make the complex language implementation possible. This paper presents our analyses, their empirical validations, and the engineering techniques learned.

References

[1]
A. Barr. 2018. The Problem with Software: Why Smart Engineers Write Bad Code. The MIT Press, Cambridge, MA, USA.
[2]
S. Baruah, M. Bertogna, and G. Buttazzo. 2015. Multiprocessor Scheduling for Real-Time Systems. Springer, Switzerland.
[3]
G. Berry, S. Moisan, and J.-P. Rigault. 1983. Esterel: Towards a synchronous and semantically sound high-level language for real-time applications. In RTSS. IEEE, Silver Spring, MD, USA, 30--37.
[4]
Z. Borok-Nagy, V. Majer, J. Mihalicza, N. Pataki, and Z. Porkolab. 2010. Visualization of C++ Template Metaprograms. In Work. Conf. on Source Code Analysis and Manip. IEEE, Washington, DC, 167--176.
[5]
A. Burns and A. Wellings. 2009. Real-Time Systems and Programming Languages: Ada, Real-Time Java and C/Real-Time POSIX (4th ed.). Pearson, England.
[6]
S. Cass. 2019. The Top Programming Languages 2019. http://spectrum.ieee.org/static/interactive-the-top-programming-languages-2019 Accessed: 2019-12-14.
[7]
B. Combemale, R. France, J.-M. Jézéquel, B. Rumpe, J. Steel, and D. Vojtisek. 2016. Engineering Modeling Languages. Chapman and Hall/CRC, Boca Raton, FL, USA.
[8]
K. Czarnecki, U. Eisenecker, R. Glück, D. Vandevoorde, and T. Veldhuizen. 2000. Generative Programming and Active Libraries. In Generic Programming, M. Jazayeri, R. G. K. Loos, and D. R. Musser (Eds.). Springer, Germany, 25--39.
[9]
K. Czarnecki and U. W. Eisenecker. 2000. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, New York, NY, USA.
[10]
S. Davis and G. Kiczales. 2010. Registration-based language abstractions. In OOPSLA. ACM, NY, USA, 754--773.
[11]
B. Dawes. 2005. Boost Background Information. https://www.boost.org/users/index.html Accessed: 2019-12-14.
[12]
M. Deters, C. Gill, and R. Cytron. 2003. Rate-Monotonic Analysis in the C++ Type System. In RTAS Workshop on MDES. IEEE, Washington, DC. http://www.cse.wustl.edu/~cdgill/RTAS03/mdes_program.html
[13]
B. Emshoff. 2014. Using C++ on Mission and Safety Critical Platforms. https://www.youtube.com/watch?v=sRe77Mdna0Y Accessed: 2019-12-14.
[14]
J. Falcou and V. Reverdy. 2019. EDSL Infinity Wars. http://www.youtube.com/watch?v=XH00wB_bbU4 Accessed: 2019-12-14.
[15]
T. Foote. 2017. Celebrating 9 Years of ROS. https://spectrum.ieee.org/automaton/robotics/robotics-software/celebrating-9-years-of-ros Accessed: 2019-12-14.
[16]
J. Forget. 2009. A Synchronous Language for Critical Embedded Systems with Multiple Real-Time Constraints. Theses. Institut Supérieur de l'Aéronautique et de l'Espace. https://hal.archives-ouvertes.fr/tel-01942421
[17]
T. Gautier, P. Le Guernic, and L. Besnard. 1987. SIGNAL. In Functional Programming Languages and Computer Architecture, G. Kahn (Ed.). Springer, Germany, 257--277.
[18]
N. Gehani and K. Ramamritham. 1991. Real-time Concurrent C. Real-Time Systems 3, 4 (01 Dec 1991), 377--405.
[19]
B. Gerkey. 2014. Why ROS 2.0? http://design.ros2.org/articles/why_ros2.html Accessed: 2019-12-14.
[20]
J. Gil and K. Lenz. 2010. Simple and safe SQL queries with C++ templates. Sci. of Comp. Prog. 75, 7 (2010), 573--595.
[21]
P. Graham. 2010. Beating the Averages. In Hackers & Painters: Big Ideas From The ComputerAge. O'Reilly Media, Sebastopol, CA, USA, 169--180.
[22]
Philippe Groarke. 2019. Re: [EXTERNAL] Re: Linear algebra library proposal. https://lists.isocpp.org/sg14/2019/06/0149.php Accessed: 2019-12-14.
[23]
T. A. Henzinger, B. Horowitz, and C. M. Kirsch. 2001. Giotto. In EMSOFT. Springer, Germany, 166--184.
[24]
P. C. Hickey, L. Pike, T. Elliott, J. Bielman, and J. Launchbury. 2014. Building Embedded Systems with Embedded DSLs. SIGPLAN Not. 49, 9 (Aug. 2014), 3--9.
[25]
S. Hong and R. Gerber. 1993. Scheduling with Compiler Transformations: The TCEL Approach. In RTOSS. IEEE, Washington, DC, 80--84.
[26]
Y. Ishikawa and H. Tokuda. 1990. Object-oriented Real-time Language Design. In OOPSLA/ECOOP. ACM, NY, USA, 289--298.
[27]
M. Kerrisk, P. Zijlstra, and J. Lelli. 2019. sched---overview of CPU scheduling. http://man7.org/linux/man-pages/man7/sched.7.html Accessed: 2019-12-14.
[28]
E. Kligerman and A. D. Stoyenko. 1986. Real-Time Euclid. IEEE Trans. on Soft. Eng. SE-12, 9 (Sept 1986), 941--949.
[29]
C. Kormanyos. 2013. Real-Time C++. Springer, Germany.
[30]
M. Maimone. 2014. C++ on Mars. https://www.youtube.com/watch?v=3SdSKZFoUa8 Accessed: 2019-12-14.
[31]
S. Natarajan and D. Broman. 2018. Timed C. In RTAS. IEEE, Washington, DC, 227--239.
[32]
C. Pagetti, D. Saussié, R. Gratia, E. Noulard, and P. Siron. 2014. The ROSACE case study: From Simulink specification to multi/many-core execution. In RTAS. IEEE, Washington, DC, USA, 309--318.
[33]
L. Palopoli, G. Buttazzo, and P. Ancilotti. 1999. A C language extension for programming real-time applications. In RTCSA. IEEE, Washington, DC, 103--110.
[34]
Z. Porkoláb. 2010. Functional Programming with C++ Template Metaprograms. Springer, Germany, 306--353.
[35]
T. Prastowo. 2018. The Repository of Tice Library. https://savannah.nongnu.org/projects/tice Accessed: 2019-12-14.
[36]
T. Prastowo, L. Palopoli, and L. Abeni. 2019. C++ Hard-real-time Active Library: Syntax, Semantics, and Compilation of Tice Programs. SIGBED Rev. 16, 3 (Nov. 2019), 69--74.
[37]
StackOverflow. 2019. Developer Survey Results 2019: How Technologies Are Connected. https://insights.stackoverflow.com/survey/2019#technology-_-how-technologies-are-connected Accessed: 2019-12-14.
[38]
A. D. Stoyenko. 1992. The Evolution and State-of-the-art of Real-time Languages. J. Syst. Softw. 18, 1 (April 1992), 61--84.
[39]
G. Travis. 2019. How the Boeing 737 Max Disaster Looks to a Software Developer. https://spectrum.ieee.org/aerospace/aviation/how-the-boeing-737-max-disaster-looks-to-a-software-developer Accessed: 2019-12-14.
[40]
D. Tuchscherer, A. Weibert, and F. Tränkle. 2016. Modern C++ As a Modeling Language for Automated Driving and Human-robot Collaboration. In MODELS. ACM, NY, USA, 136--142.
[41]
T. L. Veldhuizen. 2000. Blitz++: The Library that Thinks it is a Compiler. In Advances in Soft. Tools for Sci. Comp., H. P. Langtangen, A. M. Bruaset, and E. Quak (Eds.). Springer, Germany, 57--87.

Cited By

View all
  • (2020)Tice: A real‐time language compilable using C++ compilersSoftware: Practice and Experience10.1002/spe.289150:12(2252-2292)Online publication date: 5-Oct-2020

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SAC '20: Proceedings of the 35th Annual ACM Symposium on Applied Computing
March 2020
2348 pages
ISBN:9781450368667
DOI:10.1145/3341105
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 30 March 2020

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. C++ template meta-programming (TMP)
  2. active library
  3. embedded domain-specific language (EDSL)
  4. generative programming
  5. real-time language

Qualifiers

  • Research-article

Conference

SAC '20
Sponsor:
SAC '20: The 35th ACM/SIGAPP Symposium on Applied Computing
March 30 - April 3, 2020
Brno, Czech Republic

Acceptance Rates

Overall Acceptance Rate 1,650 of 6,669 submissions, 25%

Upcoming Conference

SAC '25
The 40th ACM/SIGAPP Symposium on Applied Computing
March 31 - April 4, 2025
Catania , Italy

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)2
Reflects downloads up to 22 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2020)Tice: A real‐time language compilable using C++ compilersSoftware: Practice and Experience10.1002/spe.289150:12(2252-2292)Online publication date: 5-Oct-2020

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media