Communication-safe web programming in TypeScript with routed multiparty session types

  title={Communication-safe web programming in TypeScript with routed multiparty session types},
  author={Anson Miu and Francisco Ferreira and N. Yoshida and Fangyi Zhou Imperial College London and Bloomberg},
  journal={Proceedings of the 30th ACM SIGPLAN International Conference on Compiler Construction},
Modern web programming involves coordinating interactions between browser clients and a server. Typically, the interactions in web-based distributed systems are informally described, making it hard to ensure correctness, especially communication safety, i.e. all endpoints progress without type errors or deadlocks, conforming to a specified protocol. We present STScript, a toolchain that generates TypeScript APIs for communication-safe web development over WebSockets, and RouST, a new session… Expand

Figures and Tables from this paper

Communicating Finite State Machines and an Extensible Toolchain for Multiparty Session Types
Multiparty session types (MPST) provide a typing discipline for message passing concurrency, ensuring deadlock freedom for distributed processes. This paper first summarises the relationship betweenExpand
Safe Session-Based Asynchronous Coordination in Rust
This ongoing work uses multiparty session types to provide safety guarantees such as deadlock-freedom by coordinating message-passing processes in Rust, and incorporates asynchronous subtyping theory, which allows program optimisation through reordering input and output actions. Expand
Digitalization of malls: A comprehensive online mall management system for business spaces and e-mall services
The project broadly caters the market with an enhanced opportunity to unite and operate over a common platform, where the business concerning retail store renting becomes much easier. The websiteExpand


Multiparty Session Type-safe Web Development with Static Linearity
This work uses source code generation and a novel type-level encoding of FSMs using multi-parameter type classes to leverage the type system of the target language and guarantee only programs that communicate following the protocol will type check. Expand
Statically verified refinements for multiparty protocols
With distributed computing becoming ubiquitous in the modern era, safe distributed programming is an open challenge. To address this, multiparty session types (MPST) provide a typing discipline forExpand
Multiparty Asynchronous Session Types
The theory introduces a new notion of types in which interactions involving multiple peers are directly abstracted as a global scenario, and the fundamental properties of the session type discipline, such as communication safety, progress, and session fidelity, are established. Expand
A session type provider: compile-time API generation of distributed protocols with refinements in F#
This library is the first practical development of MPST to support what the authors 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. Expand
Programming Using Java APIs Generated from Session Types
This is a tutorial on using Scribble [9], a toolchain based on multiparty session types [1, 4], for distributed programming in Java. The methodology is based on the generation of protocol-specificExpand
A Linear Decomposition of Multiparty Sessions for Safe Distributed Programming
The first encoding of a full-fledged multiparty session pi-calculus into linear pi-Calculus is developed, using the encoding as the foundation of a practical toolchain for safe multiparty programming in Scala and the implementation is the first to support distributed multiparty delegation. Expand
Protocols by Default - Safe MPI Code Generation Based on Session Types
This paper presents a code generation framework for type-safe and deadlock-free Message Passing Interface (MPI) programs, and shows that this tool generates efficient and scalable MPI applications, and improves productivity of programmers. Expand
Practical interruptible conversations: distributed dynamic verification with multiparty session types and Python
A dynamic verification framework for structured interruptible conversation programming that ensures the global safety of a system in the presence of asynchronous interrupts through independent runtime monitoring of each endpoint, checking the conformance of the local execution trace to the specified protocol. Expand
Explicit Connection Actions in Multiparty Session Types
This work extends asynchronous multiparty session types MPST with explicit connection actions to support protocols with optional and dynamic participants, and develops a modelling-based approach to validate MPST safety and progress for these enriched protocols. Expand
Deadlock-freedom-by-design: multiparty asynchronous global programming
This work proposes a purely-global programming model that defines a new class of deadlock-free concurrent systems, provides type inference, and supports session mobility, and develops a typing discipline that verifies choreographies against protocol specifications, based on multiparty sessions. Expand