4 research outputs found

    Treo: Textual Syntax for Reo Connectors

    Get PDF
    Reo is an interaction-centric model of concurrency for compositional specification of communication and coordination protocols. Formal verification tools exist to ensure correctness and compliance of protocols specified in Reo, which can readily be (re)used in different applications, or composed into more complex protocols. Recent benchmarks show that compiling such high-level Reo specifications produces executable code that can compete with or even beat the performance of hand-crafted programs written in languages such as C or Java using conventional concurrency constructs. The original declarative graphical syntax of Reo does not support intuitive constructs for parameter passing, iteration, recursion, or conditional specification. This shortcoming hinders Reo's uptake in large-scale practical applications. Although a number of Reo-inspired syntax alternatives have appeared in the past, none of them follows the primary design principles of Reo: a) declarative specification; b) all channel types and their sorts are user-defined; and c) channels compose via shared nodes. In this paper, we offer a textual syntax for Reo that respects these principles and supports flexible parameter passing, iteration, recursion, and conditional specification. In on-going work, we use this textual syntax to compile Reo into target languages such as Java, Promela, and Maude.Comment: In Proceedings MeTRiD 2018, arXiv:1806.0933

    Safety and Performance in Generated Coordination Code

    Get PDF
    Reo is able to act as a domain specific language by compiling a high-level protocol specification to coordination glue code in a target general purpose language. In the case of Java, these generated programs take advantage of optimization opportunities, but struggle to preserve Reo’s semantics. In this work, we extend the Reo compiler to support the Rust language. We show that the resulting programs implement several existing and novel performance optimizations, whilst relying on Rust’s expressive type system to preserve meaningful safety and liveness properties at compile time. Our data-oriented design facilitates flexibility, such as protocol reconfiguration at runtime, but still achieves performance in the order of handcrafted programs for non-trivial protocols

    Rule-Based Form for Stream Constraints

    Get PDF
    International audienceConstraint automata specify protocols as labeled transition systems that preserve synchronization under composition. They have been used as a basis for tools, such as compilers and model checkers. Unfortunately, composition of transition systems suffers from state space and transition space explosions, which limits scalability of the tools based on constraint automata. In this work, we propose stream constraints as an alternative to constraint automata that avoids state space explosions. We introduce a rule-based form for stream constraints that can avoid transition space explosions. We provide sufficient conditions under which our approach avoids transition space explosions
    corecore