Go bindings for Cap'n Proto serialization format (version 1.0 without RPC support).
go-capnproto is a Go language binding library for the Cap'n Proto serialization protocol, which provides efficient binary data interchange between systems. It solves the problem of fast, schema-based data serialization and deserialization in Go applications, particularly for network communication scenarios. This version (1.0) provides core serialization functionality without RPC support.
Go developers who need efficient binary serialization for network communication, data persistence, or inter-process communication, particularly those already using or considering Cap'n Proto as their serialization format.
Developers choose go-capnproto for its mature, stable implementation of Cap'n Proto serialization in Go, with proven integration with network transport libraries like mangos. It offers schema generation tools that automate the creation of Cap'n Proto schemas from existing Go structs, reducing manual work.
Cap'n Proto library and parser for go. This is go-capnproto-1.0, and does not have rpc. See https://github.com/zombiezen/go-capnproto2 for 2.0 which has rpc and capabilities.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes tools like bambam that automatically generate Cap'n Proto schemas from Go struct definitions, reducing manual schema writing and easing adoption in existing codebases.
Designed to work with network transport libraries like mangos, as demonstrated in example projects such as goq, enabling efficient message passing in distributed systems.
Maintained specifically for existing applications using version 1.0, providing reliable bug fixes and packing implementation updates without disruptive changes.
Full implementation of the Cap'n Proto packing specification ensures efficient data encoding and decoding, minimizing overhead for serialization tasks.
Version 1.0 lacks built-in RPC support, a core feature of Cap'n Proto 2.0, forcing developers to implement RPC externally or switch libraries for distributed communication.
New features and contributions are directed to version 2.0, meaning this version may not receive updates for newer Go versions or protocol enhancements, posing maintenance risks.
Installation requires building custom binaries like capnpc-go and manual PATH adjustments, as noted in the README, which can be error-prone compared to modern Go module workflows.