Soundly Handling Linearity

07/18/2023
by   Wenhao Tang, et al.
0

We propose a novel approach to soundly combining linear types with effect handlers. Linear type systems statically ensure that resources such as file handles are used exactly once. Effect handlers provide a modular programming abstraction for implementing features ranging from exceptions to concurrency. Whereas linear type systems bake in the assumption that continuations are invoked exactly once, effect handlers allow continuations to be discarded or invoked more than once. 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 control flow linearity in a System F-style core calculus Feffpop equipped with linear types, effect types, and effect handlers. We define a linearity-aware semantics to formally prove that Feffpop 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 Links based on the design of Feffpop, 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 Qeffpop, 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. Qeffpop overcomes a number of practical limitations of Feffpop, supporting abstraction over linearity, linearity dependencies between type variables, and a much more fine-grained notion of control flow linearity.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/18/2020

Handling Bidirectional Control Flow: Technical Report

Pressed by the difficulty of writing asynchronous, event-driven code, ma...
research
07/07/2022

Scoped Capabilities for Polymorphic Effects

Type systems usually characterize the shape of values but not their free...
research
05/08/2020

π with leftovers: a mechanisation in Agda

The π-calculus is a computational model for communication and concurrenc...
research
08/26/2019

Kindly Bent to Free Us

Systems programming often requires the manipulation of resources like fi...
research
11/11/2019

Existential Types for Relaxed Noninterference

Information-flow security type systems ensure confidentiality by enforci...
research
05/28/2020

Explicit Effect Subtyping

As popularity of algebraic effects and handlers increases, so does a dem...
research
12/30/2021

Deriving Distributive Laws for Graded Linear Types

The recent notion of graded modal types provides a framework for extendi...

Please sign up or login with your details

Forgot password? Click here to reset