Proceedings of the 14th ACM SIGPLAN International Symposium on Haskell 2021
DOI: 10.1145/3471874.3472979
|View full text |Cite
|
Sign up to set email alerts
|

Deadlock-free session types in linear Haskell

Abstract: Priority Sesh is a library for session-typed communication in Linear Haskell which offers strong compile-time correctness guarantees. Priority Sesh offers two deadlock-free APIs for session-typed communication. The first guarantees deadlock freedom by restricting the process structure to trees and forests. It is simple and composable, but rules out cyclic structures. The second guarantees deadlock freedom via priorities, which allows the programmer to safely use cyclic structures as well.Our library relies on … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
5
0

Year Published

2022
2022
2024
2024

Publication Types

Select...
4
3
2

Relationship

2
7

Authors

Journals

citations
Cited by 12 publications
(6 citation statements)
references
References 73 publications
0
5
0
Order By: Relevance
“…The linear types extension to Haskell is based on a calculus involving graded function arrows [2], and adding additional multiplicities to this system is a possibility. The Priority Sesh library provides a convenient embedding of the GV linear session calculus in Haskell [11], and extending this to make use of more precise information about channel usage could be valuable. This would also allow for experimenting with graded channels in a setting where grading can be implicit, rather than one where (like Granule) all grades are explicitly encoded via modalities.…”
Section: Discussionmentioning
confidence: 99%
“…The linear types extension to Haskell is based on a calculus involving graded function arrows [2], and adding additional multiplicities to this system is a possibility. The Priority Sesh library provides a convenient embedding of the GV linear session calculus in Haskell [11], and extending this to make use of more precise information about channel usage could be valuable. This would also allow for experimenting with graded channels in a setting where grading can be implicit, rather than one where (like Granule) all grades are explicitly encoded via modalities.…”
Section: Discussionmentioning
confidence: 99%
“…[23] implemented another session library for OCaml, but with static checks. Kokke and Dardha [29] use the encoding to implement deadlock-free session types in Linear Haskell. Finally, our encoding facilitated the implementation of session types in Go [31].…”
Section: Impactmentioning
confidence: 99%
“…Consequently, desirable properties about communication, e.g., type safety (communication occurs error-free), protocol compliance (or session fidelity; processes behave according to their predefined protocol), and deadlock freedom (processes do not get stuck waiting), can be statically determined by a type checker. To this aim, session types have been implemented in various programming languages, including Java [18,11], Go [21], Haskell [17,26], Scala [31], Rust [19], Elixir [33].…”
Section: Introductionmentioning
confidence: 99%