Skip to main content
CenXiv.org
此网站处于试运行阶段,支持我们!
我们衷心感谢所有贡献者的支持。
贡献
赞助
cenxiv logo > cs > arXiv:2408.14345v3

帮助 | 高级搜索

计算机科学 > 编程语言

arXiv:2408.14345v3 (cs)
[提交于 2024年8月26日 (v1) ,最后修订 2025年9月26日 (此版本, v3)]

标题: 守卫分析和安全擦除渐进类型系统:Elixir 的类型系统

标题: Guard Analysis and Safe Erasure Gradual Typing: a Type System for Elixir

Authors:Giuseppe Castagna, Guillaume Duboc
摘要: 我们为Elixir定义了一种新的类型系统,Elixir是一种在Erlang虚拟机上运行的日益流行的动态类型函数式编程语言。 我们的系统结合了渐进类型和语义子类型,以实现精确、安全且实用的静态类型分析,而无需对Elixir的编译流程或运行时进行任何更改。 通过利用运行时检查来确保类型安全性——包括来自Erlang VM的隐式检查以及通过开发者编写的guards的显式检查。 我们方法的核心是两个关键创新: "强函数" 的概念,即使应用于可能超出其预期域的输入,也可以分配精确的类型;以及对guards的细粒度分析,这使得对case表达式和带guards的函数定义进行准确的类型细化成为可能。 虽然类型信息在执行前被擦除,并且编译器不使用它,但我们的“安全擦除”渐进类型策略在不损害兼容性或性能的情况下保持了安全性和表达性。 这项工作为Elixir的新类型系统奠定了理论基础,概述了其在最近版本语言中的集成,并在大规模工业代码库中证明了其有效性。
摘要: We formalize a new type system for Elixir, a dynamically typed functional programming language of growing popularity that runs on the Erlang virtual machine. Our system combines gradual typing with semantic subtyping to enable precise, sound, and practical static type analysis, without requiring any changes to Elixir's compilation pipeline or runtime. Type soundness is ensured by leveraging runtime checks -- both implicit, from the Erlang VM, and explicit, via developer-written guards. Central to our approach are two key innovations: the notion of "strong functions", which can be assigned precise types even when applied to inputs that may fall outside their intended domain; and a fine-grained analysis of guards that enables accurate type refinement for case expressions and guarded function definitions. While type information is erased before execution and not used by the compiler, our "safe erasure" gradual typing strategy maintains soundness and expressiveness without compromising compatibility or performance. This work lays the theoretical foundation for Elixir's new type system, outlines its integration into recent versions of the language, and demonstrates its effectiveness on large-scale industrial codebases.
主题: 编程语言 (cs.PL)
引用方式: arXiv:2408.14345 [cs.PL]
  (或者 arXiv:2408.14345v3 [cs.PL] 对于此版本)
  https://doi.org/10.48550/arXiv.2408.14345
通过 DataCite 发表的 arXiv DOI

提交历史

来自: Giuseppe Castagna [查看电子邮件]
[v1] 星期一, 2024 年 8 月 26 日 15:20:09 UTC (133 KB)
[v2] 星期一, 2024 年 9 月 2 日 14:51:26 UTC (151 KB)
[v3] 星期五, 2025 年 9 月 26 日 11:27:17 UTC (178 KB)
全文链接:

获取论文:

    查看标题为《》的 PDF
  • 查看中文 PDF
  • 查看 PDF
  • TeX 源代码
  • 其他格式
许可图标 查看许可
当前浏览上下文:
cs.PL
< 上一篇   |   下一篇 >
新的 | 最近的 | 2024-08
切换浏览方式为:
cs

参考文献与引用

  • NASA ADS
  • 谷歌学术搜索
  • 语义学者
a 导出 BibTeX 引用 加载中...

BibTeX 格式的引用

×
数据由提供:

收藏

BibSonomy logo Reddit logo

文献和引用工具

文献资源探索 (什么是资源探索?)
连接的论文 (什么是连接的论文?)
Litmaps (什么是 Litmaps?)
scite 智能引用 (什么是智能引用?)

与本文相关的代码,数据和媒体

alphaXiv (什么是 alphaXiv?)
CatalyzeX 代码查找器 (什么是 CatalyzeX?)
DagsHub (什么是 DagsHub?)
Gotit.pub (什么是 GotitPub?)
Hugging Face (什么是 Huggingface?)
带有代码的论文 (什么是带有代码的论文?)
ScienceCast (什么是 ScienceCast?)

演示

复制 (什么是复制?)
Hugging Face Spaces (什么是 Spaces?)
TXYZ.AI (什么是 TXYZ.AI?)

推荐器和搜索工具

影响之花 (什么是影响之花?)
核心推荐器 (什么是核心?)
IArxiv 推荐器 (什么是 IArxiv?)
  • 作者
  • 地点
  • 机构
  • 主题

arXivLabs:与社区合作伙伴的实验项目

arXivLabs 是一个框架,允许合作伙伴直接在我们的网站上开发和分享新的 arXiv 特性。

与 arXivLabs 合作的个人和组织都接受了我们的价值观,即开放、社区、卓越和用户数据隐私。arXiv 承诺这些价值观,并且只与遵守这些价值观的合作伙伴合作。

有一个为 arXiv 社区增加价值的项目想法吗? 了解更多关于 arXivLabs 的信息.

这篇论文的哪些作者是支持者? | 禁用 MathJax (什么是 MathJax?)
  • 关于
  • 帮助
  • contact arXivClick here to contact arXiv 联系
  • 订阅 arXiv 邮件列表点击这里订阅 订阅
  • 版权
  • 隐私政策
  • 网络无障碍帮助
  • arXiv 运营状态
    通过...获取状态通知 email 或者 slack

京ICP备2025123034号