Magpie: your software, but more efficient!
Magpie is a tool for automated software improvement. It implements MAGPIE, using the genetic improvement methodology to traverse the search space of different software variants to find improved software.
Magpie provides support for improvement of both functional (automated bug fixing) and non-functional (e.g., execution time) properties of software.
Two types of language-agnostic source code representations are supported: line-by-line, and XML trees.
For the latter we recommend the srcML tool with out-of-the-box support for C/C++/C# and Java.
Finally, Magpie also enables parameter tuning and algorithm configuration, both independently and concurrently of the source code search process.
- Unix (Linux/macOS/etc; untested on Windows)
- Python 3.11+ (
master
branch) - Python 3.8+ (
master_legacy
branch)
git clone https://github.com/bloa/magpie.git
cd magpie
python3 magpie local_search --scenario examples/triangle-c/_magpie/scenario_slow.txt
Everything you need to know about Magpie.
Tutorials
- Quick start (start here!)
- Basic usage
- Case study
How-to guides
- Add your own fitness function (soon)
- Add your own algorithm (soon)
- Add your own model (soon)
Explanations
Reference guides
- Scenario files
- Entry points
- Models (soon)
- Algorithms (soon)
- Fitness functions (soon)
Magpie is based on PyGGI 2.0, developed at COINSE KAIST in collaboration with UCL SOLAR.
Part of its development was supported by UK EPSRC Fellowship EP/P023991/1.
If you use Magpie for a publication, we kindly ask you to cite the following ArXiV paper that describes MAGPIE's approach:
@article{blot:2022:corr_1,
author = {Aymeric Blot and
Justyna Petke},
title = {{MAGPIE:} {M}achine Automated General Performance Improvement via Evolution of Software},
journal = {Computing Research Repository},
volume = {abs/2208.02811},
url = {https://arxiv.org/abs/2208.02811},
year = {2022},
}