* Avoids boot time mutation of REGISTER constant
* Allows to define project specific expression parsing
* Avoids custom (slow) serialization of Expression objects speeding up
reporter / killer IPC
* Improve specification
* Improve integration API as it now finally references an object the config
* Allow reproduction of syntax from Expression#syntax
* Allow instantiation of Expresssion objects without generating the
syntax, much nicer for most specs & internal code, avoids generating
a string to parse it into an expression
* Fix LSP violation in Mutant::Matcher namespace
* The parallelization runner almost immediately calls a fork and gets
blocked on waitpid() releasing the GIL.
* Threads have lower resource usage than processes
* There is a chance mutant will get faster on smaller machines and might
scale better on bigger.
* Nuke around 800 lock
* Honor LSP with not anymore squeezing something non LSP compatible in
the same inheritance tree.
* Separate running from result tree.
* Clean up kill logic and early exits on already dead mutations.
* Fix #runnin? smell for reporters.
* Decouple config object from VM state. Makes it serializable to enable
config loading.
* Fix sequence of global VM events to match PRIOR rspec infects VM with
gazillions of classes / modules. Thix fixes a startup speed
degeneration.
* Various fixes to enhance determinism.
* Replace some unneded manual double dispatch with single manual dispatch for
reporter / runners.
* I do not use 1.9.3
* Also keeping them in each file increases mental overhead (true it *can* be autoamted)
* None of the files encodes NON ASCII chars.
* I do not expect it makes any difference, since nobody programmatically
will consume strings generated by mutant under the assumption they are UTF-8 encoded.
* 1.9.3 Users have to deal with the encoding fuckup under ruby anyways.