Crafting Interpreters 2020-08-14

By Max Woerner Chase

I've hit eighty-something percent limited coverage, and the new lines of coverage continue to turn up embarrassing bugs. A few more days of this, and I should be ready to do some refactoring that will cut down on verbosity in exchange for some somewhat eccentric syntax, and then take coverage all the way to 100%, and work on mutation testing.

I've also been looking into Daikon, and I'm significantly less enamored of my original idea tha the first thing I'd try would be to write a front-end myself so I could use it with code that interests me. The documentation on how front-ends work seems to mix together descriptions of ideal implementations, descriptions of good-enough implementations, explanations of how those implementations can be good enough, descriptions of formats as they are or were, and of formats as they are no longer or might yet be. For an example of that last one, currently Dataflow hierarchy mentions an EXCEPTION program point type that is mentioned nowhere else on the page. Looking at the implementations some, it looks like it's just supposed to always be an EXIT, which, sort of makes sense. Regardless, I'd rather throw it at some LLVM output or something. (It also sounds like a custom build of Python would work, but that's a custom build of Python. Redoing the work for every interpreter version I care about. A Python library defining a cusstom tracer function could get potentially every version I care about, and probably almost work on versions I don't know about yet.)

Anyway, I'm just about gone. I should wrap up.

Good night.