Staging for Generic Programming in Space and Time
Metaprogramming is among the most promising candidates to solve the abstraction vs performance trade-off that plagues software engineering through specialization. Metaprogramming has been used to enable low-overhead generic programming for a long time, with C++ templates being one of the most prominent examples. But often a single, fixed pattern of specialization is not enough, and more flexibility is needed. Hence, this paper seeks to apply generic programming techniques to challenges in metaprogramming, in particular to abstract over the execution stage of individual program expressions. We thus extend the scope of generic programming into the dimension of time. The resulting notion of stage polymorphism enables novel abstractions in the design of program generators, which we develop and explore in this paper. We present one possible implementation, in Scala using the lightweight modular staging (LMS) framework, and apply it to two important case studies: convolution on images and the fast Fourier transform (FFT).
this URL might only work when visiting from a http://www.sigplan.org/ URL.
Mon 23 OctDisplayed time zone: Tijuana, Baja California change
10:30 - 12:00
|Refining Semantics for Multi-stage Programming|
Rui Ge University of British Columbia, Canada, Ronald Garcia University of British Columbia, CanadaDOI Authorizer link
|Staging for Generic Programming in Space and Time|
Georg Ofenbeck ETH Zurich, Switzerland, Tiark Rompf Purdue University, Markus Püschel ETH ZürichDOI Authorizer link
|Staging with Control: Type-Safe Multi-stage Programming with Control Operators|
Junpei Oishi University of Tsukuba, Japan, Yukiyoshi Kameyama University of Tsukuba, JapanDOI Authorizer link
|Code Staging in GNU GuixShort paper|
Ludovic Courtès Inria, FranceDOI Authorizer link