论文标题
RAST:一种用于资源感知会话类型的语言
Rast: A Language for Resource-Aware Session Types
论文作者
论文摘要
传统的会话类型规定并发计算的双向通信协议,其中保证遵守协议的程序良好。但是,简单的会话类型无法捕获超出交换消息的基本类型之外的属性。作为回应,最近的工作扩展了会话类型,并从线性算术中进行了改进,从而捕获了过程和数据的内在属性。然后,这些改进在描述会话类型的程序上的顺序和并行复杂性范围中起着核心作用。 RAST语言提供了通过算术改进以及超值和时间类型扩展的会话类型的并发程序的开源实现,以捕获工作和程序执行的跨度。为了进一步支持通用编程,RAST还可以增强具有最近开发的嵌套参数多态性的算术精制会话类型。类型检查依赖于库珀的算法在前潮中消除了量化器,并具有一些显着的优化,并且对非线性约束的启发式扩展。此外,Rast还包括一个重建引擎,因此大多数程序构建有关精炼和资源层的构建都是自动插入的。我们提供各种示例来证明语言的表现力。
Traditional session types prescribe bidirectional communication protocols for concurrent computations, where well-typed programs are guaranteed to adhere to the protocols. However, simple session types cannot capture properties beyond the basic type of the exchanged messages. In response, recent work has extended session types with refinements from linear arithmetic, capturing intrinsic attributes of processes and data. These refinements then play a central role in describing sequential and parallel complexity bounds on session-typed programs. The Rast language provides an open-source implementation of session-typed concurrent programs extended with arithmetic refinements as well as ergometric and temporal types to capture work and span of program execution. To further support generic programming, Rast also enhances arithmetically refined session types with recently developed nested parametric polymorphism. Type checking relies on Cooper's algorithm for quantifier elimination in Presburger arithmetic with a few significant optimizations, and a heuristic extension to nonlinear constraints. Rast furthermore includes a reconstruction engine so that most program constructs pertaining the layers of refinements and resources are inserted automatically. We provide a variety of examples to demonstrate the expressivity of the language.