Fearless Asynchronous Communications with Timed Multiparty Session Protocols
<|reference_start|>Fearless Asynchronous Communications with Timed Multiparty Session Protocols: Session types using affinity and exception handling mechanisms have been developed to ensure the communication safety of protocols implemented in concurrent and distributed programming languages. Nevertheless, current affine session types are inadequate for specifying real-world asynchronous protocols, as they are usually imposed by time constraints which enable timeout exceptions to prevent indefinite blocking while awaiting valid messages. This paper proposes the first formal integration of affinity, time constraints, timeouts, and time-failure handling based on multiparty session types for supporting reliability in asynchronous distributed systems. With this theory, we statically guarantee that asynchronous timed communication is deadlock-free, communication safe, while being fearless -- never hindered by timeout errors or abrupt terminations.   To implement our theory, we introduce a Rust toolchain designed to facilitate the implementation of safe affine timed protocols. Our toolchain leverages generic types and the time library to handle timed communications, integrated with optional types for affinity. We evaluate our approach by extending diverse examples from the literature to incorporate time and timeouts, demonstrating that our solution incurs negligible overhead compared with an untimed implementation. We also showcase the correctness by construction of our approach by implementing various real-world use cases, including a remote data protocol from the Internet of Remote Things domain, as well as protocols from real-time systems like Android motion sensors and smartwatches.<|reference_end|>
@article{hou2024fearless,
    title={Fearless Asynchronous Communications with Timed Multiparty Session
  Protocols},
    author={Ping Hou, Nicolas Lagaillardie, Nobuko Yoshida},
    journal={arXiv preprint arXiv:2406.19541},
    year={2024},
    archivePrefix={arXiv},
    eprint={2406.19541},
    primaryClass={cs.PL}
}