{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,5]],"date-time":"2026-04-05T20:32:51Z","timestamp":1775421171163,"version":"3.50.1"},"reference-count":34,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA1","license":[{"start":{"date-parts":[[2024,4,29]],"date-time":"2024-04-29T00:00:00Z","timestamp":1714348800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"National Natural Science Foundation of China","award":["62172217, U1533130"],"award-info":[{"award-number":["62172217, U1533130"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,4,29]]},"abstract":"<jats:p>Aspect-Oriented Programming (AOP) is a programming paradigm that implements crosscutting concerns in a modular way. People have witnessed the prosperity of AOP languages for Java and C++, such as AspectJ and AspectC++, which has propelled AOP to become an important programming paradigm with many interesting application scenarios, e.g., runtime verification. In contrast, the AOP languages for C are still poor and lack compiler support. In this paper, we design a new general-purpose and expressive aspect-oriented C programming language, namely Aclang, and implement a compiler for it, which brings fully-fledged AOP support into the C domain. We have evaluated the effectiveness and performance of our compiler against two state-of-the-art tools, ACC and AspectC++. In terms of effectiveness, Aclang outperforms ACC and AspectC++. In terms of performance, Aclang outperforms ACC in execution time and outperforms AspectC++ in both execution time and memory consumption.<\/jats:p>","DOI":"10.1145\/3649834","type":"journal-article","created":{"date-parts":[[2024,4,29]],"date-time":"2024-04-29T17:53:50Z","timestamp":1714413230000},"page":"642-669","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Design and Implementation of an Aspect-Oriented C Programming Language"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-4707-2402","authenticated-orcid":false,"given":"Zhe","family":"Chen","sequence":"first","affiliation":[{"name":"Nanjing University of Aeronautics and Astronautics, Nanjing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0003-2993-6793","authenticated-orcid":false,"given":"Yunlong","family":"Zhu","sequence":"additional","affiliation":[{"name":"Nanjing University of Aeronautics and Astronautics, Nanjing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0008-6923-8005","authenticated-orcid":false,"given":"Zhemin","family":"Wang","sequence":"additional","affiliation":[{"name":"Nanjing University of Aeronautics and Astronautics, Nanjing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,4,29]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Proceedings of the 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2007","author":"Avgustinov Pavel","year":"2007","unstructured":"Pavel Avgustinov, Elnar Hajiyev, Neil Ongkingco, Oege de Moor, Damien Sereni, Julian Tibble, and Mathieu Verbaere. 2007. Semantics of static pointcuts in aspectJ. In Proceedings of the 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2007, Nice, France, January 17-19, 2007, Martin Hofmann and Matthias Felleisen (Eds.). ACM, 11\u201323."},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.3233\/MGS-190307"},{"key":"e_1_2_1_3_1","volume-title":"Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA","author":"Chen Feng","year":"2007","unstructured":"Feng Chen and Grigore Rosu. 2007. MOP: an efficient and generic runtime verification framework. In Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2007). ACM, 569\u2013588."},{"key":"e_1_2_1_4_1","volume-title":"Movec: A Tool for the Monitoring and Verification of C Programs. https:\/\/github.com\/drzchen\/movec","author":"Chen Zhe","year":"2024","unstructured":"Zhe Chen. 2024. Movec: A Tool for the Monitoring and Verification of C Programs. https:\/\/github.com\/drzchen\/movec"},{"key":"e_1_2_1_5_1","unstructured":"Zhe Chen. 2024. Movec Homepage. https:\/\/drzchen.github.io\/projects\/movec"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","unstructured":"Zhe Chen. 2024. Reproduction Package for Article \u2018Design and Implementation of an Aspect-Oriented C Programming Language\u2019. https:\/\/doi.org\/10.5281\/zenodo.10775922 10.5281\/zenodo.10775922","DOI":"10.5281\/zenodo.10775922"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3460319.3464807"},{"key":"e_1_2_1_8_1","volume-title":"Proceedings of the 44th ACM\/IEEE International Conference on Software Engineering, ICSE Companion 2022","author":"Chen Zhe","year":"2022","unstructured":"Zhe Chen, Jun Wu, Qi Zhang, and Jingling Xue. 2022. A Dynamic Analysis Tool for Memory Safety Based on Smart Status and Source-Level Instrumentation. In Proceedings of the 44th ACM\/IEEE International Conference on Software Engineering, ICSE Companion 2022, Pittsburgh, PA, USA, May 22-24, 2022. ACM\/IEEE, 6\u201310."},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/3293882.3330581"},{"key":"e_1_2_1_10_1","doi-asserted-by":"crossref","unstructured":"Zhe Chen Rui Yan Yingzi Ma Yulei Sui and Jingling Xue. 2024. A Smart Status Based Monitoring Algorithm for the Dynamic Analysis of Memory Safety. ACM Transactions on Software Engineering and Methodology.","DOI":"10.1145\/3637227"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2022.3210580"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/383845.383863"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/503209.503223"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1052898.1052901"},{"key":"e_1_2_1_15_1","doi-asserted-by":"crossref","first-page":"174","DOI":"10.1007\/11687061_6","article-title":"An Expressive Aspect Language for System Applications with Arachne","volume":"3880","author":"Douence R\u00e9mi","year":"2006","unstructured":"R\u00e9mi Douence, Thomas Fritz, Nicolas Loriant, Jean-Marc Menaud, Marc S\u00e9gura-Devillechaise, and Mario S\u00fcdholt. 2006. An Expressive Aspect Language for System Applications with Arachne. Transactions on Aspect-Oriented Software Development, 3880 (2006), 174\u2013213.","journal-title":"Transactions on Aspect-Oriented Software Development"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.2956"},{"key":"e_1_2_1_17_1","volume-title":"Aspect-oriented C Language Specification","author":"Gong Weigang","unstructured":"Weigang Gong and Hans-Arno Jacobsen. 2010. Aspect-oriented C Language Specification. University of Toronto."},{"key":"e_1_2_1_18_1","volume-title":"Proceedings of the IEEE 4th Annual Workshop on Workload Characterization. IEEE, 3\u201314","author":"Guthaus Matthew R.","unstructured":"Matthew R. Guthaus, Jeffrey S. Ringenberg, Dan Ernst, Todd M. Austin, Trevor Mudge, and Richard B. Brown. 2001. MiBench: A free, commercially representative embedded benchmark suite. In Proceedings of the IEEE 4th Annual Workshop on Workload Characterization. IEEE, 3\u201314."},{"key":"e_1_2_1_19_1","volume-title":"An Overview of AspectJ. In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP 2001)","volume":"353","author":"Kiczales Gregor","unstructured":"Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. 2001. An Overview of AspectJ. In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP 2001) (Lecture Notes in Computer Science, Vol. 2072). Springer, 327\u2013353."},{"key":"e_1_2_1_20_1","volume-title":"Aspect-Oriented Programming. In Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP 1997)","volume":"242","author":"Kiczales Gregor","year":"1997","unstructured":"Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, and John Irwin. 1997. Aspect-Oriented Programming. In Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP 1997) (Lecture Notes in Computer Science, Vol. 1241). Springer, 220\u2013242."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jlap.2008.08.004"},{"key":"e_1_2_1_22_1","volume-title":"Proceedings of the 5th International Symposiun on Object-Oriented Real-Time Distributed Computing, ISORC","author":"Mahrenholz Daniel","year":"2002","unstructured":"Daniel Mahrenholz, Olaf Spinczyk, and Wolfgang Schr\u00f6der-Preikschat. 2002. Program Instrumentation for Debugging and Monitoring with AspectC++. In Proceedings of the 5th International Symposiun on Object-Oriented Real-Time Distributed Computing, ISORC 2002. IEEE Computer Society, 249\u2013256."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10009-011-0198-6"},{"key":"e_1_2_1_24_1","volume-title":"43rd IEEE\/ACM International Conference on Software Engineering: Software Engineering Education and Training, ICSE (SEET) 2021","author":"P\u00e9rez Beatriz","year":"2021","unstructured":"Beatriz P\u00e9rez. 2021. Enhancing the Learning of Database Access Programming using Continuous Integration and Aspect Oriented Programming. In 43rd IEEE\/ACM International Conference on Software Engineering: Software Engineering Education and Training, ICSE (SEET) 2021, Madrid, Spain, May 25-28, 2021. IEEE, 221\u2013230."},{"key":"e_1_2_1_25_1","volume-title":"The Runtime Verification Conference Series. https:\/\/runtime-verification.github.io.","author":"Verification Runtime","year":"2023","unstructured":"Runtime Verification. 2023. The Runtime Verification Conference Series. https:\/\/runtime-verification.github.io."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2006.9"},{"key":"e_1_2_1_27_1","volume-title":"Proceedings of the 1st International Conference on Runtime Verification, RV 2010 (Lecture Notes in Computer Science","volume":"420","author":"Seyster Justin","year":"2010","unstructured":"Justin Seyster, Ketan Dixit, Xiaowan Huang, Radu Grosu, Klaus Havelund, Scott A. Smolka, Scott D. Stoller, and Erez Zadok. 2010. Aspect-Oriented Instrumentation with GCC. In Proceedings of the 1st International Conference on Runtime Verification, RV 2010 (Lecture Notes in Computer Science, Vol. 6418). Springer, 405\u2013420."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10703-012-0171-3"},{"key":"e_1_2_1_29_1","unstructured":"Olaf Spinczyk. 2021. AspectC++ Compiler Manual. Pure-systems GmbH."},{"key":"e_1_2_1_30_1","unstructured":"Olaf Spinczyk. 2021. AspectC++ Language Reference. Pure-systems GmbH."},{"key":"e_1_2_1_31_1","volume-title":"Proceedings of the 40th International Conference on Technology of Object-Oriented Languages and Systems (TOOLS Pacific","author":"Spinczyk Olaf","year":"2002","unstructured":"Olaf Spinczyk, Andreas Gal, and Wolfgang Schr\u00f6der-Preikschat. 2002. AspectC++: An Aspect-oriented Extension to the C++ Programming Language. In Proceedings of the 40th International Conference on Technology of Object-Oriented Languages and Systems (TOOLS Pacific 2002). Australian Computer Society, 53\u201360."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.knosys.2007.05.004"},{"key":"e_1_2_1_33_1","volume-title":"Proceedings of the Eighth ACM SIGPLAN International Conference on Functional Programming, ICFP 2003","author":"Walker David","year":"2003","unstructured":"David Walker, Steve Zdancewic, and Jay Ligatti. 2003. A theory of aspects. In Proceedings of the Eighth ACM SIGPLAN International Conference on Functional Programming, ICFP 2003, Uppsala, Sweden, August 25-29, 2003, Colin Runciman and Olin Shivers (Eds.). ACM, 127\u2013139."},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1018203.1018208"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649834","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3649834","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T22:54:06Z","timestamp":1750287246000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649834"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,4,29]]},"references-count":34,"journal-issue":{"issue":"OOPSLA1","published-print":{"date-parts":[[2024,4,29]]}},"alternative-id":["10.1145\/3649834"],"URL":"https:\/\/doi.org\/10.1145\/3649834","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,4,29]]},"assertion":[{"value":"2024-04-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}