Communication-Safe Web Programming in TypeScript with Routed Multiparty Session Types
This addresses the problem of informal coordination in web programming for developers, offering a practical solution for communication safety in full-stack development, though it appears incremental as it builds on existing session type theories and TypeScript practices.
The authors tackled the challenge of ensuring communication safety in web-based distributed systems by developing STScript, a toolchain that generates TypeScript APIs from a protocol specification based on RouST, a new session type theory for multiparty communications with routing, enabling safe interactions between browser clients and servers without type errors or deadlocks.
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 Node.js runtime for server-side endpoints and the React.js 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.