TY - GEN
T1 - A Language-Based Version Control System for Python
AU - Carvalho, Luís
AU - Seco, João Costa
N1 - Funding Information:
info:eu-repo/grantAgreement/FCT/6817 - DCRRNI ID/UIDB%2F04516%2F2020/PT#
info:eu-repo/grantAgreement/FCT/Concurso de avaliação no âmbito do Programa Plurianual de Financiamento de Unidades de I&D (2017%2F2018) - Financiamento Programático/UIDP%2F04516%2F2020/PT#
This work is supported by EU Horizon Europe under Grant, Agreement no. 101093006 (TaRDIS).
Publisher Copyright:
© Luís Carvalho and João Costa Seco.
PY - 2024/9
Y1 - 2024/9
N2 - 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.
AB - 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.
KW - Software evolution
KW - type theory
UR - http://www.scopus.com/inward/record.url?scp=85205020144&partnerID=8YFLogxK
U2 - 10.4230/LIPIcs.ECOOP.2024.9
DO - 10.4230/LIPIcs.ECOOP.2024.9
M3 - Conference contribution
AN - SCOPUS:85205020144
T3 - Leibniz International Proceedings in Informatics, LIPIcs
BT - 38th European Conference on Object-Oriented Programming, ECOOP 2024
A2 - Aldrich, Jonathan
A2 - Salvaneschi, Guido
PB - Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing
T2 - 38th European Conference on Object-Oriented Programming, ECOOP 2024
Y2 - 16 September 2024 through 20 September 2024
ER -