A Language-Based Version Control System for Python

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

4 Downloads (Pure)

Abstract

We extend prior work on a language-based approach to versioned software development to support versioned programs with mutable state and evolving method interfaces. Unlike the traditional approach of mainstream version control systems, where a textual diff represents each evolution step, we treat versions as programming elements. Each evolution step, merge operation, and version relationship is represented explicitly in a multifaceted code representation. This provides static guarantees for safe code reuse from previous versions and forward and backwards compatibility between versions, allowing clients to use newly introduced code without needing to refactor their program manually. By lifting versioning to the language level, we pave the way for tools that interact with software repositories to have more insight into a system’s behavior evolution. We instantiate our work in the Python programming language and demonstrate its applicability regarding common evolution and refactoring patterns found in different versions of popular Python packages.

Original languageEnglish
Title of host publication38th European Conference on Object-Oriented Programming, ECOOP 2024
EditorsJonathan Aldrich, Guido Salvaneschi
PublisherSchloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing
ISBN (Electronic)9783959773416
DOIs
Publication statusPublished - Sept 2024
Event38th European Conference on Object-Oriented Programming, ECOOP 2024 - Vienna, Austria
Duration: 16 Sept 202420 Sept 2024

Publication series

NameLeibniz International Proceedings in Informatics, LIPIcs
Volume313
ISSN (Print)1868-8969

Conference

Conference38th European Conference on Object-Oriented Programming, ECOOP 2024
Country/TerritoryAustria
CityVienna
Period16/09/2420/09/24

Keywords

  • Software evolution
  • type theory

Cite this