This paper presents Discourje: a runtime verification framework for communication protocols in Clojure. Discourje guarantees safety of protocol implementations relative to specifications, based on an expressive new version of multiparty session types. The framework has a formal foundation and is itself implemented in Clojure to offer a seamless specification–implementation experience. Benchmarks show Discourje’s overhead can be less than 5% for real/existing concurrent programs.

doi.org/10.1007/978-3-030-45190-5_15
Lecture Notes in Computer Science/Lecture Notes in Artificial Intelligence
International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Centrum Wiskunde & Informatica, Amsterdam (CWI), The Netherlands

Hamers, R., & Jongmans, S. (2020). Discourje: Runtime verification of communication protocols in clojure. In International Conference on Tools and Algorithms for the Construction and Analysis of Systems, TACAS 2020 (pp. 266–284). doi:10.1007/978-3-030-45190-5_15