Compiler generation from denotational semantics
Methods and tools for compiler construction
An experiment in partial evaluation: the generation of a compiler generator
Proc. of the first international conference on Rewriting techniques and applications
The categorical abstract machine
Proc. of a conference on Functional programming languages and computer architecture
Using closures for code generation
Computer Languages
Director strings as combinators
ACM Transactions on Programming Languages and Systems (TOPLAS)
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Partial evaluation is fuller laziness
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Essentials of programming languages
Essentials of programming languages
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Type-directed partial evaluation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Two for the price of one: composing partial evaluation and compilation
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Fast, effective code generation in a just-in-time Java compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Revised5 report on the algorithmic language scheme
ACM SIGPLAN Notices
Communications of the ACM
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
Strong Normalization by Type-Directed Partial Evaluation and Run-Time Code Generation
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
Hi-index | 0.00 |
Run-time code generation (RTCG) and just-in-time compilation (JIT) are features of modern programming systems to strike the balance between generality and efficiency. Since RTCG and JIT techniques are not portable and notoriously hard to implement, we propose code splicing as an alternative for dynamically-typed higher-order programming languages. Code splicing combines precompiled pieces of code using higher-order functions. While this approach cannot achieve the performance of compiled code, it can support some intriguing features: - very fast "compilation" times; - satisfactory run times, compared with interpretation; - simple interfacing with compiled code; - portability. Starting from implementation models for functional languages we develop and evaluate several approaches to code splicing. This leads to some new insights into compilation techniques for functional programming languages, among them a compositional compilation schema to SKI-combinators. The progression of different techniques sheds some light on their relationship, specifically between combinator-based implementations and closure-based implementations. All techniques have been implemented and evaluated in Scheme.