Ferrite: A Judgmental Embedding of Session Types in Rust
release_seiar7xo6fgkfgwai4vnaocglm
by
Ruo Fei Chen, Stephanie Balzer, Bernardo Toninho
2022
Abstract
Session types have proved viable in expressing and verifying the
protocols of message-passing systems. While message passing is a dominant
concurrency paradigm in practice, real world software is written without
session types. A limitation of existing session type libraries in mainstream
languages is their restriction to linear session types, precluding application
scenarios that demand sharing and thus aliasing of channel references.
This paper introduces Ferrite, a shallow embedding of session types in Rust
that supports both linear and shared sessions. The formal
foundation of Ferrite constitutes the shared session type calculus ,
which Ferrite encodes via a novel judgmental embedding technique. The
fulcrum of the embedding is the notion of a typing judgment that allows
reasoning about shared and linear resources to type a session. Typing rules are
then encoded as functions over judgments, with a valid typing derivation
manifesting as a well-typed Rust program. This Rust program generated by
Ferrite serves as a certificate, ensuring that the application will
proceed according to the protocol defined by the session type. The paper
details the features and implementation of Ferrite and includes a case study on
implementing Servo's canvas component in Ferrite.
In text/plain
format
Archived Content
There are no accessible files associated with this release. You could check other releases for this work for an accessible version.
Know of a fulltext copy of on the public web? Submit a URL and we will archive it
2205.06921v2
access all versions, variants, and formats of this works (eg, pre-prints)