Reference. Type-Preserving Flat Closure Optimization
Cite
Cites 36 works (1 here)
With notes (1)
Fully Abstract Compilation via Universal Embedding new_bowman_ahmed_2016
A fully abstract compiler guarantees that two source components are observationally equivalent in the source language if and only if their translations are observationally equivalent in the target. Full abstraction implies the translation is secure: target-language attackers can make no more observations of a compiled component than a source-language attacker interacting with the original source component. Proving full abstraction for realistic compilers is challenging because realistic target languages contain features (such as control effects) unavailable in the source, while proofs of full abstraction require showing that every target context to which a compiled component may be linked can be back-translated to a behaviorally equivalent source context.
We prove the first full abstraction result for a translation whose target language contains exceptions, but the source does not. Our translation—specifically, closure conversion of simply typed λ-calculus with recursive types—uses types at the target level to ensure that a compiled component is never linked with attackers that have more distinguishing power than source-level attackers. We present a new back-translation technique based on a shallow embedding of the target language into the source language at a dynamic type. Then boundaries are inserted that mediate terms between the untyped embedding and the strongly-typed source. This technique allows back-translating non-terminating programs, target features that are untypeable in the source, and well-bracketed effects.
External (35)
- Type-Preserving Flat Closure Optimization Artifact (2025)
- The fire triangle: how to mix substitution, dependent elimination, and effects (2020)
- Abstracting extensible data types: or, rows by any other name (2019)
- Typed closure conversion for the calculus of constructions (2018)
- Closure Conversion for Dependent Type Theory with Type-Passing Polymorphism (2018)
- Bringing the web up to speed with WebAssembly (2017)
- Compositional CompCert (2015)
- Optimizing closures in O(0) time (2012)
- Run your research (2012)
- Ur: statically-typed metaprogramming with type-level record computation (2010)
- Semantics Engineering with PLT Redex (2009)
- A Formally Verified Compiler Back-end (2009)
- Typed closure conversion preserves observational equivalence (2008)
- Compiling with Continuations (2006)
- Intensional polymorphism in type-erasure semantics (2002)
- Types and Programming Languages (2002)
- From system F to typed assembly language (1999)
- Typed Closure Conversion for Recursively-Defined Functions (1998)
- A note on “A simplified account of polymorphic references” (1996)
- Typed closure conversion (1996)
- Compiling Haskell by program transformation: A report from the trenches (1996)
- Design and implementation of code optimizations for a type-directed compiler for Standard ML (1996)
- TIL: A Type-Directed Optimizing Compiler for ML (1996)
- Typed Closure Conversion (technical report) (1996)
- Compiling with Types (1995)
- Control flow analysis: a functional languages compilation paradigm (1995)
- Space-efficient closure representations (1994)
- A Syntactic Approach to Type Soundness (1994)
- Unboxed objects and polymorphic typing (1992)
- Correctness of procedure representations in higher-order assembly language (1992)
- A record calculus based on symmetric concatenation (1991)
- Type inference for record concatenation and multiple inheritance (1991)
- Three implementation models for Scheme (1987)
- Compiling a functional language (1984)
- RABBIT: A Compiler for SCHEME (A Study in Compiler Optimization) (1978)