Multi-purpose extensible self-adaptive optimizer and fuzzer
Project description
Byron is an evolutionary tool: given a problem, it first generates a set of random solutions, then iteratively refines and improves them using the results of their evaluations together with structural information. It may be used as a coverage-driven fuzzer and a general-purpose optimizer.
Byron encodes candidate solutions as directed multigraphs and can produce quite complex, highly structured results, such as a realistic program with loops, interrupts, and recursive subroutines.
Candidate solutions are evaluated by calling a user Python function or a shell script, that, for instance, may use proprietary tools. Different types of parallelization are supported out of the box, from simple multithreading to the creation of temporary directories where multiple subprocesses are concurrently spawned.
Installation
⚠️ Byron is currently in pre-alpha and under active development
pip install --upgrade byron
Few optional dependencies can enhance Byron, but are not strictly required:
pip install --upgrade matplotlib
pip install --upgrade joblib
pip install --upgrade psutil
Contacts
- Giovanni Squillero — giovanni.squillero@polito.it
- Alberto Tonda — alberto.tonda@inrae.fr
License
Copyright © 2023 Giovanni Squillero and Alberto Tonda
Byron is free and open-source software, and it is distributed under the permissive Apache License 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for byron-0.1.dev12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fd7bd96aa667af6f19c23c18ec6ced3e96c08aa4b8a3942c4a2556cab166485 |
|
MD5 | b8e4c12375b51c1e5193ef1873675ca0 |
|
BLAKE2b-256 | 36ed40f74deb01f63d4851d849a8a414f4ca90f979cd17a398d1c8530d083138 |