z-logo
open-access-imgOpen Access
Towards a program logic for JavaScript
Author(s) -
Philippa Gardner,
Sergio Maffeis,
Gareth Smith
Publication year - 2012
Publication title -
spiral (imperial college london)
Language(s) - English
Resource type - Conference proceedings
ISSN - 0362-1340
DOI - 10.1145/2103656.2103663
Subject(s) - javascript , computer science , programming language , unobtrusive javascript , soundness , inheritance (genetic algorithm) , logic programming , simple (philosophy) , separation logic , code (set theory) , rich internet application , biochemistry , chemistry , philosophy , set (abstract data type) , epistemology , gene
JavaScript has become the most widely used language for client-side web programming. The dynamic nature of JavaScript makes understanding its code notoriously difficult, leading to buggy programs and a lack of adequate static-analysis tools. We believe that logical reasoning has much to offer JavaScript: a simple description of program behaviour, a clear understanding of module boundaries, and the ability to verify security contracts. We introduce a program logic for reasoning about a broad subset of JavaScript, including challenging features such as prototype inheritance and "with". We adapt ideas from separation logic to provide tractable reasoning about JavaScript code: reasoning about easy programs is easy; reasoning about hard programs is possible. We prove a strong soundness result. All libraries written in our subset and proved correct with respect to their specifications will be well-behaved, even when called by arbitrary JavaScript code.

The content you want is available to Zendy users.

Already have an account? Click here to sign in.
Having issues? You can contact us here
Accelerating Research

Address

John Eccles House
Robert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom