当前位置: 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.)
Gobra: Modular Specification and Verification of Go Programs (extended version)
arXiv - CS - Programming Languages Pub Date : 2021-05-28 , DOI: arxiv-2105.13840
Felix A. Wolf, Linard Arquint, Martin Clochard, Wytse Oortwijn, João C. Pereira, Peter Müller

Go is an increasingly-popular systems programming language targeting, especially, concurrent and distributed systems. Go differentiates itself from other imperative languages by offering structural subtyping and lightweight concurrency through goroutines with message-passing communication. This combination of features poses interesting challenges for static verification, most prominently the combination of a mutable heap and advanced concurrency primitives. We present Gobra, a modular, deductive program verifier for Go that proves memory safety, crash safety, data-race freedom, and user-provided specifications. Gobra is based on separation logic and supports a large subset of Go. Its implementation translates an annotated Go program into the Viper intermediate verification language and uses an existing SMT-based verification backend to compute and discharge proof obligations.

中文翻译:

Gobra:Go 程序的模块化规范和验证(扩展版)

Go 是一种越来越流行的系统编程语言,尤其是针对并发和分布式系统。Go 通过具有消息传递通信的 goroutines 提供结构化子类型和轻量级并发,从而将自己与其他命令式语言区分开来。这种特性组合对静态验证提出了有趣的挑战,最突出的是可变堆和高级并发原语的组合。我们展示了 Gobra,这是一个模块化的演绎程序验证器,用于证明内存安全、碰撞安全、数据竞争自由和用户提供的规范。Gobra 基于分离逻辑,支持 Go 的一大子集。
更新日期:2021-05-31
down
wechat
bug