斯普拉什2024
2024年10月25日星期日至星期五美国加利福尼亚州帕萨迪纳

类型系统中不健全的来源和验证

这是第二次研讨会,讨论类型系统、验证工具和理论不健全的各个方面。它旨在就不健全的可能根源以及如何避免、解决和解决这些根源进行社区范围的讨论。我们特别感兴趣的是对以前未知或不太为人所知的问题的介绍,以及对众所周知的稳健性漏洞的讨论,以及它们如何影响编程语言研究人员和用户的日常工作。

背景

先进的静态类型系统正变得比以往任何时候都更加主流。另一方面,像JavaScript和Python这样的动态语言正在采用复杂的类型系统来精确描述传统动态类型语言中的惯用编程模式。这些类型系统的健全性通常是次要目标,甚至是事后考虑,这会给程序员带来各种问题,他们可能会在意想不到的地方遇到运行时错误。另一方面,形式验证在编程语言社区内外都得到了重视。在这个上下文中,健全性通常是一个安全关键的属性,不能妥协。两者之间的某个地方是静态类型的函数式和面向对象的编程语言,如Haskell、Scala和OCaml。

以前未知的稳健性错误会定期在这些工具中检测到。例如,在本次研讨会的前一个实例中,重点是形式验证,通过集成软件验证和面向对象编程的许多工具发现了一个基本问题。根据最近的一项调查,通用编程语言中也有无数关于编译器错误的报告,其中许多错误位于类型检查器的核心[1]。

这种健全性困境的一个有趣方面是,在编程语言和范式中发现的许多健全性错误通常具有一些基本特征,并且往往彼此之间存在松散的联系,即使它们起源于截然不同的上下文和形式主义。仅举一个例子,最初在OCaml编译器中报告的GADT和多级编程(元编程的一种形式)之间的错误交互后来发现在Scala中也存在[2]:虽然Scala的类型系统基础与OCaml的完全不同,但发现了本质上相同的错误——Scala使用通用类层次结构,甚至没有适当的GADT,只是对它们进行了松散的编码!

对我们来说,这证明了类型系统和验证中的不一致性问题本身就具有普遍的兴趣,值得在整个社区范围内进行广泛的讨论。这样的对话可能会影响高级静态类型系统和编程语言研究的多个学科、范式和应用领域的理论学家和实践者。

目标受众

UNSOUND的参与者将能够分享他们在不同类型的系统和验证工具如何被破坏或如何向用户暴露令人困惑的行为方面的经验和利用。我们认为这将是非常有益的,不仅因为它将帮助我们所有人消除不健全的根源,而且因为它将有助于理解各种研究领域的基础模型和假设之间的基本差异和共性。

当前的学术环境鼓励我们谈论我们工作的成功案例。在这次研讨会上,我们希望解决失败案例并从中吸取教训,我们希望加强我们理解的基础,以便在未来尽可能避免此类失败。由于学术研究的孤立性,作为研究人员,很容易将注意力集中在类型系统和验证的特定方面,而对其他方面视而不见。例如,专注于OO中别名控制的一系列研究可能没有考虑到他们在其他领域(如终止)工作的影响。我们相信,从许多类型的系统和验证项目的问题中学习可以将研究人员的注意力扩大到迄今为止尚未涉及其重点研究领域的主题;例如,从只正确类型到避免堆栈溢出。

我们还相信,这种环境将对那些在类型系统和验证中寻找开放问题的年轻研究人员特别有益。这可能会激发人们深入研究任何特定系统或工具的细节,或扩展个人专业领域,以获得更广泛、更客观和更批判性的整体领域观点。

该研讨会是第二次举办,旨在欢迎具有强大理论技能的人和喜欢黑客攻击的人。我们不希望提交的文件经过全面润色,也不会有正式的程序。特别欢迎学生参加。

[1] Stefanos Chaliasos、Thodoris Sotiropulos、Georgios Petros Drosos、Charalambos Mitropulos、Dimitris Mitropulos和Diomidis Spinellis。2021.类型良好的程序可能会出错:一项关于JVM编译器中与类型相关的错误的研究。程序。ACM计划。语言5,OOPSLA,第123条(2021年10月),30页。https://doi.org/10.1145/3485500

[2] 请参阅中的“时间旅行证据”https://counterexamples.org/dubious-evidence.html

目标

研讨会的目标是:

  • 发现不同类型系统和验证工具中不健全的根源
  • 分享不同工具如何被破坏或暴露令人困惑的行为的经验和利用
  • 将研究人员的注意力扩大到迄今为止未涉及其重点研究领域的主题;例如,从只正确类型到避免堆栈溢出
  • 质疑非批判性假设为该领域有效推理原则的假设
  • 连接不同类型系统和验证领域的研究人员
  • 参与并鼓励下一代研究人员参与验证

可能的捐款示例如下:

  • 定义稳健性以及它如何在语言和工具之间分化。
  • 探索用户假设与实际可靠度定义之间的差异。
  • 总结不健全的常见来源及其出现的原因。
  • 报告验证工具规范中的逻辑错误,例如,宇宙不一致。
  • 查找类型和验证检查器实现中的错误。
  • 发现声音子系统对更大设置的过度自信泛化,例如OO设置中的命令式技术。
  • 正式表征大多数实用系统所拥有的逃生舱口,并找到如何在不影响程序中不使用逃生舱口的部分的可靠性的情况下使用逃生舱口。
  • 关于的报告想不到的动态语言类型系统中的稳健性漏洞,这可能会在运行时带来更多惊喜。
  • 已发表论文中有争议的合理性陈述。
  • 发现在已发表的文献中已被证实的语句,这些语句不应再被信任,因为它们依赖于一个破损的系统。
  • 简单地在验证工具中证明False或在总体语言中显示非终止性;特别是,我们对一些实用的方法感兴趣,这些方法可以让可用的工具接受错误的输入。
  • 通过以新的有趣的方式打破编程语言的类型系统,打破关于程序类型的推理。
  • 用于证明的库中的公理选择之间的交互不好。
  • 当信任链被核查工具的微妙不健全打破时,虚假安全感的影响。

要求演示

贡献:

提交材料应包含两页的扩展摘要。其他材料(参考书目、相关工作和代码示例)不计入此限制。我们强烈建议作者在文章中加入说明,以重现结果或漏洞利用。

将有一个友好、开放的同行评审过程,重点检查提交的材料是否适合在研讨会上演示,并可能引发有趣的对话。

出版物

接受的扩展摘要将在研讨会网页上公开。然而,UNSOUND上的演示不算作事先出版,也不会出现在正式会议上,稍后可以在作者选择的会议上出版。

作者须知

提交

作者应了解ACM关于抄袭的政策https://www.acm.org/publications/policies/剽窃.

项目委员会成员可以提交扩展的摘要/演示文稿。

论文应在线提交:

https://unsound2024.hotcrp.com/

格式化:

提交的摘要应采用可移植文档格式(PDF),并使用ACM SIGPLAN风格的指南进行格式化。作者应使用acmart格式,并将acmsmall子格式用于ACM程序。有关详细信息,请参见:

http://www.sigplan.org/Resources/Author/#acmart-格式

建议在提交摘要时使用审阅选项;此选项使行号可以在审阅中方便地引用。

谁参与了?

Unsound当前由管理莱昂内尔·帕罗,马可·塞韦托、和简·贝塞。您可以在中与我们聊天不健全的车间渠道不一致。