D-Programming-Language/tools — pull request #127 by CyberShadow (2014-04-14 10:05:17+00:00)
Title: Update Dustmite

This is a big update, including an internal overhaul I did a while ago. The splitter was almost completely reimplemented, which should allow it to better split the code into fragments it can reduce away, and Dustmite itself now uses a new strategy which should yield considerably lower general reduction times.

Dustmite now also has a test suite in the main repository, however I'm not sure if it should be included here.

The code requires DMD git to compile, though that shouldn't be a problem for this repository. rdmd has depended on stuff from Phobos git occasionally.

As this is a big change, there might be some regressions (e.g. constructs that are not fully reduced, or crashes with certain code constructs), though two months of testing hasn't found anything too bad. Now that there's a test suite, it will at least be easier to track them in the future.

Commits:
* f60abab splitter: Improve parens postprocessor
* 359c8a1 splitter: Add parens postprocessor
* 19e2774 splitter: Fix handling of trailing comments/whitespace
* ee5f31c splitter: Improve "else" handling
* 23b5186 dustmite: Change default strategy to inbreadth
* a8d9681 Add inbreadth strategy
* 306c9d4 Add pingpong strategy
* 3f4bf00 dustmite: Autoretry cache writes
* b7354d7 dustmite: Add --strategy switch
* 99a8169 splitter: Tweak block statement postprocessor
* 919b3ac splitter: Tweak block keyword postprocessor
* 95a3e69 splitter: Tweak pairing postprocessor
* 50e4ac5 splitter: Recognize function invariants
* 1aa5dff splitter: Reimplement pairs like any other separators
* 26b4aa6 runtests fixup
* 400e3d7 dustmite: Add --dump-html
* c66780e Add enum test
* 3cdc67f runtests: Add support for dump-only tests
* 80acb1b Fix maximum depth of dependency postprocessor output to be logarithmic
* 5f77e4a Add list test
* 5221a07 splitter: Pairing postprocessor fixes
* d2276f6 splitter: Group if/else together
* afc911a .gitignore
* 7d58f28 tests: Add UDAs to obfuscation tests
* 5d19124 runtests: Print which tests failed to finish
* f89898f New splitter module
* 3a90ebf dustmite: Improve --dump dependency formatting
* 711aa2b runtests: Run dustmite via rdmd
* 0f869bd Use unseeded RNG for --obfuscate --keep-length
* bc2e233 tests: Version progress (filtered reduction output)
* fd63894 Use src.result for final, versioned result
* d83dafb Add current test results
* 0550cc5 runtests: Pass opts when dumping as well
* d471242 .gitignore
* 5e52252 runtests: Fix opts loading
* bee1600 Fix coverage test
* 13d0300 Add test runner
* 0a180b6 Test command fixes
* 96570ef Add existing tests (most results are outdated)
* 75b0108 Add .gitignore
* e27ef66 dsplit: Don't consume whitespace after closing a pair
* 10d2fc5 dsplit: Split by .
* 0311f50 dsplit: Improve ! splitting
* 613459f dsplit: Split by !
* fb52bf3 dsplit: Unwrap useless nesting
* d16ea86 dsplit: Improve whitespace splitting