Observations on fuzzing in practice

I’ve been watching with interest over the last few months as first afl-fuzz, and more recently, llvm-fuzz have come into existence and gained – in some circles at least – prominence.  The interesting part to me is not the technology per se – fuzzing is pretty old news in academic circles – but the fact …

Continue reading ‘Observations on fuzzing in practice’ »

How much does it cost to maintain LLVM?

In early October of 2014, I started collecting changes that I saw fly by on llvm-commits that I thought would be straight-forward to automate.  I was trying to be pretty conservative, so these tend to be pretty basic things: fixing deceptive white space around an if clause, removing the name of a method from it’s …

Continue reading ‘How much does it cost to maintain LLVM?’ »

A thought on the correctness of refactoring

The hard part about writing a refactoring tool isn’t the actual code transformation; it’s establishing that the code transformation you wrote didn’t break your code. The traditional approach to validating the transform is to make it correct by construction.  The focus is on the correctness of the transformation in general, rather than a particular instance …

Continue reading ‘A thought on the correctness of refactoring’ »