Next: , Previous: , Up: Top   [Contents][Index]


1 Introduction

The Software Evolution library enables the programmatic modification and evaluation of extant software. The software evolution library was developed as part of the genprog project on automated program repair.

A common interface abstracts over multiple types of software objects (see Software Objects) including abstract syntax trees parsed from source code, LLVM IR, compiled assembler, and linked ELF binaries. Mutation and evaluation methods (see Software Methods) are implemented on top of this interface supporting Search Based Software Engineering (SBSE) techniques (see Search Functions).

This library has been used to optimize benchmark programs (see https://github.com/eschulte/goa) and to patch vulnerabilities in closed source binaries (see http://eschulte.github.io/netgear-repair).