Skip to the content.

Byron v0.8a1.dev45 “Don Juan”

A multi-purpose extensible self-adaptive optimizer and fuzzer

Byron is an evolutionary tool: given a problem, it first generates a set of random solutions, then iteratively 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 internally encodes candidate solutions as typed, directed multigraphs and can tackle problems with complex, structured constraints. For instance, it may be used to create realistic programs with loops, flow-control structures, and subroutines. Gory detail: solutions are heterogeneous forests with additional edges connecting leaves, possibly between different trees.

Candidate solutions are dumped as text and then evaluated by calling a user-defined Python function or by invoking a shell script that may use external 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.

Byron was made possible by the contributions of many individuals over many years.

Installation

⚠️ Byron is currently in alpha and under active development

The Python package is available on PyPi, the source code is on GitHub.

Contacts

License

Copyright (c) 2023-24 Giovanni Squillero and Alberto Tonda
Byron is free and open-source software, and it is distributed under the Apache License 2.0.