Publicação
A Language-Based Version Control System for Python
| Resumo: | 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. |
|---|---|
| Autores principais: | Carvalho, Luís |
| Outros Autores: | Seco, João Costa |
| Assunto: | Software evolution type theory Software |
| Ano: | 2024 |
| País: | Portugal |
| Tipo de documento: | documento de conferência |
| Tipo de acesso: | acesso aberto |
| Instituição associada: | Universidade Nova de Lisboa |
| Idioma: | inglês |
| Origem: | Repositório Institucional da UNL |
Registos relacionados
groups Semantic Versioning for Python Programs
por: Carvalho, Luís
Publicado em: (2023)
por: Carvalho, Luís
Publicado em: (2023)
article pyZtrategic: a zipper-based embedding of strategies and attribute grammars in Python
por: Rodrigues, Emanuel
Publicado em: (2024)
por: Rodrigues, Emanuel
Publicado em: (2024)
article Understanding the motivations, challenges, and practices of software rejuvenation
por: Lucas, Walter
Publicado em: (2023)
por: Lucas, Walter
Publicado em: (2023)
school A Versioned Approach to Web Service Evolution
por: Campinhos, João
Publicado em: (2017)
por: Campinhos, João
Publicado em: (2017)
article Guiding legacy systems for evolution. PmatE: a case study of maintenance and engineering
por: Monteiro, André
Publicado em: (2022)
por: Monteiro, André
Publicado em: (2022)
article Robust Contract Evolution in a TypeSafe MicroService Architectures
por: Seco, João Costa
Publicado em: (2020)
por: Seco, João Costa
Publicado em: (2020)
article Understanding the adoption of modern Javascript features: an empirical study on open-source systems
por: Lucas, Walter
Publicado em: (2025)
por: Lucas, Walter
Publicado em: (2025)
school Injecting software faults in Python applications
por: Marques, Henrique Manuel Domingues
Publicado em: (2022)
por: Marques, Henrique Manuel Domingues
Publicado em: (2022)
groups Behavioural Up/down Casting For Statically Typed Languages
por: Bacchiani, Lorenzo
Publicado em: (2024)
por: Bacchiani, Lorenzo
Publicado em: (2024)
groups PyXYZ : an educational 3D wireframe engine in Python
por: Fachada, Nuno
Publicado em: (2021)
por: Fachada, Nuno
Publicado em: (2021)
article Boilerplates for reconfigurable systems: a language and its semantics
por: Madeira, Alexandre
Publicado em: (2013)
por: Madeira, Alexandre
Publicado em: (2013)
school Python-tutor on program comprehension
por: Soares, Diogo Filipe Lopes
Publicado em: (2020)
por: Soares, Diogo Filipe Lopes
Publicado em: (2020)
article Trends on empty exception handlers for Java open source libraries
por: Nogueira, Ana Filipa
Publicado em: (2017)
por: Nogueira, Ana Filipa
Publicado em: (2017)
article Bidirectional transformation of model-driven spreadsheets
por: Cunha, Jácome Miguel Costa
Publicado em: (2012)
por: Cunha, Jácome Miguel Costa
Publicado em: (2012)
groups Ferrite
por: Chen, Ruo Fei
Publicado em: (2022)
por: Chen, Ruo Fei
Publicado em: (2022)
article Conclave: writing programs to understand programs
por: Carvalho, Nuno Ramos
Publicado em: (2014)
por: Carvalho, Nuno Ramos
Publicado em: (2014)
article A bidirectional model-driven spreadsheet environment
por: Cunha, Jácome Miguel Costa
Publicado em: (2012)
por: Cunha, Jácome Miguel Costa
Publicado em: (2012)
article A study of version control system in software development management concerning PLC environments
por: Costa, Domingos
Publicado em: (2022)
por: Costa, Domingos
Publicado em: (2022)
article Lifecycle management in government-driven open source projects – practical framework
por: Henttonen, Katja
Publicado em: (2022)
por: Henttonen, Katja
Publicado em: (2022)
school Software livre/open source vs. software proprietário na educação: o caso de estudo de uma escola do 2.º e 3.º ciclos.
por: Mota, Carla Filomena Augusto
Publicado em: (2015)
por: Mota, Carla Filomena Augusto
Publicado em: (2015)
article Software-Based Assets Maturity Level (SML) – Um Modelo de Avaliação de Maturidade para Software-Based Assets: Software-Based Assets Maturity Level (SML) - A Maturity Assessment Model for Software-Based Assets
por: Simões, Ivo
Publicado em: (2026)
por: Simões, Ivo
Publicado em: (2026)
school Avaliação da resistência antimicrobiana num laboratório clínico: desenvolvimento de software com Python
por: Rosa, Gilberto Dinarte Mendonça Batista
Publicado em: (2025)
por: Rosa, Gilberto Dinarte Mendonça Batista
Publicado em: (2025)
article Coupled evolution of model-driven spreadsheets
por: Mendes, Jorge
Publicado em: (2012)
por: Mendes, Jorge
Publicado em: (2012)
article PHP code smells in web apps
por: Rio, Américo
Publicado em: (2023)
por: Rio, Américo
Publicado em: (2023)
article A Pattern-Based Development Approach for Interaction Flow Modeling Language
por: Rodriguez-Echeverria, Roberto
Publicado em: (2019)
por: Rodriguez-Echeverria, Roberto
Publicado em: (2019)
article Specializing Context-Free Grammars with a (1 + 1)-EA
por: Manzoni, Luca
Publicado em: (2020)
por: Manzoni, Luca
Publicado em: (2020)
school Semantic Conflicts in Version Control Systems
por: Castanho, Nuno Guilherme Nunes
Publicado em: (2021)
por: Castanho, Nuno Guilherme Nunes
Publicado em: (2021)
article Interconnectability of session-based logical processes
por: Toninho, Bernardo
Publicado em: (2018)
por: Toninho, Bernardo
Publicado em: (2018)
school Safe API Evolution in a Microservice Architecture with a Pluggable and Transactionless Solution
por: Ribeiro, Rodrigo Jorge
Publicado em: (2022)
por: Ribeiro, Rodrigo Jorge
Publicado em: (2022)
assignment Constructor subtyping: extended version
por: Frade, M. J.
Publicado em: (1999)
por: Frade, M. J.
Publicado em: (1999)
groups Analyzing web applications quality evolution
por: Rio, A.
Publicado em: (2017)
por: Rio, A.
Publicado em: (2017)
article Variability analysis for robot operating system applications
por: Santos, Andre
Publicado em: (2022)
por: Santos, Andre
Publicado em: (2022)
article PHP code smells in web apps: Evolution, survival and anomalies
por: Rio, A.
Publicado em: (2023)
por: Rio, A.
Publicado em: (2023)
groups Applying ISO/IEC 25010 standard to prioritize and solve quality issues of automatic ETL processes
por: Alves, T.
Publicado em: (2014)
por: Alves, T.
Publicado em: (2014)
article Automated subtyping of HIV-1 genetic sequences for clinical and surveillance purposes: performance evaluation of the new REGA version 3 and seven other tools.
por: Pineda-Peña,, A.C.,
Publicado em: (2013)
por: Pineda-Peña,, A.C.,
Publicado em: (2013)
school Usability Evaluation of Domain-Specific Languages
por: Barišic, Ankica
Publicado em: (2017)
por: Barišic, Ankica
Publicado em: (2017)
school Development of a build and deployment system
por: Bernardes, João Pedro dos Santos
Publicado em: (2009)
por: Bernardes, João Pedro dos Santos
Publicado em: (2009)
book PETTool: A pattern-based GUI testing tool
por: Marco Cunha
Publicado em: (2010)
por: Marco Cunha
Publicado em: (2010)
school Learning control knowledge by observation in software agents
por: Costa, Paulo Roberto Almeida Moreira
Publicado em: (2014)
por: Costa, Paulo Roberto Almeida Moreira
Publicado em: (2014)
groups A universal session type for untyped asynchronous communication
por: Balzer, Stephanie
Publicado em: (2018)
por: Balzer, Stephanie
Publicado em: (2018)
Registos relacionados
-
groups Semantic Versioning for Python Programs
por: Carvalho, Luís
Publicado em: (2023) -
article pyZtrategic: a zipper-based embedding of strategies and attribute grammars in Python
por: Rodrigues, Emanuel
Publicado em: (2024) -
article Understanding the motivations, challenges, and practices of software rejuvenation
por: Lucas, Walter
Publicado em: (2023) -
school A Versioned Approach to Web Service Evolution
por: Campinhos, João
Publicado em: (2017) -
article Guiding legacy systems for evolution. PmatE: a case study of maintenance and engineering
por: Monteiro, André
Publicado em: (2022)