A survey of metaprogramming languages

Y Lilis, A Savidis - ACM Computing Surveys (CSUR), 2019 - dl.acm.org
Metaprogramming is the process of writing computer programs that treat programs as data,
enabling them to analyze or transform existing programs or generate new ones. While the …

Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs

T Rompf, M Odersky - Proceedings of the ninth international conference …, 2010 - dl.acm.org
Software engineering demands generality and abstraction, performance demands
specialization and concretization. Generative programming can provide both, but the effort …

Buildit: A type-based multi-stage programming framework for code generation in C++

A Brahmakshatriya… - 2021 IEEE/ACM …, 2021 - ieeexplore.ieee.org
The simplest implementation of a domain-specific language is to embed it in an existing
language using operator overloading. This way, the DSL can inherit parsing, syntax and …

Lightweight modular staging and embedded compilers: Abstraction without regret for high-level high-performance programming

T Rompf - 2012 - infoscience.epfl.ch
Programs expressed in a high-level programming language need to be translated to a low-
level machine dialect for execution. This translation is usually accomplished by a compiler …

Combinators for impure yet hygienic code generation

Y Kameyama, O Kiselyov, C Shan - Proceedings of the ACM SIGPLAN …, 2014 - dl.acm.org
Code generation is the leading approach to making high-performance software reusable.
Effects are indispensable in code generators, whether to report failures or to insert let …

Refined environment classifiers: type-and scope-safe code generation with mutable cells

O Kiselyov, Y Kameyama, Y Sudo - Programming Languages and …, 2016 - Springer
Generating high-performance code and applying typical optimizations within the bodies of
loops and functions involves moving or storing open code for later use, often in a different …

Extending Hindley-Milner type inference with coercive structural subtyping

D Traytel, S Berghofer, T Nipkow - … 2011, Kenting, Taiwan, December 5-7 …, 2011 - Springer
We investigate how to add coercive structural subtyping to a type system for simply-typed
lambda calculus with Hindley-Milner polymorphism. Coercions allow to convert between …

Static analysis of multi-staged programs via unstaging translation

W Choi, B Aktemur, K Yi, M Tatsuta - ACM SIGPLAN Notices, 2011 - dl.acm.org
Static analysis of multi-staged programs is challenging because the basic assumption of
conventional static analysis no longer holds: the program text itself is no longer a fixed static …

Reasoning about multi-stage programs

J Inoue, W Taha - European Symposium on Programming, 2012 - Springer
We settle three basic questions that naturally arise when verifying multi-stage functional
programs. Firstly, does adding staging to a language compromise any equalities that hold in …

Optimization by runtime specialization for sparse matrix-vector multiplication

S Kamin, MJ Garzarán, B Aktemur, D Xu… - Proceedings of the …, 2014 - dl.acm.org
Runtime specialization optimizes programs based on partial information available only at
run time. It is applicable when some input data is used repeatedly while other input data …