renshaw
It seems to me that, in the worst case, the downside of your current scheme is an extra field dereference, as in `request.headers.extensions.get("crazyNewField")` instead of `request.headers.get("crazyNewField")`. I think that cost is easily outweighed by the benefits.
Switching compilers on the C++ side doesn't seem to make a significant difference in performance.
https://github.com/dwrensha/capnproto-rust/blob/master/Makef...
https://github.com/dwrensha/capnproto/blob/benchmark/c%2B%2B...
I compiled libcapnp with the latest Clang g++ that ships with XCode. It perhaps would be more fair to also compile the C++ benchmarks with Clang, instead of the Macports gcc4.8 that I'm using, but unfortunately Clang barfs on some template hackery in the benchmark driver.