2014
DOI: 10.1145/2578855.2535889
|View full text |Cite
|
Sign up to set email alerts
|

Gradual typing embedded securely in JavaScript

Abstract: JavaScript's flexible semantics makes writing correct code hard and writing secure code extremely difficult. To address the former problem, various forms of gradual typing have been proposed, such as Closure and TypeScript. However, supporting all common programming idioms is not easy; for example, TypeScript deliberately gives up type soundness for programming convenience. In this paper, we propose a gradual type system and implementation techniques that provide important safety and security guarantees. … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
18
0

Year Published

2015
2015
2022
2022

Publication Types

Select...
4
3
2

Relationship

0
9

Authors

Journals

citations
Cited by 19 publications
(18 citation statements)
references
References 21 publications
0
18
0
Order By: Relevance
“…Several strategies have been used to implement runtime type checking for gradually typed languages, and these strategies are appropriate for different target languages and design goals. The traditional approach in the research literature is to insert casts during translation at the site of every implicit conversion between typed and dynamic code [Allende et al 2013a;Siek and Taha 2006;Swamy et al 2014;Tobin-Hochstadt and Felleisen 2006]. At runtime, these casts ensure that values correspond to their expected static type.…”
Section: Strategies For Runtime Checksmentioning
confidence: 99%
See 1 more Smart Citation
“…Several strategies have been used to implement runtime type checking for gradually typed languages, and these strategies are appropriate for different target languages and design goals. The traditional approach in the research literature is to insert casts during translation at the site of every implicit conversion between typed and dynamic code [Allende et al 2013a;Siek and Taha 2006;Swamy et al 2014;Tobin-Hochstadt and Felleisen 2006]. At runtime, these casts ensure that values correspond to their expected static type.…”
Section: Strategies For Runtime Checksmentioning
confidence: 99%
“…Gradual typing enables programmers to gradually evolve their programs from the flexibility of dynamic typing to the security of static typing [Siek and Taha 2006;Tobin-Hochstadt and Felleisen 2006]. Over the last decade, gradual typing has been of great interest to both the research community [Ahmed et al 2011;Allende et al 2013a;Rastogi et al 2012;Ren et al 2013;Siek et al 2015b;Swamy et al 2014;Takikawa et al 2012], and to industry, which has introduced several languages with elements of gradual typing, such as TypeScript [Microsoft 2012], Flow [Facebook 2014], and Dart [Google 2011]. Many existing gradually typed languages operate by translating a surface language program into a dynamically typed language by erasing types.…”
Section: Introductionmentioning
confidence: 99%
“…Programmatically, one could prevent other scripts from modifying document.domain by making a script run first in a page [20]. The first script that runs on the page would be: A parent page can also indirectly disable origin relaxation in iframes by sandboxing them.…”
Section: Avoiding Csp Violationsmentioning
confidence: 99%
“…A number of other advanced type system features could be used to tackle the problem discussed in this paper. The Ur [2] language has a rich system for working with records; metaprogramming [6,19] and multi-stage programming [25] could be used to generate code for the provided types; and gradual typing [20,22] can add typing to existing dynamic languages. As far as we are aware, none of these systems have been used to provide the same level of integration with XML, CSV and JSON.…”
Section: Related and Future Workmentioning
confidence: 99%