JaVerT: JavaScript verification toolchain
File(s)popl18-p276.pdf (1.8 MB)
Published version
Author(s)
Faustino Fragoso Femenin Dos Santos, Jose
Maksimovic, Petar
Naudziuniene, daiva
Wood, Thomas
Gardner, PA
Type
Journal Article
Abstract
The dynamic nature of JavaScript and its complex semantics make it a difficult target for logic-based verification. We introduce JaVerT, a semi-automatic JavaScript Verification Toolchain, based on separation logic and aimed at the specialist developer wanting rich, mechanically verified specifications of critical JavaScript code. To specify JavaScript programs, we design abstractions that capture its key heap structures (for example, prototype chains and function closures), allowing the developer to write clear and succinct specifications with minimal knowledge of the JavaScript internals. To verify JavaScript programs, we develop JaVerT, a verification pipeline consisting of: JS-2-JSIL, a well-tested compiler from JavaScript to JSIL, an intermediate goto language capturing the fundamental dynamic features of JavaScript; JSIL Verify, a semi-automatic verification tool based on a sound JSIL separation logic; and verified axiomatic specifications of the JavaScript internal functions. Using JaVerT, we verify functional correctness properties of: data-structure libraries (key-value map, priority queue) written in an object-oriented style; operations on data structures such as binary search trees (BSTs) and lists; examples illustrating function closures; and test cases from the official ECMAScript test suite. The verification times suggest that reasoning about larger, more complex code using JaVerT is feasible.
Date Issued
2018-01-01
Date Acceptance
2017-09-26
Citation
Proceedings of the ACM on Programming Languages, 2018, 2
ISSN
2475-1421
Publisher
Association for Computing Machinery
Journal / Book Title
Proceedings of the ACM on Programming Languages
Volume
2
Copyright Statement
© 2018 Copyright held by the owner/author(s). This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (https://creativecommons.org/licenses/by-nc-sa/4.0/)
Sponsor
Engineering & Physical Science Research Council (E
Engineering & Physical Science Research Council (E
Grant Number
EP/K008528/1
EP/K008528/1
Source
ACM SIGPLAN Symposium on Principles of Programming Languages (POPL)
Publication Status
Published
Start Date
2018-01-07
Article Number
50
Date Publish Online
2017-12-27