Characterizing Python Library Migrations
- URL: http://arxiv.org/abs/2207.01124v2
- Date: Mon, 29 Jan 2024 17:28:50 GMT
- Title: Characterizing Python Library Migrations
- Authors: Mohayeminul Islam and Ajay Kumar Jha and Ildar Akhmetov and Sarah Nadi
- Abstract summary: We label 3,096 migration-related code changes in 335 Python library migrations.
We find that 40% of library pairs have API mappings that involve non-function program elements.
On average, a developer needs to learn about 4 APIs and 2 API mappings to perform a migration.
- Score: 2.2557806157585834
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Developers heavily rely on Application Programming Interfaces (APIs) from
libraries to build their software. As software evolves, developers may need to
replace the used libraries with alternate libraries, a process known as library
migration. Doing this manually can be tedious, time-consuming, and prone to
errors. Automated migration techniques can help alleviate some of this burden.
However, designing effective automated migration techniques requires
understanding the types of code changes required to transform client code that
used the old library to the new library. This paper contributes an empirical
study that provides a holistic view of Python library migrations, both in terms
of the code changes required in a migration and the typical development effort
involved. We manually label 3,096 migration-related code changes in 335 Python
library migrations from 311 client repositories spanning 141 library pairs from
35 domains. Based on our labeled data, we derive a taxonomy for describing
migration-related code changes, PyMigTax. Leveraging PyMigTax and our labeled
data, we investigate various characteristics of Python library migrations, such
as the types of program elements and properties of API mappings, the
combinations of types of migration-related code changes in a migration, and the
typical development effort required for a migration. Our findings highlight
various potential shortcomings of current library migration tools. For example,
we find that 40% of library pairs have API mappings that involve non-function
program elements, while most library migration techniques typically assume that
function calls from the source library will map into (one or more) function
calls from the target library. As an approximation for the development effort
involved, we find that, on average, a developer needs to learn about 4 APIs and
2 API mappings to perform a migration, and ... (truncated)
Related papers
- Automatic Library Migration Using Large Language Models: First Results [0.0]
We report the first results of a study in which we are exploring the use of ChatGPT to support API migration tasks.
We show that the best results are achieved by the One-Shot prompt, followed by the Chain Of Thoughts.
arXiv Detail & Related papers (2024-08-28T22:03:54Z) - Example-Based Automatic Migration of Continuous Integration Systems [2.2836654317217326]
Continuous Integration (CI) is a widely adopted practice for faster code change integration and testing.
Developers often migrate between CI systems in pursuit of features like matrix building or better logging.
This migration is effort intensive and error-prone owing to limited knowledge of the new CI system and its syntax.
We propose a novel approach for CI system's automatic migration: CIMig.
arXiv Detail & Related papers (2024-07-02T20:19:21Z) - VersiCode: Towards Version-controllable Code Generation [58.82709231906735]
Large Language Models (LLMs) have made tremendous strides in code generation, but existing research fails to account for the dynamic nature of software development.
We propose two novel tasks aimed at bridging this gap: version-specific code completion (VSCC) and version-aware code migration (VACM)
We conduct an extensive evaluation on VersiCode, which reveals that version-controllable code generation is indeed a significant challenge.
arXiv Detail & Related papers (2024-06-11T16:15:06Z) - Adaptoring: Adapter Generation to Provide an Alternative API for a
Library [5.710971447109951]
Third-party libraries are a cornerstone of fast application development.
An obscure API instead slows down the learning process and can lead to erroneous use.
This paper explores the use of the adapter pattern to provide a new API as a new library that calls the original library internally.
arXiv Detail & Related papers (2024-01-13T11:48:45Z) - Interactive, Iterative, Tooled, Rule-Based Migration of Microsoft Access
to Web Technologies [0.11650821883155184]
We are working on migrating Microsoft Access monolithic applications to the web front-end and producing back-end.
To enable the developers to drive the migration to the target systems, we propose an Interactive, Iterative, Tooled, Rule-Based Migration approach.
arXiv Detail & Related papers (2023-09-07T06:46:28Z) - MELT: Mining Effective Lightweight Transformations from Pull Requests [8.012294395224707]
MELT generates API migration rules directly from pull requests in popular library repositories.
We infer transformation rules in comby, a language for structural code search and replace.
Unlike previous work, our approach enables inference rule to seamlessly integrate into the library workflow.
arXiv Detail & Related papers (2023-08-28T16:21:52Z) - Causal-learn: Causal Discovery in Python [53.17423883919072]
Causal discovery aims at revealing causal relations from observational data.
$textitcausal-learn$ is an open-source Python library for causal discovery.
arXiv Detail & Related papers (2023-07-31T05:00:35Z) - SequeL: A Continual Learning Library in PyTorch and JAX [50.33956216274694]
SequeL is a library for Continual Learning that supports both PyTorch and JAX frameworks.
It provides a unified interface for a wide range of Continual Learning algorithms, including regularization-based approaches, replay-based approaches, and hybrid approaches.
We release SequeL as an open-source library, enabling researchers and developers to easily experiment and extend the library for their own purposes.
arXiv Detail & Related papers (2023-04-21T10:00:22Z) - Repro: An Open-Source Library for Improving the Reproducibility and
Usability of Publicly Available Research Code [74.28810048824519]
Repro is an open-source library which aims at improving the usability of research code.
It provides a lightweight Python API for running software released by researchers within Docker containers.
arXiv Detail & Related papers (2022-04-29T01:54:54Z) - BOML: A Modularized Bilevel Optimization Library in Python for Meta
Learning [52.90643948602659]
BOML is a modularized optimization library that unifies several meta-learning algorithms into a common bilevel optimization framework.
It provides a hierarchical optimization pipeline together with a variety of iteration modules, which can be used to solve the mainstream categories of meta-learning methods.
arXiv Detail & Related papers (2020-09-28T14:21:55Z) - SacreROUGE: An Open-Source Library for Using and Developing
Summarization Evaluation Metrics [74.28810048824519]
SacreROUGE is an open-source library for using and developing summarization evaluation metrics.
The library provides Python wrappers around the official implementations of existing evaluation metrics.
It provides functionality to evaluate how well any metric implemented in the library correlates to human-annotated judgments.
arXiv Detail & Related papers (2020-07-10T13:26:37Z)
This list is automatically generated from the titles and abstracts of the papers in this site.
This site does not guarantee the quality of this site (including all information) and is not responsible for any consequences.