Proceedings of the 27th International Conference on Compiler Construction 2018
DOI: 10.1145/3178372.3179495
|View full text |Cite
|
Sign up to set email alerts
|

A session type provider: compile-time API generation of distributed protocols with refinements in F#

Abstract: We present a library for the specification and implementation of distributed protocols in native F# (and other .NET languages) based on multiparty session types (MPST). There are two main contributions. Our library is the first practical development of MPST to support what we refer to as interaction refinements: a collection of features related to the refinement of protocols, such as message-type refinements (value constraints) and message-value dependent control flow. A well-typed endpoint program using our l… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
2

Citation Types

1
59
0

Year Published

2019
2019
2020
2020

Publication Types

Select...
5
2

Relationship

4
3

Authors

Journals

citations
Cited by 50 publications
(60 citation statements)
references
References 27 publications
1
59
0
Order By: Relevance
“…Sessions achieves value-dependent session descriptions by maintaining a knowledge index. This compliments existing work [37,27] in which the authors define knowledge in much the same way. However, we have embedded the knowledge index directly within the type-system of the global session description ensuring that our EDSL instances are correct-by-construction with respect to value dependencies.…”
Section: Related Worksupporting
confidence: 79%
See 2 more Smart Citations
“…Sessions achieves value-dependent session descriptions by maintaining a knowledge index. This compliments existing work [37,27] in which the authors define knowledge in much the same way. However, we have embedded the knowledge index directly within the type-system of the global session description ensuring that our EDSL instances are correct-by-construction with respect to value dependencies.…”
Section: Related Worksupporting
confidence: 79%
“…Scribble-Refined Recent work [27] has extended Scribble specifically for F# to leverage the language's support for refinement types [17] and type providers [31]. The authors present an expressive refinement language to specify boolean refinements related to messages being sent.…”
Section: Related Workmentioning
confidence: 99%
See 1 more Smart Citation
“…Communicating automata and asynchronous multiparty session types [29] are closely related: the latter can be seen as a syntactical representation of the former [17] where a sending state corresponds to an internal choice and a receiving state to an external choice. This correspondence between communicating automata and multiparty session types has become the foundation of many tools centred on session types, e.g., for generating communication API from multiparty session (global) types [31,32,48,62], for detecting deadlocks in message-passing programs [51,68], and for monitoring session-enabled programs [5,16,47,49,50]. These tools rely on a property called multiparty compatibility [6,18,40], which guarantees that communicating automata representing session types interact correctly, hence enabling the identification of correct protocols or the detection of errors in endpoint programs.…”
Section: Introductionmentioning
confidence: 99%
“…The implementation uses the Akka actor framework and supports all transport abstractions provided by Akka. Neykova et al [25] implemented in F# a session type provider to support on-demand compile-time protocol by generating protocol-specific .NET types from Scribble. Pabble [26] generates C/MPI skeleton code from parameterised Scribble for correct-by-construction role-parameterised MPI parallel programming but do not use types to check for conformance.…”
Section: Related Workmentioning
confidence: 99%