Imagine There’s No Source Code: Replay Diagnostic Location Information in Dynamic EDSL Meta-programming
- Programs in embedded domain-specific languages are realized as graphs of objects of the host language rather than as static input texts. This property enables dynamic meta-programming, but also makes it harder to attach location information to diagnostic messages that arise at a later stage, after the program graph construction. Thus, EDSL-generating expressions and algorithms can be difficult to debug. Here, we present a technique for transparently capturing and replaying location informationPrograms in embedded domain-specific languages are realized as graphs of objects of the host language rather than as static input texts. This property enables dynamic meta-programming, but also makes it harder to attach location information to diagnostic messages that arise at a later stage, after the program graph construction. Thus, EDSL-generating expressions and algorithms can be difficult to debug. Here, we present a technique for transparently capturing and replaying location information about the origin of EDSL program objects. It has been implemented in the context of the LLJava-live EDSL-to-bytecode compiler framework on the JVM. The basic idea can be generalized to other contexts, and to any managed runtime environment with reified stack traces…
Author: | Baltasar Trancón y WidemannORCiD, Markus LepperORCiD |
---|---|
DOI: | https://doi.org/10.1145/3679007.3685061 |
Parent Title (English): | MPLR 2024: Proceedings of the 21st ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes |
Publisher: | ACM |
Place of publication: | New York |
Editor: | M. Anton Ertl, Christoph M. Kirsch |
Document Type: | Conference Proceeding |
Language: | English |
Year of Publishing: | 2024 |
Year of Publishing: | 2024 |
Release Date: | 2024/09/17 |
Page Number: | 11 |
First Page: | 1 |
Last Page: | 11 |
Institutes: | Fachbereich Informatik und Medien |
open_access (DINI-Set): | open_access |
Licence (German): | Creative Commons - CC BY-NC-ND - Namensnennung - Nicht kommerziell - Keine Bearbeitungen 4.0 |