Compiled, Extensible, Multi-language DSLs (Functional Pearl)

Implementations of domain-specific languages should offer both extensibility and performance optimizations. With the new syntax-spec metalanguage in Racket, programmers can easily create DSL implementations that are both automatically macro-extensible and subject to conventional compiler optimizations. This pearl illustrates this approach through a new implementation of miniKanren, a widely used relational programming DSL. The miniKanren community has explored, in separate implementations, optimization techniques and a wide range of extensions. We demonstrate how our new miniKanren implementation with syntax-spec reconciles these features in a single implementation that comes with both an optimizing compiler and an extension mechanism. Furthermore, programmers using the new implementation benefit from the same seamless integration between Racket and miniKanren as in existing shallow embeddings.

Authors

Institutions

Publication Details

Journal
Proceedings of the ACM on Programming Languages
Published
2024-08-15
DOI
https://doi.org/10.1145/3674627
Citations
3
Primary Topic
Model-Driven Software Engineering Techniques
Type
article
Field-Weighted Citation Impact
1.46
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Compiled, Extensible, Multi-language DSLs (Functional Pearl)

Michael Ballantyne, Jason Hemann, Mitch Gamburg
3 citations
Proceedings of the ACM on Programming Languages
Model-Driven Software Engineering Techniques
1.46
article

Compiled, Extensible, Multi-language DSLs (Functional Pearl)

Michael Ballantyne, Jason Hemann, Mitch Gamburg
article en
3 citations

Abstract

Implementations of domain-specific languages should offer both extensibility and performance optimizations. With the new syntax-spec metalanguage in Racket, programmers can easily create DSL implementations that are both automatically macro-extensible and subject to conventional compiler optimizations. This pearl illustrates this approach through a new implementation of miniKanren, a widely used relational programming DSL. The miniKanren community has explored, in separate implementations, optimization techniques and a wide range of extensions. We demonstrate how our new miniKanren implementation with syntax-spec reconciles these features in a single implementation that comes with both an optimizing compiler and an extension mechanism. Furthermore, programmers using the new implementation benefit from the same seamless integration between Racket and miniKanren as in existing shallow embeddings.

Proceedings of the ACM on Programming LanguagesVol. 8(ICFP)
Boston University (US), Seton Hall University (US), Northeastern University (US)
Life below water
Openalex Percentile: Top 16%
Model-Driven Software Engineering Techniques
1.46
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.

Compiled, Extensible, Multi-language DSLs (Functional Pearl) — Michael Ballantyne, Jason Hemann, et al. · Proceedings of the ACM on Programming Languages (2024) | TGRS Research Map | TGRS