NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2648 most downloaded on crates.io
runtime library for Cap'n Proto data encoding
Last release 10 days ago
08 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
207 releases · first in 2014
Fix "stacked borrow" errors found by miri.
Remove deprecated HasTypeId::type_id() method.
HasTypeId::type_id() method.MessageSize::plus_eq method.RefCell from builder arena. Should result in minor performance boost.Allocator::deallocate_segment as unsafe.ToU16 and FromU16 traits in favor of core::convert traits.FromStructBuilder and FromStructReader traits in favor of core::convert traits.One column per quarter.
Deprecate HasTypeId::type_id() in favor of HasTypeId::TYPE_ID.
HasTypeId::type_id() in favor of HasTypeId::TYPE_ID.- Remove list pointer munging.
Deprecate MessageSize::plus_eq in favor of AddAssign.
rust-version field in Cargo.toml, for better error messages when somone uses and old rustc.is_empty() methods.MessageSize::plus_eq in favor of AddAssign.Default impls.Move HasStructSize::struct_size() into a constant HasStructSize::STRUCT_SIZE.
Nothing published for this version
Handle case when alloc::alloc_zeroed() returns null.
alloc::alloc_zeroed() returns null.Add try_get() method for the lists.
try_get() method for the lists.text_list::Builder.Fix potential integer overflows in set_list_pointer() and zero_object_helper().
set_list_pointer() and zero_object_helper().Add serialize::read_message_from_flat_slice_no_alloc().
Update rpc_try feature to work with try_trait_v2
- Add capnp::BufferSegments.
Add as_slice() methods for primitive_list. (These are only enabled for little endian targets.)
- Add list_list::Builder::set().
Add HeapAllocator::max_segment_words().
Include LICENSE in published crate.
Add sync_reader feature, which allows multithreaded reading of a shared message.
sync_reader feature, which allows multithreaded reading of a shared message.ReaderOptions.traversal_limit_in_words from a u64 to an Option<usize>.To type parameter of SetPointerBuilder.Nothing published for this version
Add blanket impl Allocator for &mut A where A: Allocator, allowing easier reuse of ScratchSpaceHeapAllocator.
Fix incorrect calculation in capnp::compute_serialized_size_in_words().
capnp::serialize::compute_serialized_size_in_words().Deprecate unsafe functions data::new_reader() and data::new_builder().
data::new_reader() and data::new_builder().Add impl ReaderSegments for &S where S: ReaderSegments.
impl <S> ReaderSegments for &S where S: ReaderSegments.Fix bug where read_segment_table() wrongly handled short reads.
read_segment_table() wrongly handled short reads.Add alignment check in ScratchSpaceHeapAllocator::new().
ScratchSpaceHeapAllocator::new().Remove deprecated ServerHook trait.
message::Allocator trait and ScratchSpaceHeapAllocator.serialize.try_read_message() and serialize_packed::try_read_message().ServerHook trait.Nothing published for this version
Fix bug where ScratchSpaceHeapAllocator returned an incorrect buffer length.
Add capability::FromServer trait.
Fix buggy Iterator::nth() implementation for ListIter.
Add "unaligned" feature flag to allow use of unaligned memory.
Word::bytes_to_words() and Word::bytes_to_words_mut().u8 instead of Word.read_message_from_words() in favor of read_message_from_flat_slice().serialize::SegmentLengthsBuilder API.Deprecate read_message_from_words() in favor of read_message_from_flat_slice().
read_message_from_words() in favor of read_message_from_flat_slice().bytes_to_words(). (Misaligned access is never okay.)Remove internal capnp::Map and use async/await instead.
Remove the "futures" feature and the optional futures 0.1 dependency, in favor of std::Future.
Add serialize::read_message_from_flat_slice().
Allow buffer passed to read_message_from_words() to be larger than the actual message.
Remove dependency on byteorder crate, in favor of from_le_bytes() and to_le_bytes().
Simplify handling of pointer defaults by adding default parameter to FromPointerReader.
Implement DerefMut for text::Builder
Add optional rpc_try feature, implementing std::Try for Promise.
try!() to ?.Update deprecation attributes, to satisfy clippy.
Rename a bunch of as_reader() methods to into_reader(), to satisfy clippy.
Avoid some unnecessary heap allocation that could occur when reading multisegment messages.
Add message::Builder::set_root_canonical() method. Relies on a new signature for SetPointerBuilder.
Deprecate borrow() in favor of reborrow().
Add serialize::write_message_segments().
Add message::Builder::into_reader() and message::Reader::into_typed().
Appease new "tyvar_behind_raw_pointer" lint (see https://github.com/rust-lang/rust/issues/46906).
Implement capability_list, to support List(Interface).
Avoid constructing (zero-length) slices from null pointers, as it seems to be a possible source of undefined behavior.
Avoid some situations where we would construct (but not dereference) out-of-bounds pointers.
Deprecate Word::from() in favor of capnp_word!().
In canonicalization, account the possibility of nonzero padding in primitive lists.
Fix some canonicalization bugs.
Implement as_reader() for lists.
as_reader() for lists.canonicalize() and is_canonical().total_size() returned wrong answer on empty struct lists.Implement struct list upgrades.
message.init_root::<any_pointer::Builder>() did not clear the old value.Eliminate possible void-list-amplification in total_size().
Eliminate panics in total_size() and set_root().
Prevent integer overflow possible with very long struct lists on 32-bit systems.
Shave some bytes off the representation of StructReader and friends.
Your coding agent can read these notes before it upgrades. Set up the MCP server →