Transactional Editing: Giving ACID to Programmers
Collaboration among programmers today mostly relies on file-based version control systems. These systems typically use optimistic locking to enable parallel work, which means that competing edits (edit conflicts) are detected and have to be resolved at update or commit time. While merging edits can partly be automated, it is an error-prone task that can introduce inconsistencies. Pessimistic locking of the files to be edited does not appear to be a popular alternative, however, and in any case is insufficient to avoid inconsistency, since it does not account for the dependence of (code in) files on others. To address these problems, we show how the notions of consistency and isolation known from transactional databases can be enforced in the context of collaborative programming. We do so by formalizing editing as a set of primitive edit operations applied to an abstract syntax graph overlaid by a constraint graph expressing the consistency criteria mandated by the rules of well-formedness of a language, and by deriving for every sequence of primitive edit operations the write- and read-locks sufficient to (a) perform the edit sequence in isolation from others, and (b) to achieve global consistency before committing. Since our approach is graph-based, it grants us much finer locking granularity than file-based version control.
Tue 22 OctDisplayed time zone: Beirut change
16:00 - 17:30 | Sessions 8: Types, ACID and GovernanceSLE 2019 at Templars Chair(s): Vadim Zaytsev Raincode Labs, Belgium | ||
16:00 20mTalk | Analysis and Modeling of the Governance in General Programming LanguagesNEW IDEA SLE 2019 | ||
16:20 30mTalk | Developing a Monadic Type Checker for an Object-Oriented Language (Experience Report) SLE 2019 DOI Pre-print | ||
16:50 20mTalk | Vision Paper: Generating Incremental Type ServicesNEW IDEA SLE 2019 | ||
17:10 30mTalk | Transactional Editing: Giving ACID to Programmers SLE 2019 |