Trivial: drop unnecessary includes.
bool -> int in tesla.h.

Don't use stdbool.h in case it causes trouble in constrained environments like the kernel.
Clean up tesla.h namespace.

Things defined in tesla.h must all be prefixed with __tesla. Other, nicer-looking macros can be defined by clients (like in the new strawman/tesla-macros.h).
Trivial: add missing @file tag.
Use 'const Location&' rather than 'Assertion*'.

These parsing functions don't actually need access to an Assertion object; they just need an automaton identifier, which is a Location.
Pass input filename to TeslaVisitor.
Add an explicit "we're done" symbol.
Style: define top-level automaton first.

No effect on analysis or instrumentation.
Use '-Wall -Werror' when building strawman.
Rename 'Assertion' -> 'InlineAssertion'.

I think that struct automata descriptions are different enough to require a different top-level protocol buffer. Let's start being clearer about the distinction.
Simple struct manipulation in the demo.

This will give us something simpler than TCP to start instrumenting.
Add tesla_die().

If instrumentation gets into an error state that it can't handle, it can call tesla_die(). This may not provide a great deal of detail about the problem, but it's better than transparently glossing over failure!
Use tesla_die() when appropriate.

When instrumentation calls tesla_update_state() and it fails, call tesla_die().

This may not be the right thing to do in the long run (we want to distinguish between out-of-memory and something-has-gone-horribly-wrong), but it's a start.

Also, use 'icmp eq' rather than 'icmp ne'!