You’ll notice that the site has a new theme, a new title, maybe a little bit of a new attitude (being “josh the outspoken” isn’t all it’s cracked up to be). All this is in anticipation of upb’s release, and of a lot of follow-up work that I couldn’t be more excited about.
A lot of people mentioned that my last theme didn’t handle preview correctly, which I agree was quite annoying — sorry about that! Unfortunately my new theme doesn’t have preview at all. Finding the perfect WordPress theme is harder than it seems.
So as I mentioned I expect the first release of upb to come within the next week or two. It will only have parsing (not serializing), but most of the core functionality besides that is done. I expect that the core will stay relatively static, and all the enhancements/innovations will come from modules that are layered on top of that. For example, some of the things I have in mind are:
- Extensions for every language known to man. The first ones will be Python, Lua, and Ruby (in that order). These will take some thought to get just right, because I want the memory management to be tightly integrated. In particular, I want protobuf objects in these languages to be able to reference string data from the original protobufs, but all be memory-managed appropriately.
- Support for the Protocol Buffer text format.
- An easy way to parse only selected fields. For example, I want to be able to say (in Python):
time, url = logrecord.parse_fields(proto_data, "time", "url")
This can be optimized out the wazoo, because you can skip all fields and submessages that you don’t care about, and you can stop parsing once you have the data you need.
And of course, performance, performance, performance. I can’t wait to get my hands on some real profiles and see what my next optimization target will be.