Journal article
Soundly Handling Linearity
Proceedings of ACM on programming languages, Vol.8(POPL), pp.1600-1628
01/05/2024
DOI: 10.1145/3632896
Appears in UI Libraries Support Open Access
Abstract
We propose a novel approach to soundly combining linear types with multi-shot effect handlers. circear type systems statically ensure that resources such as file handles and communication channels are used exactly once. Effect handlers provide a rich modular programming abstraction for implementing features ranging from exceptions to concurrency to backtracking. Whereas conventional linear type systems bake in the assumption that continuations are invoked exactly once, effect handlers allow continuations to be discarded (e.g. for exceptions) or invoked more than once (e.g. for backtracking). This mismatch leads to soundness bugs in existing systems such as the programming language Links, which combines linearity (for session types) with effect handlers. We introduce control-flow linearity as a means to ensure that continuations are used in accordance with the linearity of any resources they capture, ruling out such soundness bugs. We formalise the notion of control-flow linearity in a System F-style core calculus Feff∘ equipped with linear types, an effect type system, and effect handlers. We define a linearity-aware semantics in order to formally prove that Feff∘ preserves the integrity of linear values in the sense that no linear value is discarded or duplicated. In order to show that control-flow linearity can be made practical, we adapt circks based on the design of Feff∘, in doing so fixing a long-standing soundness bug. Finally, to better expose the potential of control-flow linearity, we define an ML-style core calculus Qeff∘, based on qualified types, which requires no programmer provided annotations, and instead relies entirely on type inference to infer control-flow linearity. Both linearity and effects are captured by qualified types. Qeff∘ overcomes a number of practical limitations of Feff∘, supporting abstraction over linearity, linearity dependencies between type variables, and a much more fine-grained notion of control-flow linearity.
Details
- Title: Subtitle
- Soundly Handling Linearity
- Creators
- Wenhao Tang - University of EdinburghDaniel Hillerström - Huawei Zurich Research Center, Zürich, SwitzerlandSam Lindley - University of EdinburghJ. Garrett Morris - University of Iowa, Iowa, USA
- Resource Type
- Journal article
- Publication Details
- Proceedings of ACM on programming languages, Vol.8(POPL), pp.1600-1628
- DOI
- 10.1145/3632896
- ISSN
- 2475-1421
- eISSN
- 2475-1421
- Publisher
- Association for Computing Machinery (ACM)
- Grant note
- MR/T043830/1 / UKRI Future Leaders Fellowship
- Language
- English
- Date published
- 01/05/2024
- Academic Unit
- Computer Science
- Record Identifier
- 9984544955002771
Metrics
12 Record Views