Pragmatic Apparatus – Automated Synthesis of Asynchronizations

Cited by Lee Sonogan

Getting Started With Async Features in Python – Real Python

Abstract by Sidi Mohamed Beillahi, Ahmed Bouajjani, Constantin Enea, Shuvendu Lahiri

Asynchronous programming is widely adopted for building responsive and efficient software. Modern lan-guages such as C# provide async/await primitives to simplify the use of asynchrony. However, the use of these primitives remains error-prone because of the non-determinism in their semantics. In this paper, we propose an approach for refactoring a given sequential program into an asynchronous program that uses async/await, called asynchronization. The refactoring process is parametrized by a set of methods to replace with given asynchronous versions, and it is constrained to avoid introducing data races. Since the space of possible solutions is exponential in general, we focus on characterizing the delay complexity that quantifies the delay between two consecutive and distinct outputs. We show that this is polynomial time modulo an oracle for solving reachability (assertion checking) in sequential programs. We also describe a pragmatic approach based on an interprocedural data-flow analysis with polynomial-time delay complexity. The latter approach has been implemented and evaluated on a number of non-trivial C# programs extracted from open-source repositories.

Publication: (Reviewed Journal_

Pub Date: 2021 Doi:

Keywords: C#, Automated Synthesis, Asynchronous programming, polynomial time more sections and references in this research article)

https:/ /

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.