A Semantics Comparison Workbench for a Concurrent, Asynchronous, Distributed Programming Language

10/11/2017
by   Claudio Corrodi, et al.
0

A number of high-level languages and libraries have been proposed that offer novel and simple to use abstractions for concurrent, asynchronous, and distributed programming. The execution models that realise them, however, often change over time---whether to improve performance, or to extend them to new language features---potentially affecting behavioural and safety properties of existing programs. This is exemplified by SCOOP, a message-passing approach to concurrent object-oriented programming that has seen multiple changes proposed and implemented, with demonstrable consequences for an idiomatic usage of its core abstraction. We propose a semantics comparison workbench for SCOOP with fully and semi-automatic tools for analysing and comparing the state spaces of programs with respect to different execution models or semantics. We demonstrate its use in checking the consistency of properties across semantics by applying it to a set of representative programs, and highlighting a deadlock-related discrepancy between the principal execution models of SCOOP. Furthermore, we demonstrate the extensibility of the workbench by generalising the formalisation of an execution model to support recently proposed extensions for distributed programming. Our workbench is based on a modular and parameterisable graph transformation semantics implemented in the GROOVE tool. We discuss how graph transformations are leveraged to atomically model intricate language abstractions, how the visual yet algebraic nature of the model can be used to ascertain soundness, and highlight how the approach could be applied to similar languages.

READ FULL TEXT
research
05/02/2022

Reversing an Imperative Concurrent Programming Language

We introduce a method of reversing the execution of imperative concurren...
research
10/21/2019

Transparent Synchronous Dataflow

There are several functional approaches to dataflow programming, produce...
research
09/09/2023

From Reversible Computation to Checkpoint-Based Rollback Recovery for Message-Passing Concurrent Programs

The reliability of concurrent and distributed systems often depends on s...
research
04/08/2019

Analysis of Commutativity with State-Chart Graph Representation of Concurrent Programs

We present a new approach to check for commutativity in concurrent progr...
research
03/11/2022

Veracity: Declarative Multicore Programming with Commutativity

There is an ongoing effort to provide programming abstractions that ease...
research
11/30/2017

On Asynchrony and Choreographies

Choreographic Programming is a paradigm for the development of concurren...
research
03/27/2018

Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools

Context: Software development tools that interact with running programs ...

Please sign up or login with your details

Forgot password? Click here to reset