D2X: An eXtensible conteXtual Debugger for Modern DSLs Article Swipe
YOU?
·
· 2023
· Open Access
·
· DOI: https://doi.org/10.1145/3579990.3580014
Compiled Domain Specific Languages are taking over various high-performance domains because of their ability to exploit the domain knowledge and apply optimizations that produce the most specialized code. A lot of research has gone into making DSLs more performant and easy to prototype. But the Achilles heel for DSLs is still the lack of debugging support that provides an end-to-end picture to the user and improves the productivity of both the DSL designer and the end-user. Conventional techniques extend the compilers, the debugging information format, and the debuggers themselves to provide more information than what the debugger can provide when attached to the generated code. Such an approach quickly stops scaling as adding extensions to large and complex debuggers hampers DSL designer productivity. We present D2X, a DSL debugging infrastructure that works with most standard debuggers without any modifications and is easily extensible to capture all the domain specific information the end-user cares about. We show that we can add debugging support to the state-of-the-art graph DSL GraphIt with as little as 1.4% changes to the compiler code base. We also apply our techniques to a meta-programming DSL framework BuildIt so that any DSLs built on top of BuildIt get debugging support without any modifications further boosting the productivity of future DSL designers.
Related Topics
- Type
- article
- Language
- en
- Landing Page
- https://doi.org/10.1145/3579990.3580014
- https://dl.acm.org/doi/pdf/10.1145/3579990.3580014
- OA Status
- gold
- Cited By
- 5
- References
- 16
- Related Works
- 10
- OpenAlex ID
- https://openalex.org/W4321496247
Raw OpenAlex JSON
- OpenAlex ID
-
https://openalex.org/W4321496247Canonical identifier for this work in OpenAlex
- DOI
-
https://doi.org/10.1145/3579990.3580014Digital Object Identifier
- Title
-
D2X: An eXtensible conteXtual Debugger for Modern DSLsWork title
- Type
-
articleOpenAlex work type
- Language
-
enPrimary language
- Publication year
-
2023Year of publication
- Publication date
-
2023-02-17Full publication date if available
- Authors
-
Ajay Brahmakshatriya, Saman AmarasingheList of authors in order
- Landing page
-
https://doi.org/10.1145/3579990.3580014Publisher landing page
- PDF URL
-
https://dl.acm.org/doi/pdf/10.1145/3579990.3580014Direct link to full text PDF
- Open access
-
YesWhether a free full text is available
- OA status
-
goldOpen access status per OpenAlex
- OA URL
-
https://dl.acm.org/doi/pdf/10.1145/3579990.3580014Direct OA link when available
- Concepts
-
Debugging, Computer science, Debugger, Digital subscriber line, Programming language, Compiler, Domain-specific language, Software engineering, TelecommunicationsTop concepts (fields/topics) attached by OpenAlex
- Cited by
-
5Total citation count in OpenAlex
- Citations by year (recent)
-
2025: 1, 2024: 4Per-year citation counts (last 5 years)
- References (count)
-
16Number of works referenced by this work
- Related works (count)
-
10Other works algorithmically related by OpenAlex
Full payload
| id | https://openalex.org/W4321496247 |
|---|---|
| doi | https://doi.org/10.1145/3579990.3580014 |
| ids.doi | https://doi.org/10.1145/3579990.3580014 |
| ids.openalex | https://openalex.org/W4321496247 |
| fwci | 1.60203099 |
| type | article |
| title | D2X: An eXtensible conteXtual Debugger for Modern DSLs |
| biblio.issue | |
| biblio.volume | |
| biblio.last_page | 172 |
| biblio.first_page | 162 |
| topics[0].id | https://openalex.org/T11450 |
| topics[0].field.id | https://openalex.org/fields/17 |
| topics[0].field.display_name | Computer Science |
| topics[0].score | 0.9988999962806702 |
| topics[0].domain.id | https://openalex.org/domains/3 |
| topics[0].domain.display_name | Physical Sciences |
| topics[0].subfield.id | https://openalex.org/subfields/1712 |
| topics[0].subfield.display_name | Software |
| topics[0].display_name | Model-Driven Software Engineering Techniques |
| topics[1].id | https://openalex.org/T10142 |
| topics[1].field.id | https://openalex.org/fields/17 |
| topics[1].field.display_name | Computer Science |
| topics[1].score | 0.9984999895095825 |
| topics[1].domain.id | https://openalex.org/domains/3 |
| topics[1].domain.display_name | Physical Sciences |
| topics[1].subfield.id | https://openalex.org/subfields/1703 |
| topics[1].subfield.display_name | Computational Theory and Mathematics |
| topics[1].display_name | Formal Methods in Verification |
| topics[2].id | https://openalex.org/T10743 |
| topics[2].field.id | https://openalex.org/fields/17 |
| topics[2].field.display_name | Computer Science |
| topics[2].score | 0.9933000206947327 |
| topics[2].domain.id | https://openalex.org/domains/3 |
| topics[2].domain.display_name | Physical Sciences |
| topics[2].subfield.id | https://openalex.org/subfields/1712 |
| topics[2].subfield.display_name | Software |
| topics[2].display_name | Software Testing and Debugging Techniques |
| is_xpac | False |
| apc_list | |
| apc_paid | |
| concepts[0].id | https://openalex.org/C168065819 |
| concepts[0].level | 2 |
| concepts[0].score | 0.8906840085983276 |
| concepts[0].wikidata | https://www.wikidata.org/wiki/Q845566 |
| concepts[0].display_name | Debugging |
| concepts[1].id | https://openalex.org/C41008148 |
| concepts[1].level | 0 |
| concepts[1].score | 0.8882830739021301 |
| concepts[1].wikidata | https://www.wikidata.org/wiki/Q21198 |
| concepts[1].display_name | Computer science |
| concepts[2].id | https://openalex.org/C2778485113 |
| concepts[2].level | 3 |
| concepts[2].score | 0.8804792165756226 |
| concepts[2].wikidata | https://www.wikidata.org/wiki/Q193231 |
| concepts[2].display_name | Debugger |
| concepts[3].id | https://openalex.org/C201374245 |
| concepts[3].level | 2 |
| concepts[3].score | 0.877204179763794 |
| concepts[3].wikidata | https://www.wikidata.org/wiki/Q104534 |
| concepts[3].display_name | Digital subscriber line |
| concepts[4].id | https://openalex.org/C199360897 |
| concepts[4].level | 1 |
| concepts[4].score | 0.6947581171989441 |
| concepts[4].wikidata | https://www.wikidata.org/wiki/Q9143 |
| concepts[4].display_name | Programming language |
| concepts[5].id | https://openalex.org/C169590947 |
| concepts[5].level | 2 |
| concepts[5].score | 0.663670003414154 |
| concepts[5].wikidata | https://www.wikidata.org/wiki/Q47506 |
| concepts[5].display_name | Compiler |
| concepts[6].id | https://openalex.org/C135257023 |
| concepts[6].level | 2 |
| concepts[6].score | 0.6283488273620605 |
| concepts[6].wikidata | https://www.wikidata.org/wiki/Q691358 |
| concepts[6].display_name | Domain-specific language |
| concepts[7].id | https://openalex.org/C115903868 |
| concepts[7].level | 1 |
| concepts[7].score | 0.3905051350593567 |
| concepts[7].wikidata | https://www.wikidata.org/wiki/Q80993 |
| concepts[7].display_name | Software engineering |
| concepts[8].id | https://openalex.org/C76155785 |
| concepts[8].level | 1 |
| concepts[8].score | 0.0 |
| concepts[8].wikidata | https://www.wikidata.org/wiki/Q418 |
| concepts[8].display_name | Telecommunications |
| keywords[0].id | https://openalex.org/keywords/debugging |
| keywords[0].score | 0.8906840085983276 |
| keywords[0].display_name | Debugging |
| keywords[1].id | https://openalex.org/keywords/computer-science |
| keywords[1].score | 0.8882830739021301 |
| keywords[1].display_name | Computer science |
| keywords[2].id | https://openalex.org/keywords/debugger |
| keywords[2].score | 0.8804792165756226 |
| keywords[2].display_name | Debugger |
| keywords[3].id | https://openalex.org/keywords/digital-subscriber-line |
| keywords[3].score | 0.877204179763794 |
| keywords[3].display_name | Digital subscriber line |
| keywords[4].id | https://openalex.org/keywords/programming-language |
| keywords[4].score | 0.6947581171989441 |
| keywords[4].display_name | Programming language |
| keywords[5].id | https://openalex.org/keywords/compiler |
| keywords[5].score | 0.663670003414154 |
| keywords[5].display_name | Compiler |
| keywords[6].id | https://openalex.org/keywords/domain-specific-language |
| keywords[6].score | 0.6283488273620605 |
| keywords[6].display_name | Domain-specific language |
| keywords[7].id | https://openalex.org/keywords/software-engineering |
| keywords[7].score | 0.3905051350593567 |
| keywords[7].display_name | Software engineering |
| language | en |
| locations[0].id | doi:10.1145/3579990.3580014 |
| locations[0].is_oa | True |
| locations[0].source | |
| locations[0].license | cc-by-nc |
| locations[0].pdf_url | https://dl.acm.org/doi/pdf/10.1145/3579990.3580014 |
| locations[0].version | publishedVersion |
| locations[0].raw_type | proceedings-article |
| locations[0].license_id | https://openalex.org/licenses/cc-by-nc |
| locations[0].is_accepted | True |
| locations[0].is_published | True |
| locations[0].raw_source_name | Proceedings of the 21st ACM/IEEE International Symposium on Code Generation and Optimization |
| locations[0].landing_page_url | https://doi.org/10.1145/3579990.3580014 |
| indexed_in | crossref |
| authorships[0].author.id | https://openalex.org/A5046807118 |
| authorships[0].author.orcid | https://orcid.org/0000-0002-5295-4186 |
| authorships[0].author.display_name | Ajay Brahmakshatriya |
| authorships[0].countries | US |
| authorships[0].affiliations[0].institution_ids | https://openalex.org/I63966007 |
| authorships[0].affiliations[0].raw_affiliation_string | Massachusetts Institute of Technology, USA |
| authorships[0].institutions[0].id | https://openalex.org/I63966007 |
| authorships[0].institutions[0].ror | https://ror.org/042nb2s44 |
| authorships[0].institutions[0].type | education |
| authorships[0].institutions[0].lineage | https://openalex.org/I63966007 |
| authorships[0].institutions[0].country_code | US |
| authorships[0].institutions[0].display_name | Massachusetts Institute of Technology |
| authorships[0].author_position | first |
| authorships[0].raw_author_name | Ajay Brahmakshatriya |
| authorships[0].is_corresponding | False |
| authorships[0].raw_affiliation_strings | Massachusetts Institute of Technology, USA |
| authorships[1].author.id | https://openalex.org/A5046791216 |
| authorships[1].author.orcid | https://orcid.org/0000-0002-7231-7643 |
| authorships[1].author.display_name | Saman Amarasinghe |
| authorships[1].countries | US |
| authorships[1].affiliations[0].institution_ids | https://openalex.org/I63966007 |
| authorships[1].affiliations[0].raw_affiliation_string | Massachusetts Institute of Technology, USA |
| authorships[1].institutions[0].id | https://openalex.org/I63966007 |
| authorships[1].institutions[0].ror | https://ror.org/042nb2s44 |
| authorships[1].institutions[0].type | education |
| authorships[1].institutions[0].lineage | https://openalex.org/I63966007 |
| authorships[1].institutions[0].country_code | US |
| authorships[1].institutions[0].display_name | Massachusetts Institute of Technology |
| authorships[1].author_position | last |
| authorships[1].raw_author_name | Saman Amarasinghe |
| authorships[1].is_corresponding | False |
| authorships[1].raw_affiliation_strings | Massachusetts Institute of Technology, USA |
| has_content.pdf | True |
| has_content.grobid_xml | True |
| is_paratext | False |
| open_access.is_oa | True |
| open_access.oa_url | https://dl.acm.org/doi/pdf/10.1145/3579990.3580014 |
| open_access.oa_status | gold |
| open_access.any_repository_has_fulltext | False |
| created_date | 2025-10-10T00:00:00 |
| display_name | D2X: An eXtensible conteXtual Debugger for Modern DSLs |
| has_fulltext | True |
| is_retracted | False |
| updated_date | 2025-11-06T03:46:38.306776 |
| primary_topic.id | https://openalex.org/T11450 |
| primary_topic.field.id | https://openalex.org/fields/17 |
| primary_topic.field.display_name | Computer Science |
| primary_topic.score | 0.9988999962806702 |
| primary_topic.domain.id | https://openalex.org/domains/3 |
| primary_topic.domain.display_name | Physical Sciences |
| primary_topic.subfield.id | https://openalex.org/subfields/1712 |
| primary_topic.subfield.display_name | Software |
| primary_topic.display_name | Model-Driven Software Engineering Techniques |
| related_works | https://openalex.org/W2800641345, https://openalex.org/W2886673879, https://openalex.org/W564953056, https://openalex.org/W2061184006, https://openalex.org/W2381239448, https://openalex.org/W4236910510, https://openalex.org/W2092932442, https://openalex.org/W2543963479, https://openalex.org/W1751798423, https://openalex.org/W2583000271 |
| cited_by_count | 5 |
| counts_by_year[0].year | 2025 |
| counts_by_year[0].cited_by_count | 1 |
| counts_by_year[1].year | 2024 |
| counts_by_year[1].cited_by_count | 4 |
| locations_count | 1 |
| best_oa_location.id | doi:10.1145/3579990.3580014 |
| best_oa_location.is_oa | True |
| best_oa_location.source | |
| best_oa_location.license | cc-by-nc |
| best_oa_location.pdf_url | https://dl.acm.org/doi/pdf/10.1145/3579990.3580014 |
| best_oa_location.version | publishedVersion |
| best_oa_location.raw_type | proceedings-article |
| best_oa_location.license_id | https://openalex.org/licenses/cc-by-nc |
| best_oa_location.is_accepted | True |
| best_oa_location.is_published | True |
| best_oa_location.raw_source_name | Proceedings of the 21st ACM/IEEE International Symposium on Code Generation and Optimization |
| best_oa_location.landing_page_url | https://doi.org/10.1145/3579990.3580014 |
| primary_location.id | doi:10.1145/3579990.3580014 |
| primary_location.is_oa | True |
| primary_location.source | |
| primary_location.license | cc-by-nc |
| primary_location.pdf_url | https://dl.acm.org/doi/pdf/10.1145/3579990.3580014 |
| primary_location.version | publishedVersion |
| primary_location.raw_type | proceedings-article |
| primary_location.license_id | https://openalex.org/licenses/cc-by-nc |
| primary_location.is_accepted | True |
| primary_location.is_published | True |
| primary_location.raw_source_name | Proceedings of the 21st ACM/IEEE International Symposium on Code Generation and Optimization |
| primary_location.landing_page_url | https://doi.org/10.1145/3579990.3580014 |
| publication_date | 2023-02-17 |
| publication_year | 2023 |
| referenced_works | https://openalex.org/W3139323122, https://openalex.org/W6968944136, https://openalex.org/W4221038596, https://openalex.org/W2162569557, https://openalex.org/W3155032774, https://openalex.org/W2534282217, https://openalex.org/W2977371611, https://openalex.org/W1489951562, https://openalex.org/W3122286897, https://openalex.org/W2798710664, https://openalex.org/W4226318502, https://openalex.org/W3214897310, https://openalex.org/W2979985440, https://openalex.org/W1485665416, https://openalex.org/W4238381353, https://openalex.org/W2035447421 |
| referenced_works_count | 16 |
| abstract_inverted_index.A | 28 |
| abstract_inverted_index.a | 126, 185 |
| abstract_inverted_index.We | 123, 154, 179 |
| abstract_inverted_index.an | 58, 106 |
| abstract_inverted_index.as | 111, 169, 171 |
| abstract_inverted_index.is | 49, 140 |
| abstract_inverted_index.of | 11, 30, 53, 68, 197, 209 |
| abstract_inverted_index.on | 195 |
| abstract_inverted_index.so | 190 |
| abstract_inverted_index.to | 14, 41, 61, 89, 101, 114, 143, 162, 174, 184 |
| abstract_inverted_index.we | 157 |
| abstract_inverted_index.But | 43 |
| abstract_inverted_index.DSL | 71, 120, 127, 166, 187, 211 |
| abstract_inverted_index.add | 159 |
| abstract_inverted_index.all | 145 |
| abstract_inverted_index.and | 19, 39, 64, 73, 85, 116, 139 |
| abstract_inverted_index.any | 137, 192, 203 |
| abstract_inverted_index.are | 4 |
| abstract_inverted_index.can | 97, 158 |
| abstract_inverted_index.for | 47 |
| abstract_inverted_index.get | 199 |
| abstract_inverted_index.has | 32 |
| abstract_inverted_index.lot | 29 |
| abstract_inverted_index.our | 182 |
| abstract_inverted_index.the | 16, 24, 44, 51, 62, 66, 70, 74, 79, 81, 86, 95, 102, 146, 150, 163, 175, 207 |
| abstract_inverted_index.top | 196 |
| abstract_inverted_index.1.4% | 172 |
| abstract_inverted_index.D2X, | 125 |
| abstract_inverted_index.DSLs | 36, 48, 193 |
| abstract_inverted_index.Such | 105 |
| abstract_inverted_index.also | 180 |
| abstract_inverted_index.both | 69 |
| abstract_inverted_index.code | 177 |
| abstract_inverted_index.easy | 40 |
| abstract_inverted_index.gone | 33 |
| abstract_inverted_index.heel | 46 |
| abstract_inverted_index.into | 34 |
| abstract_inverted_index.lack | 52 |
| abstract_inverted_index.more | 37, 91 |
| abstract_inverted_index.most | 25, 133 |
| abstract_inverted_index.over | 6 |
| abstract_inverted_index.show | 155 |
| abstract_inverted_index.than | 93 |
| abstract_inverted_index.that | 22, 56, 130, 156, 191 |
| abstract_inverted_index.user | 63 |
| abstract_inverted_index.what | 94 |
| abstract_inverted_index.when | 99 |
| abstract_inverted_index.with | 132, 168 |
| abstract_inverted_index.apply | 20, 181 |
| abstract_inverted_index.base. | 178 |
| abstract_inverted_index.built | 194 |
| abstract_inverted_index.cares | 152 |
| abstract_inverted_index.code. | 27, 104 |
| abstract_inverted_index.graph | 165 |
| abstract_inverted_index.large | 115 |
| abstract_inverted_index.still | 50 |
| abstract_inverted_index.stops | 109 |
| abstract_inverted_index.their | 12 |
| abstract_inverted_index.works | 131 |
| abstract_inverted_index.Domain | 1 |
| abstract_inverted_index.about. | 153 |
| abstract_inverted_index.adding | 112 |
| abstract_inverted_index.domain | 17, 147 |
| abstract_inverted_index.easily | 141 |
| abstract_inverted_index.extend | 78 |
| abstract_inverted_index.future | 210 |
| abstract_inverted_index.little | 170 |
| abstract_inverted_index.making | 35 |
| abstract_inverted_index.taking | 5 |
| abstract_inverted_index.BuildIt | 189, 198 |
| abstract_inverted_index.GraphIt | 167 |
| abstract_inverted_index.ability | 13 |
| abstract_inverted_index.because | 10 |
| abstract_inverted_index.capture | 144 |
| abstract_inverted_index.changes | 173 |
| abstract_inverted_index.complex | 117 |
| abstract_inverted_index.domains | 9 |
| abstract_inverted_index.exploit | 15 |
| abstract_inverted_index.format, | 84 |
| abstract_inverted_index.further | 205 |
| abstract_inverted_index.hampers | 119 |
| abstract_inverted_index.picture | 60 |
| abstract_inverted_index.present | 124 |
| abstract_inverted_index.produce | 23 |
| abstract_inverted_index.provide | 90, 98 |
| abstract_inverted_index.quickly | 108 |
| abstract_inverted_index.scaling | 110 |
| abstract_inverted_index.support | 55, 161, 201 |
| abstract_inverted_index.various | 7 |
| abstract_inverted_index.without | 136, 202 |
| abstract_inverted_index.Achilles | 45 |
| abstract_inverted_index.Compiled | 0 |
| abstract_inverted_index.Specific | 2 |
| abstract_inverted_index.approach | 107 |
| abstract_inverted_index.attached | 100 |
| abstract_inverted_index.boosting | 206 |
| abstract_inverted_index.compiler | 176 |
| abstract_inverted_index.debugger | 96 |
| abstract_inverted_index.designer | 72, 121 |
| abstract_inverted_index.end-user | 151 |
| abstract_inverted_index.improves | 65 |
| abstract_inverted_index.provides | 57 |
| abstract_inverted_index.research | 31 |
| abstract_inverted_index.specific | 148 |
| abstract_inverted_index.standard | 134 |
| abstract_inverted_index.Languages | 3 |
| abstract_inverted_index.debuggers | 87, 118, 135 |
| abstract_inverted_index.debugging | 54, 82, 128, 160, 200 |
| abstract_inverted_index.end-user. | 75 |
| abstract_inverted_index.framework | 188 |
| abstract_inverted_index.generated | 103 |
| abstract_inverted_index.knowledge | 18 |
| abstract_inverted_index.compilers, | 80 |
| abstract_inverted_index.designers. | 212 |
| abstract_inverted_index.end-to-end | 59 |
| abstract_inverted_index.extensible | 142 |
| abstract_inverted_index.extensions | 113 |
| abstract_inverted_index.performant | 38 |
| abstract_inverted_index.prototype. | 42 |
| abstract_inverted_index.techniques | 77, 183 |
| abstract_inverted_index.themselves | 88 |
| abstract_inverted_index.information | 83, 92, 149 |
| abstract_inverted_index.specialized | 26 |
| abstract_inverted_index.Conventional | 76 |
| abstract_inverted_index.productivity | 67, 208 |
| abstract_inverted_index.modifications | 138, 204 |
| abstract_inverted_index.optimizations | 21 |
| abstract_inverted_index.productivity. | 122 |
| abstract_inverted_index.infrastructure | 129 |
| abstract_inverted_index.high-performance | 8 |
| abstract_inverted_index.meta-programming | 186 |
| abstract_inverted_index.state-of-the-art | 164 |
| cited_by_percentile_year.max | 98 |
| cited_by_percentile_year.min | 91 |
| countries_distinct_count | 1 |
| institutions_distinct_count | 2 |
| citation_normalized_percentile.value | 0.84670134 |
| citation_normalized_percentile.is_in_top_1_percent | False |
| citation_normalized_percentile.is_in_top_10_percent | False |