paperbot · PL 论文追踪

全部论文 待读 收藏

P2 RustBelt meets relaxed memory

RustBelt 遇上宽松内存
POPL 4(POPL)2019匹配度 2/10 · 该论文属于 Rust 形式化验证与宽松内存模型,与用户核心关注的 LLM/Agent 辅助静态分析/形式化验证、浮点程序分析、贝叶斯程序分析等交叉方向无直接关联。仅与形式化验证大类有边缘联系,且不涉及 AI/LLM 工具的使用。引用 66 inbox
Hoang-Hai Dang, Jacques-Henri Jourdan, Jan-Oliver Kaiser, Derek Dreyer
crossref: 2026-09-10

AI 速览

一句话:通过同步幽灵状态,将 RustBelt 的 Rust 语义健全性证明扩展到宽松内存,并发现 Arc 库中的数据竞争。

Rust 依靠所有权类型系统保证系统编程安全,RustBelt 此前用 Iris/Coq 分离逻辑为 Rust 的 λ 演算模型及若干使用 unsafe 的库建立了机器验证的语义健全性证明,但假设顺序一致内存。本文把 RustBelt 扩展到并发 Rust 库实际使用的宽松内存操作,核心挑战是在宽松内存下推理资源回收。为此提出同步幽灵状态(synchronized ghost state)这一逻辑构造,用于协调资源所有权与宽松内存行为。该扩展在验证过程中暴露了 Arc 库中的一个数据竞争。

问题
RustBelt 原有的语义健全性证明假设顺序一致内存,无法覆盖并发 Rust 库使用的宽松内存操作,尤其是资源回收与 unsafe 代码交互时的正确性推理。
方法
本文在 Iris/Coq 分离逻辑框架中将 RustBelt 扩展到宽松内存,并提出同步幽灵状态(synchronized ghost state)来推理宽松内存下的资源回收。
评估
通过机器验证的 Coq 证明重新建立 Rust 模型及相关库的语义健全性,并在过程中发现 Arc 库的一个数据竞争。
原文摘要(Abstract)

The Rust programming language supports safe systems programming by means of a strong ownership-tracking type system. In their prior work on RustBelt, Jung et al. began the task of setting Rust’s safety claims on a more rigorous formal foundation. Specifically, they used Iris, a Coq-based separation logic framework, to build a machine-checked proof of semantic soundness for a λ-calculus model of Rust, as well as for a number of widely-used Rust libraries that internally employ unsafe language features. However, they also made the significant simplifying assumption that the language is sequentially consistent. In this paper, we adapt RustBelt to account for the relaxed-memory operations that concurrent Rust libraries actually use, in the process uncovering a data race in the Arc library. We focus on the most interesting technical problem: how to reason about resource reclamation under relaxed memory , using a logical construction we call synchronized ghost state .

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot511,
  title = {RustBelt meets relaxed memory},
  author = {Hoang-Hai Dang and Jacques-Henri Jourdan and Jan-Oliver Kaiser and Derek Dreyer},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {4},
  number = {POPL},
  year = {2019},
  doi = {10.1145/3371102}
}