kscope is a short for kaleidoscope. Essentially - a library which recursively generates randomized code while keeping it 100% equivalent to the original one. Can be used for compiler torture-testing and optimisation testing, and for a few other things too :-).
The Big Idea(tm) behind kscope project is to make C++17 compilers less buggy (via providing reproducible bug reports, and pushing respective compiler teams to fix them). An unusual part of specifically kscope, is that we're using C++17 itself to generate very different (but supposedly-equivalent) code depending on compile-time define -DITHARE_KSCOPE_SEED . A bit of further motivation and some explanations can be found at http://ithare.com/c17-compiler-bug-hunt-very-first-results-12-bugs-reported-3-already-fixed/ .
Compiler: | Clang | GCC | MSVC |
---|---|---|---|
Reported-and-Fixed Bugs | |||
Reported-and-Pending Bugs | #36333 (only Clang 5.0.x, upcoming Clang 6.0 seems to be unaffected) | #47488 (it seems that we run into a new manifestation of the old bug, we tried to bump it) #84463 |
#195483 (reportedly already-known to MSFT internally but not fixed yet) #195665 (reportedly already-known to MSFT internally but not fixed yet; OTOH, some MSFT ppl say this incompliance is actually a feature (really?)) #196900 (reportedly already-known to MSFT internally but not fixed yet) #199554 #202584 #202598 |
License of the kscope project (including kscope contributions to adaptations of 3rd-party open-source projects) is 3-clause BSD License. On the other hand, whenever 3rd-party code is adapted by kscope - BOTH original license of the 3rd-party code, AND kscope's 3-clause BSD license apply (on the plus side, as of now and to the best of our knowledge, all the 3rd-party licenses used by kscope, are permissive). For more detail, see LICENSE.md .
Contributions are VERY welcome. For list of the ideas on "how to make our test coverage better" (ranging from simple running existing tests under different platforms, to writing your own injective functions and kaleidoscoping crypto) - see CONTRIBUTING.md .