Cap’n Proto 1.0

After ten years since the initial release of Cap’n Proto, version 1.0 of its C++ reference implementation is finally here. Despite not having many new features, Cap’n Proto has been relied upon in production for a long time, with millions (maybe billions) of messages and gigabits (maybe terabits) of data encoded daily. The motivation behind the 1.0 release is to begin working on version 2.0, although this will not be a revolutionary change. The forthcoming changes will focus on improving the C++ API and the companion toolkit library, KJ. These changes are driven by the experience of building the Cloudflare Workers runtime on top of KJ. While the specific changes for version 2.0 are not yet known, some ideas include requiring a compiler with C++20 support, making the code more coroutine-friendly, and dropping support for disabled exceptions and other exotic modes. These changes, however, will not affect the serialization format or RPC protocol. A formal release is expected to happen in the future, but tracking the v2 branch is an option for those willing to accept breakages.

To top