Effpi 21,22 is a framework for writing strongly-typed message-passing programs in Scala, where the compiler enforces the conformance of process implementations to specified protocol types.A compiler plugin is provided to verify properties of protocols, such as deadlock-freedom and liveness, by encoding the behavioural types into a variant of CCS 14.To address limitations in the expressiveness of the existing toolkit, we extend Effpi with external choice by introducing a branching operation.Upon accepting a message via a branch, protocols enforce a continuation which depends on the label (type) of the received message.We equip the branching operation with the ability to accept messages over more than one channel.Additionally, we introduce a "catch timeout" operation to allow processes to gracefully handle a lack of incoming messages.The enhanced expressiveness of Effpi is demonstrated through a number of examples, including an implementation of the Raft consensus algorithm 16.
Building similarity graph...
Analyzing shared references across papers
Loading...
B. J. Robinson
Nobuko Yoshida
Electronic Proceedings in Theoretical Computer Science
University of Oxford
Building similarity graph...
Analyzing shared references across papers
Loading...
Robinson et al. (Tue,) studied this question.
www.synapsesocial.com/papers/69d895046c1944d70ce05f57 — DOI: https://doi.org/10.4204/eptcs.444.4