Rewriting sfpv & Introducing Stoat
After some rather frustrating maintenance issues sfpv is now a retired project. Working with the clang API resulted in frequent breaks between versions of llvm, issues with very hard to predict NULL pointers, and poor extendability. The end product was something that I thought was cool, but I was hesitant to actually recommend anyone use it due to the chance of it getting broken in a hard to fix way.
A rewrite of the tool using only the LLVM IR was done this past week which would appear to eliminate the build system hell and it is usable on projects which previously resulted in crashing. sloccount indicates that I have gone from 1397 SLOC of C down to 295 C and 295 ruby with a roughly equivalent feature set.
The error printing is now a lot more approximate, but still plenty usable. The resulting structure of the program also makes it easier to modify the tool as all of the deduction logic is now placed in a fairly simple ruby script and the individual passes are easy to run separately for debugging.
The tool still needs some polish, but for those who want to see it prior to the official release, please see https://github.com/fundamental/stoat .