Multiparty Session Type-safe Web Development with Static Linearity

04/02/2019
by   Jonathan King, et al.
0

Modern web applications can now offer desktop-like experiences from within the browser, thanks to technologies such as WebSockets, which enable low-latency duplex communication between the browser and the server. While these advances are great for the user experience, they represent a new responsibility for web developers who now need to manage and verify the correctness of more complex and potentially stateful interactions in their application. In this paper, we present a technique for developing interactive web applications that are statically guaranteed to communicate following a given protocol. First, the global interaction protocol is described in the Scribble protocol language -- based on multiparty session types. Scribble protocols are checked for well-formedness, and then each role is projected to a Finite State Machine representing the structure of communication from the perspective of the role. We use 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. Our work targets PureScript -- a functional language that compiles to JavaScript -- which crucially has an expressive enough type system to provide static linearity guarantees. We demonstrate the effectiveness of our approach through a web-based Battleship game where communication is performed through WebSocket connections.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/03/2020

Generating Interactive WebSocket Applications in TypeScript

Advancements in mobile device computing power have made interactive web ...
research
01/12/2021

Communication-Safe Web Programming in TypeScript with Routed Multiparty Session Types

Modern web programming involves coordinating interactions between browse...
research
01/28/2020

Language-Based Web Session Integrity

Session management is a fundamental component of web applications: despi...
research
05/14/2021

Multiparty Session Types for Safe Runtime Adaptation in an Actor Language (Extended version)

Human fallibility, unpredictable operating environments, and the heterog...
research
09/12/2019

Rusty Variation: Deadlock-free Sessions with Failure in Rust

Rusty Variation (RV) is a library for session-typed communication in Rus...
research
04/02/2019

Value-Dependent Session Design in a Dependently Typed Language

Session Types offer a typing discipline that allows protocol specificati...
research
02/25/2020

Protocol Proxy: An FTE-based Covert Channel

In a hostile network environment, users must communicate without being d...

Please sign up or login with your details

Forgot password? Click here to reset