Designing, developing and maintaining concurrent applications is an error-prone and time-consuming task; most difficulties arise because compilers are usually unable to check whether the inputs/outputs performed by a program at runtime will adhere to a given protocol specification. To address this problem, we propose lightweight session programming in Scala: we leverage the native features of the Scala type system and standard library, to introduce (1) a representation of session types as Scala types, and (2) a library, called lchannels, with a convenient API for session-based programming, supporting local and distributed communication. We generalise the idea of Continuation-Passing Style (CPS) protocols, studying their formal relationship with session types. We illustrate how session programming can be carried over in Scala: how to formalise a communication protocol, and represent it using Scala classes and lchannels, letting the compiler help spotting protocol violations. We attest the practicality of our approach with a complex use case, and evaluate the performance of lchannels with a series of benchmarks.
Thu 21 JulDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
Thu 21 Jul
Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:45 - 15:00 | |||
13:45 25mTalk | LJGS: Gradual Security Types for Object-Oriented Languages Research Track Link to publication DOI Media Attached | ||
14:10 25mTalk | Lightweight session programming in Scala Research Track Link to publication DOI Media Attached | ||
14:35 25mTalk | Trace Typing: An Approach for Evaluating Retrofitted Type Systems Research Track Esben Andreasen Aarhus University, Colin Gordon Drexel University, Satish Chandra Samsung Research America, Manu Sridharan Samsung Research America, Frank Tip Samsung Research America, Koushik Sen University of California, Berkeley Link to publication DOI Pre-print Media Attached |