PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
SIGGRAPH '95 Proceedings of the 22nd annual conference on Computer graphics and interactive techniques
Optimistic incremental specialization: streamlining a commercial operating system
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Fast, effective dynamic compilation
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
A general approach for run-time specialization and its application to C
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
tcc: a system for fast, flexible, and high-level dynamic code generation
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Accurate binding-time analysis for imperative languages: flow, context, and return sensitivity
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Partial evaluation in aircraft crew planning
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Annotation-directed run-time specialization in C
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
From system F to typed assembly language
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Run-time code generation and modal-ML
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
The design and implementation of a certifying compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Efficient incremental run-time specialization for free
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Compiling Haskell by Program Transformation: A Report from the Trenches
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Fast Binding-Time Analysis for Multi-Level Specialization
Proceedings of the Second International Andrei Ershov Memorial Conference on Perspectives of System Informatics
Effective Specialization of Realistic Programs via Use Sensitivity
SAS '97 Proceedings of the 4th International Symposium on Static Analysis
Stack-Based Typed Assembly Language
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
A Uniform Approach for Compile-Time and Run-Time Specialization
Selected Papers from the Internaltional Seminar on Partial Evaluation
Compiling Java to a Typed Lambda-Calculus: A Preliminary Report
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
Fast, Optimized Sun RPC Using Automatic Program Specialization
ICDCS '98 Proceedings of the The 18th International Conference on Distributed Computing Systems
Automatic, Template-Based Run-Time Specialization: Implementation and Experimental Study
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
A certifying compiler for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Static and Dynamic Program Compilation by Interpreter Specialization
Higher-Order and Symbolic Computation
Self-Specializing Mobile Code for Adaptive Network Services
IWAN '00 Proceedings of the Second International Working Conference on Active Networks
Safe and Flexible Dynamic Linking of Native Code
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
Implementing multi-stage languages using ASTs, Gensym, and reflection
Proceedings of the 2nd international conference on Generative programming and component engineering
The design and implementation of a certifying compiler
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Bisimilarity for the Region Calculus
Higher-Order and Symbolic Computation
Towards a fully-reflective meta-programming language
ACSC '05 Proceedings of the Twenty-eighth Australasian conference on Computer Science - Volume 38
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Journal of Integrated Design & Process Science
Hi-index | 0.00 |
A certifying compiler takes a source language program and producesobject code, as well as a “certificate” that can be used to verifythat the object code satisfies desirable properties, such as typesafety and memory safety. Certifying compilation helps to increaseboth compiler robustness and program safety. Compiler robustness isimproved since some compiler errors can be caught by checking theobject code against the certificate immediately after compilation.Program safety is improved because the object code and certificatealone are sufficient to establish safety: even if the object code andcertificate are produced on an unknown machine by an unknown compilerand sent over an untrusted network, safe execution is guaranteed aslong as the code and certificate pass the verifier.Existing work in certifying compilation has addressed staticallygenerated code. In this paper, we extend this to code generated atrun time. Our goal is to combine certifying compilation with run-timecode generation to produce programs that are both fast and verifiablysafe. To achieve this goal, we present two new languages withexplicit run-time code generation constructs: Cyclone, a type safedialect of C, and TAL/T, a type safe assembly language. We havedesigned and implemented a system that translates a safe C programinto Cyclone, which is then compiled to TAL/T, and finally assembledinto executable object code. This paper focuses on our overallapproach and the front end of our system; details about TAL/T willappear in a subsequent paper.