Reference. Yarrow: Reconciling Effect Handlers and Region-Based Memory Management
Cite
Cites 47 works (10 here)
With notes (10)
A Logical Approach to Type Soundness timany-2024-a
The Logical Essence of Well-Bracketed Control Flow timany-2024-the
Simuliris: A Separation Logic Framework for Verifying Concurrent Program Optimizations gaher_etal_simuliris_2022
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 that the source program has no data races: if it does, they cause the program to have undefined behavior (UB) and give the compiler free rein. However, verifying correctness of optimizations that exploit this assumption is a non-trivial problem. In particular, prior work either has not proven that such optimizations preserve program termination (particularly non-obvious when considering optimizations that move instructions out of loop bodies), or has treated all synchronization operations as external functions (losing the ability to reorder instructions around them).
In this work we present Simuliris, the first simulation technique to establish termination preservation (under a fair scheduler) for a range of concurrent program transformations that exploit UB in the source language. Simuliris is based on the idea of using ownership to reason modularly about the assumptions the compiler makes about programs with well-defined behavior. This brings the benefits of concurrent separation logics to the space of verifying program transformations: we can combine powerful reasoning techniques such as framing and coinduction to perform thread-local proofs of non-trivial concurrent program optimizations. Simuliris is built on a (non-step-indexed) variant of the Coq-based Iris framework, and is thus not tied to a particular language. In addition to demonstrating the effectiveness of Simuliris on standard compiler optimizations involving data race UB, we also instantiate it with Jung et al.’s Stacked Borrows semantics for Rust and generalize their proofs of interesting type-based aliasing optimizations to account for concurrency.
Doo bee doo bee doo convent-2020-doo
Effect handlers via generalised continuations hillerstrom-2020-effect
Iris from the ground up: A modular foundation for higher-order concurrent separation logic jung_etal_iris_ground_up_2018
A logical relation for monadic encapsulation of state: proving contextual equivalences in the presence of runST timany-2017-a
Higher-order ghost state jung_higher-order_2016
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris
Handlers in action kammar-2013-handlers
External (37)
- A Relational Separation Logic for Effect Handlers (2026)
- Zoo: A Framework for the Verification of Concurrent OCaml 5 Programs using Separation Logic (2026)
- Confirmed in personal communication with Magnus Madsen the lead developer of the Flix programming language (2026)
- Formal Semantics and Program Logics for a Fragment of OCaml (2025)
- Multiple Resumptions and Local Mutable State, Directly (2025)
- Affect: An Affine Type and Effect System (2025)
- Data race freedom à la mode (2025)
- Iris-MSWasm: Elucidating and Mechanising the Security Invariants of Memory-Safe WebAssembly (2024)
- Oxidizing OCaml with Modal Memory Management (2024)
- An Iris Instance for Verifying CompCert C Programs (2024)
- With or Without You: Programming with Effect Exclusion (2023)
- Iris-Wasm: Robust and Modular Verification of WebAssembly Programs (2023)
- A Type System for Effect Handlers and Dynamic Labels (2023)
- Continuing WebAssembly with effect handlers (2023)
- The Principles of the Flix Programming Language (2022)
- Retrofitting effect handlers onto OCaml (2021)
- Contextual refinement of the Michael-Scott queue (proof pearl) (2021)
- A separation logic for effect handlers (2021)
- Effects as capabilities: effect handlers and lightweight effect polymorphism (2020)
- Cosmo: a concurrent separation logic for multicore OCaml (2020)
- Effekt: Capability-passing style for type- and effect-safe, extensible effect handlers in Scala (2020)
- RustBelt meets relaxed memory (2019)
- RustBelt: securing the foundations of the rust programming language (2017)
- Concurrent System Programming with Effect Handlers (2017)
- The Essence of Higher-Order Concurrent Separation Logic (2017)
- Type directed compilation of row-typed algebraic effects (2017)
- A relational model of types-and-effects in higher-order concurrent separation logic (2017)
- Liberating effects with rows and handlers (2016)
- Effective concurrency through algebraic effects (2015)
- Koka: Programming with Row Polymorphic Effect Types (2014)
- Programming with algebraic effects and handlers (2012)
- Handlers of Algebraic Effects (2009)
- A Retrospective on Region-Based Memory Management (2004)
- Programming with regions in the ml kit (for version 4) (1998)
- Region-based Memory Management (1997)
- From region inference to von Neumann machines via region representation inference (1996)
- Proof of Programs with Effect Handlers