当前位置: X-MOL 学术arXiv.cs.PL › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Abstracting Gradual Typing Moving Forward: Precise and Space-Efficient (Technical Report)
arXiv - CS - Programming Languages Pub Date : 2020-10-27 , DOI: arxiv-2010.14094
Felipe Ba\~nados Schwerter, Alison M. Clark, Khurram A. Jafery and Ronald Garcia

Abstracting Gradual Typing (AGT) is a systematic approach to designing gradually-typed languages. Languages developed using AGT automatically satisfy the formal semantic criteria for gradual languages identified by Siek et al. [2015]. Nonetheless, vanilla AGT semantics can still have important shortcomings. First, a gradual language's runtime checks should preserve the space-efficiency guarantees inherent to the underlying static and dynamic languages. To the contrary, the default operational semantics of AGT break proper tail calls. Second, a gradual language's runtime checks should enforce basic modular type-based invariants expected from the static type discipline. To the contrary, the default operational semantics of AGT may fail to enforce some invariants in surprising ways. We demonstrate this in the $\text{GTFL}_\lesssim$ language of Garcia et al. [2016]. This paper addresses both problems at once by refining the theory underlying AGT's dynamic checks. Garcia et al. [2016] observe that AGT involves two abstractions of static types: one for the static semantics and one for the dynamic semantics. We recast the latter as an abstract interpretation of subtyping itself, while gradual types still abstract static types. Then we show how forward-completeness [Giacobazzi and Quintarelli 2001] is key to supporting both space-efficient execution and reliable runtime type enforcement.

中文翻译:

抽象渐进式打字向前发展:精确且节省空间(技术报告)

Abstracting Gradual Typing (AGT) 是一种设计渐进式语言的系统方法。使用 AGT 开发的语言自动满足 Siek 等人确定的渐进语言的形式语义标准。[2015]。尽管如此,vanilla AGT 语义仍然有重要的缺点。首先,渐进式语言的运行时检查应保留底层静态和动态语言固有的空间效率保证。相反,AGT 的默认操作语义会中断正确的尾调用。其次,渐进式语言的运行时检查应该强制执行静态类型规则所期望的基于模块化类型的不变量。相反,AGT 的默认操作语义可能无法以令人惊讶的方式强制执行某些不变量。我们在 Garcia 等人的 $\text{GTFL}_\lesssim$ 语言中证明了这一点。[2016]。本文通过完善 AGT 动态检查的基础理论,同时解决了这两个问题。加西亚等人。[2016] 观察到 AGT 涉及两种静态类型的抽象:一种用于静态语义,一种用于动态语义。我们将后者重新定义为对子类型本身的抽象解释,而渐进类型仍然抽象静态类型。然后我们展示了前向完整性 [Giacobazzi 和 Quintarelli 2001] 如何是支持空间高效执行和可靠运行时类型实施的关键。一种用于静态语义,一种用于动态语义。我们将后者重新定义为对子类型本身的抽象解释,而渐进类型仍然抽象静态类型。然后我们展示了前向完整性 [Giacobazzi 和 Quintarelli 2001] 如何是支持空间高效执行和可靠运行时类型实施的关键。一种用于静态语义,一种用于动态语义。我们将后者重新定义为对子类型本身的抽象解释,而渐进类型仍然抽象静态类型。然后我们展示了前向完整性 [Giacobazzi 和 Quintarelli 2001] 如何是支持空间高效执行和可靠运行时类型实施的关键。
更新日期:2020-11-13
down
wechat
bug