Affiliation:
1. University of California, San Diego, La Jolla, CA, USA
2. Mozilla Research, Mountain View, CA, USA
Abstract
We present Dependent JavaScript (DJS), a statically typed dialect of the imperative, object-oriented, dynamic language. DJS supports the particularly challenging features such as run-time type-tests, higher-order functions, extensible objects, prototype inheritance, and arrays through a combination of nested refinement types, strong updates to the heap, and heap unrolling to precisely track prototype hierarchies. With our implementation of DJS, we demonstrate that the type system is expressive enough to reason about a variety of tricky idioms found in small examples drawn from several sources, including the popular book JavaScript: The Good Parts and the SunSpider benchmark suite.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
28 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Indexed Types for a Statically Safe WebAssembly;Proceedings of the ACM on Programming Languages;2024-01-05
2. Usability-Oriented Design of Liquid Types for Java;2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE);2023-05
3. What Types Are Needed for Typing Dynamic Objects? A Python-Based Empirical Study;Programming Languages and Systems;2023
4. Data flow refinement type inference;Proceedings of the ACM on Programming Languages;2021-01-04
5. Refinement Types: A Tutorial;Foundations and Trends® in Programming Languages;2021