Chisel is a software debloating system that satisfies the following criteria:
Minimality: Chisel trims code as aggressively as possible while respecting the specification. It guarantees 1-minimality: removing any single statement from the reduced program fails to respect the specification. | |
Efficiency: Chisel efficiently finds the minimized program and scales to large programs. It uses a learning algorithm to avoid generating too many syntactically or semantically invalid candidate programs during its search. | |
Robustness: Chisel avoids introducing new errors or vulnerabilities in the generated program. The minimized program is guaranteed to be correct with respect to the given specification and is therefore robust. | |
Naturalness: Chisel produces debloated code that is maintainable and extensible. It avoids program transformations that could mangle the program or break its naturalness. | |
Generality: Chisel can handle a wide variety of different kinds of programs and specifications. It treats both the program and the specification as black-boxes, enabling it to be broadly applicable. |