RefinedC: automating the foundational verification of C code with refined ownership types
Given the central role that C continues to play in systems software, and the difficulty of
writing safe and correct C code, it remains a grand challenge to develop effective formal …
writing safe and correct C code, it remains a grand challenge to develop effective formal …
Stacked borrows: an aliasing model for Rust
Type systems are useful not just for the safety guarantees they provide, but also for helping
compilers generate more efficient code by simplifying important program analyses. In Rust …
compilers generate more efficient code by simplifying important program analyses. In Rust …
Into the depths of C: elaborating the de facto standards
K Memarian, J Matthiesen, J Lingard, K Nienhuis… - ACM SIGPLAN …, 2016 - dl.acm.org
C remains central to our computing infrastructure. It is notionally defined by ISO standards,
but in reality the properties of C assumed by systems code and those implemented by …
but in reality the properties of C assumed by systems code and those implemented by …
Modular, compositional, and executable formal semantics for LLVM IR
This paper presents a novel formal semantics, mechanized in Coq, for a large, sequential
subset of the LLVM IR. In contrast to previous approaches, which use relationally-specified …
subset of the LLVM IR. In contrast to previous approaches, which use relationally-specified …
Taming undefined behavior in LLVM
A central concern for an optimizing compiler is the design of its intermediate representation
(IR) for code. The IR should make it easy to perform transformations, and should also afford …
(IR) for code. The IR should make it easy to perform transformations, and should also afford …
Understanding and evolving the Rust programming language
R Jung - 2020 - publikationen.sulb.uni-saarland.de
Rust is a young systems programming language that aims to fill the gap between high-level
languages—which provide strong static guarantees like memory and thread safety—and low …
languages—which provide strong static guarantees like memory and thread safety—and low …
Exploring C semantics and pointer provenance
The semantics of pointers and memory objects in C has been a vexed question for many
years. C values cannot be treated as either purely abstract or purely concrete entities: the …
years. C values cannot be treated as either purely abstract or purely concrete entities: the …
[PDF][PDF] The C standard formalized in Coq
RJ Krebbers - 2015 - repository.ubn.ru.nl
The C programming language was created by Thompson and Ritchie around 1970 as the
implementation language of the Unix operating system [Rit93]. The development of Unix …
implementation language of the Unix operating system [Rit93]. The development of Unix …
Simuliris: a separation logic framework for verifying concurrent program optimizations
Today's compilers employ a variety of non-trivial optimizations to achieve good performance.
One key trick compilers use to justify transformations of concurrent programs is to assume …
One key trick compilers use to justify transformations of concurrent programs is to assume …
CompCertM: CompCert with C-assembly linking and lightweight modular verification
Supporting multi-language linking such as linking C and handwritten assembly modules in
the verified compiler CompCert requires a more compositional verification technique than …
the verified compiler CompCert requires a more compositional verification technique than …