Quoted Staged Rewriting: A Practical Approach to Library-Defined Optimizations
Staging has proved a successful technique for programmatically removing code abstractions, thereby allowing for faster program execution while retaining a high-level interface for the programmer. Unfortunately, techniques based on staging suffer from a number of problems — ranging from practicalities to fundamental limitations — which have prevented their widespread adoption. We introduce Quoted Staged Rewriting (QSR), an approach that uses type-safe, pattern matching-enabled quasiquotes to define optimizations. The approach is “staged” in two ways: first, rewrite rules can execute arbitrary code during pattern matching and code reconstruction, leveraging the power and flexibility of staging; second, library designers can orchestrate the application of successive rewriting phases (stages). The advantages of using quasiquote-based rewriting are that library designers never have to deal directly with the intermediate representation (IR), and that it allows for non-intrusive optimizations — in contrast with staging, it is not necessary to adapt the entire library and user programs to accommodate optimizations.
We show how Squid, a Scala macro-based framework, enables QSR and renders library-defined optimizations more practical than ever before: library designers write domain-specific optimizers that users invoke transparently on delimited portions of their code base. As a motivating example we describe an implementation of stream fusion (a well-known deforestation technique) that is both simpler and more powerful than the state of the art, and can readily be used by Scala programmers with no knowledge of metaprogramming.
this URL might only work when visiting from a http://www.sigplan.org/ URL.
Tue 24 Oct
|10:30 - 10:55|
|DOI Authorizer link Media Attached|
|10:55 - 11:20|
Reducing Calling Convention Overhead in Object-Oriented Programming on Embedded ARM Thumb-2 PlatformsDOI Authorizer link
|11:20 - 11:45|
Arsène Pérard-GayotSaarland University, Germany, Martin WeierBonn-Rhein-Sieg University of Applied Sciences, Germany, Richard MembarthDFKI, Germany, Philipp SlusallekDFKI, Germany, Roland LeißaSaarland University, Germany, Sebastian HackSaarland University, GermanyDOI Authorizer link
|11:45 - 12:00|
Adilla SusungiMINES ParisTech, France, Norman A. RinkTU Dresden, Germany, Jeronimo CastrillonTU Dresden, Germany, Immo HuismannTU Dresden, Germany, Albert CohenInria, France / ENS, France, Claude TadonkiMINES ParisTech, France, Jörg StillerTU Dresden, Germany, Jochen FröhlichTU Dresden, GermanyDOI Authorizer link