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

Anson Miu,Francisco Ferreira,Nobuko Yoshida,Fangyi Zhou
DOI: https://doi.org/10.48550/arXiv.2101.04622
2021-01-13
Abstract: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 type theory that supports multiparty communications with routing mechanisms. STScript provides developers with TypeScript APIs generated from a communication protocol specification based on RouST. The generated APIs build upon TypeScript concurrency practices, complement the event-driven style of programming in full-stack web development, and are compatible with the <a class="link-external link-http" href="http://Node.js" rel="external noopener nofollow">this http URL</a> runtime for server-side endpoints and the <a class="link-external link-http" href="http://React.js" rel="external noopener nofollow">this http URL</a> framework for browser-side endpoints. RouST can express multiparty interactions routed via an intermediate participant. It supports peer-to-peer communication between browser-side endpoints by routing communication via the server in a way that avoids excessive serialisation. RouST guarantees communication safety for endpoint web applications written using STScript APIs. We evaluate the expressiveness of STScript for modern web programming using several production-ready case studies deployed as web applications.
Programming Languages,Software Engineering
What problem does this paper attempt to address?