Next: , Previous: , Up: Super-Mutants   [Contents][Index]


3.5.1 Clang Super-Mutants

Super mutants composed of clang and clang-project software objects work by combining the genomes of multiple objects into a single software object, identifying functions with differences between objects, and wrapping the bodies of those functions in switch statements switching on the value of an environment variable which controls which mutant is exercised in any given execution.

3.5.1.1 Interactions Between Mutants

When combining multiple genomes, there is some risk of interactions between the individual mutants. These primarily relate to compilation errors. For example, if a mutation deletes a global variable which is referenced in the program, that would normally lead to an error. But if that mutant is combined with another which still has the variable, the combined mutant will compile and both will run as if the variable was present.

Conversely, a compilation error in any mutant will cause compilation to fail for the entire super-mutant.

If all mutants are free from compilation errors, their combination should also compile, and its runtime behavior should be functionally indistinguishable from that of the individual mutants.

3.5.1.2 Performance Considerations

The super-mutant genome will introduce a getenv call and a switch statement. If these are placed in a performance-critical function, execution time might increase significantly. If execution time is part of the fitness evaluation, use super-mutants with caution.

A compilation failure in a single mutant will cause phenome to fail for the entire super-mutant. If mutations frequently introduce compilation failures, this can lead to a lot of wasted compilation. This problem will get worse as :super-mutant-count increases.

Similarly, if the individual mutants are not compatible (due to differences in global variables or function signatures), a mutate error will be raised and the entire super-mutant discarded. This can lead to wasted mutations.


Next: , Previous: , Up: Super-Mutants   [Contents][Index]