一句话:提出混合多方会话类型,用端点投影保持语义地组合多个子协议为全局类型。
多参与者会话类型(MPST)将分布式消息传递系统协议写成全局类型,再经端点投影得到局部类型。传统方法假设单一设计者掌握完整协议,而实际系统常由不同组件或设计者分别给出子协议;已有模块化规范仅处理对偶输入输出兼容。本文提出首个保持语义的多参与者组合性 MPST 理论:引入混合类型描述相互交互的子协议,定义新的兼容关系,给出将多个子协议组合为良构全局类型的算法,并证明组合保持端点投影,从而保留活性与无死锁等语义保证。作者用真实案例研究评估该理论,并将兼容性扩展到带委托和显式连接的 MPST。
Multiparty session types (MPST) are a specification and verification framework for distributed message-passing systems. The communication protocol of the system is specified as a global type , from which a collection of local types (local process implementations) is obtained by endpoint projection . A global type is a single disciplining entity for the whole system, specified by one designer that has full knowledge of the communication protocol. On the other hand, distributed systems are often described in terms of their components : a different designer is in charge of providing a subprotocol for each component. The problem of modular specification of global protocols has been addressed in the literature, but the state of the art focuses only on dual input/output compatibility. Our work overcomes this limitation. We propose the first MPST theory of multiparty compositionality for distributed protocol specification that is semantics-preserving, allows the composition of two or more components, and retains full MPST expressiveness. We introduce hybrid types for describing subprotocols interacting with each other, define a novel compatibility relation , explicitly describe an algorithm for composing multiple subprotocols into a well-formed global type , and prove that compositionality preserves projection, thus retaining semantic guarantees, such as liveness and deadlock freedom. Finally, we test our work against real-world case studies and we smoothly extend our novel compatibility to MPST with delegation and explicit connections.
@article{paperbot2018,
title = {Hybrid Multiparty Session Types: Compositionality for Protocol Specification through Endpoint Projection},
author = {Lorenzo Gheri and Nobuko Yoshida},
journal = {Proceedings of the ACM on Programming Languages},
volume = {7},
number = {OOPSLA1},
year = {2023},
doi = {10.1145/3586031}
}