Fully abstract compilation to JavaScript

Cédric Fournet, Nikhil Swamy, Juan Chen, Pierre Evariste Dagand, Pierre Yves Strub, Benjamin Livshits

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

Abstract

Many tools allow programmers to develop applications in high-level languages and deploy them in web browsers via compilation to JavaScript. While practical and widely used, these compilers are ad hoc: no guarantee is provided on their correctness for whole programs, nor their security for programs executed within arbitrary JavaScript contexts. This paper presents a compiler with such guarantees. We compile an ML-like language with higher-order functions and references to JavaScript, while preserving all source program properties. Relying on type-based invariants and applicative bisimilarity, we show full abstraction: two programs are equivalent in all source contexts if and only if their wrapped translations are equivalent in all JavaScript contexts. We evaluate our compiler on sample programs, including a series of secure libraries.

Original languageEnglish
Title of host publicationPOPL 2013 - Proceedings of 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Pages371-383
Number of pages13
DOIs
Publication statusPublished - 26 Feb 2013
Externally publishedYes
Event40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2013 - Rome, Italy
Duration: 23 Jan 201325 Jan 2013

Publication series

NameConference Record of the Annual ACM Symposium on Principles of Programming Languages
ISSN (Print)0730-8566

Conference

Conference40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2013
Country/TerritoryItaly
CityRome
Period23/01/1325/01/13

Keywords

  • full abstraction
  • program equivalence
  • refinement types

Fingerprint

Dive into the research topics of 'Fully abstract compilation to JavaScript'. Together they form a unique fingerprint.

Cite this