PackageTrack
Sign in Get early access

capnp

runtime library for Cap'n Proto data encoding

0.27.0 14M downloads/mo #2590 most downloaded on crates.io capnproto/capnproto-rust

What this package is like to depend on

Last release 21 days ago

02 Aug 2026

Ships fairly regularly

a new release about every 2 weeks

Some releases are documented

notes for 120 of 205 stable releases

Nothing withdrawn

no release was ever pulled

12 years old

205 releases · first in 2014

20 releases in the last 12 months

see the full history below

Release timeline

205 releases · Nov 2014 to Aug 2026
2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 60 of 205
  1. 0.27.0 02 Aug 2026
    Release notes

    prepare for v0.27.0 release

    Open source →
    Release notes
    • Use TypeId to implement precise equality for RawBrandedStructSchema. StructSchema, Field, EnumSchema and Enumerant, and Type.
    • Deprecate Type::loose_equals().
    • Add Debug impls for StructSchema, Field, EnumSchema, and Enumerant.
    • Clean up some internal API in private/layout.rs.
    • Add bounds checking in impl PrimitiveElement for bool.
    Open source →
  2. 0.26.2 05 Jul 2026
    Release notes

    prepare for capnp-v0.26.2 release

    Open source →
    Release notes
    • Avoid possible panic in BufferSegments::new().
    • Avoid possible desyncing in read_message_no_alloc().
    Open source →
  3. 0.26.1 02 Jul 2026
    Release notes

    prepare for capnp-v0.26.1 release

    Open source →
    Release notes
    • Fix case where zeroing missed 7 bytes.
    • Remove spurious bound from IntoInternalListReader impl for enum_list.
    • Add missing (Bool, Bool) case in introspect.rs.
    Open source →
  4. 0.26.0 17 Jun 2026
    Release notes
    • Use GeneratedCodeArena in construction of RawEnumSchema, avoiding need for an unsafe{}.
    • Update Allocator methods to use NonNull.
    Open source →
  5. 0.25.6 16 Jun 2026
    Release notes
    • Prevent some instances of possible undefined behavior relating to pointer::add().
    Open source →
  6. 0.25.5 01 Jun 2026
    Release notes
    • Add impl<T: FromClientHook> FromTypelessPipeline for T, to support pipelining on generic capabilities.
    Open source →
  7. 0.25.4 12 Apr 2026
    Release notes
    • Fix clippy::cast_possible_truncation warnings.
    Open source →
  8. 0.25.3 30 Mar 2026
    Release notes
    • Fix iterator size_hint() so that it returns the remaining size, not the initial size.
    Open source →
  9. 0.25.2 12 Mar 2026
    Release notes
    • Prevent undefined behavior on zero-sized alloc in HeapAllocator.
    Open source →
  10. 0.25.1 12 Feb 2026
    Release notes
    • Prevent multiple potential integer overflows in message construction logic.
    Open source →
  11. 0.25.0 09 Jan 2026
    Release notes
    • Add GeneratedCodeArena, allowing constant::Reader::new() and RawStructSchema::new() to no longer need an unsafe marker.
    Open source →
  12. 0.24.1 08 Jan 2026
    Release notes
    • Make primitive_list<bool> return None from as_slice(), to prevent undefined behavior.
    Open source →
  13. 0.24.0 24 Dec 2025
    Release notes
    • Add unsafe const constructor of constant::Reader and prevent direction construction.
    • Add unsafe const constructor of RawStructSchema and prevent direction construction.
    Open source →
  14. 0.23.2 22 Dec 2025
    Release notes
    • Add #![allow(clippy::all)] in capnp::generated_code().
    Open source →
  15. 0.23.1 16 Dec 2025
    Release notes
    • Fix ReaderArenaImpl::size_in_words(), which had been returning the size in bytes.
    Open source →
  16. 0.23.0 28 Oct 2025
    Release notes
    • Update capability::FromServer trait for new async fn method signatures.
    Open source →
  17. 0.22.0 27 Oct 2025
    Release notes
    • Update capability::Server trait for new async fn support.
    • Update optional embedded-io dependency from 0.6.1 to 0.7.1.
    Open source →
  18. 0.21.7 17 Oct 2025
    Release notes
    • Resolve type on construction of Field. This is expected to improve performance of certain usage patterns of the dynamic API.
    Open source →
  19. 0.21.6 11 Oct 2025
    Release notes
    • Fix buffer sizing in flatten_segments(). A bug was causing unnecessary allocations in write_message_to_words() and write_message_segments_to_words().
    Open source →
  20. 0.21.5 31 Aug 2025
    Release notes
    • Implement Clone for capnp::capability::Client.
    Open source →
  21. 0.21.4 25 Jul 2025
    Release notes
    • Add generated_code!() macro to make it easier to import generated code.
    Open source →
  22. 0.21.3 22 Jul 2025
    Release notes
    • Add capability::DynClientHook to avoid warnings in generated code.
    Open source →
  23. 0.21.2 02 Jul 2025
    Release notes
    • Add introspect::panic_invalid_field_index() and introspect::panic_invalid_annotation_indices() so that generated code can pass Clippy while still working on Rust 2015.
    • Add impl<T, E> From<Result<T, E>> for Promise<T, E>.
    Open source →
  24. 0.21.1 26 May 2025
    Release notes
    • Mark wire_pointers::set_capability_pointer() and PointerBuilder::get_root() as unsafe. These functions live under the private module, so no downstreams users should be directly using them.
    • Add Into impls for converting EnumSchema and StructSchema into their raw counterparts.
    Open source →
  25. 0.21.0 08 Apr 2025
    Release notes
    • Bump minimum required rustc version to 1.81.0.
    • Use core::Error trait, allowing no_std mode to include Error impls.
    • Generalize ReaderSegments implementations.
    • Remove equality impls for introspect::Type in favor of new loose_equals() method.
    Open source →
  26. 0.20.6 07 Mar 2025
    Release notes
    • Restore the "unpredictable function pointer comparison" in impl PartialEq for RawBrandedStructSchema and suppress the rustc warning. Downstream users are advised to avoid using depending on type equality. A future capnp release may remove this impl.
    Open source →
  27. 0.20.5 05 Mar 2025
    Release notes
    • Avoid function pointer comparison in impl PartialEq for RawBrandedStructSchema, as advised by a rustc warning. The new implementation is more expensive.
    • Weaken some assertions in DynamicStruct and DynamicList accessors, to avoid the now-more-expensive equality method.
    Open source →
  28. 0.20.4 02 Mar 2025
    Release notes
    • Fix compilation on 16-bit architectures by setting smaller traveral limit.
    • Add a ?Sized bound to a ReaderSegments blanket impl.
    Open source →
  29. 0.20.3 22 Oct 2024
    Release notes
    • Add message::Reader::get_segments() method.
    Open source →
  30. 0.20.2 15 Oct 2024
    Release notes
    • Fix bug where ptr::copy_nonoverlapping() was potentially being called on invalid pointers (with length = 0).
    Open source →
  31. 0.20.1 23 Sep 2024
    Release notes
    • Add support for downcasting dynamic values to fully concrete list and struct types.
    Open source →
  32. 0.20.0 17 Sep 2024
    Release notes
    • Add trait hook support for streaming RPC methods.
    • Add unsafe impl Sync to BuilderArenaImpl.
    • Move unsafe impl Send from message::Builder to BuilderArenaImpl.
    • Fix misspelled error variant: UnexepectedFarPointer -> UnexpectedFarPointer.
    Open source →
  33. 0.19.8 15 Oct 2024

    Nothing published for this version

  34. 0.19.7 09 Sep 2024
    Release notes
    • Add Results::set_pipeline() and ResultsHook::set_pipeline().
    Open source →
  35. 0.19.6 28 May 2024
    Release notes
    • Fix ExactSizeIterator implementations so that they return the number of remaining elements instead of the total length of the underlying list.
    Open source →
  36. 0.19.5 16 May 2024
    Release notes
    • Fix bug in dynamic reflection where get_named() and has_named() could panic on a field that is not present in the schema.
    Open source →
  37. 0.19.4 13 May 2024
    Release notes
    • Fix possible undefined behavior in primitive_list::as_slice() on empty lists.
    • Disable primitive_list::as_slice() when T is larger than one byte and the unaligned feature is enabled.
    • Enable primitive_list::as_slice() for big-endian targets when T is at most one byte.
    Open source →
  38. 0.19.3 29 Mar 2024
    Release notes
    • Rename ReadSegmentTableResult to NoAllocSegmentTableInfo and make it public.
    • Rename NoAllocBufferSegments::from_segment_table() to NoAllocBufferSegments::from_segment_table_info() and make it public.
    Open source →
  39. 0.19.2 19 Feb 2024
    Release notes
    • Revert SingleSegmentAllocator generalization because it was unsound.
    Open source →
  40. 0.19.1 15 Jan 2024
    Release notes
    • Implement SetterInputtext::Owned for all T : AsRef<str>.
    Open source →
  41. 0.19.0 14 Jan 2024
    Release notes
    • Use binary search instead of linear scan in DynamicStruct::get_named().
    • Rename SetPointerBuilder to SetterInput.
    • Add Receiver type parameter to SetterInput.
    • Support setting text fields by text::Reader or &str, via the SetterInput tactic. This will break code that uses the into() to convert from str to text::Reader in the arguments of such methods.
    • Also support setting primitive list fields by native Rust slices, and text list fields by slices of AsRef<str>.
    • Update embedded-io dependency to version 0.6.1.
    • Use AsRef<[u8]> instead of Deref<Target=[u8]> in NoAllocBufferSegments.
    • Generalize SingleSegmentAllocator to take any type that implements AsMut<[u8]>.
    Open source →
  42. 0.18.13 11 Jan 2024
    Release notes
    • Add PartialEq impls for text::Reader <-> String.
    Open source →
  43. 0.18.12 11 Jan 2024
    Release notes
    • Regenerate schema_capnp.rs after fixing overly-restrictive lifetimes for struct lists.
    Open source →
  44. 0.18.11 06 Jan 2024
    Release notes
    • Add PartialOrd impls for text::Reader.
    Open source →
  45. 0.18.10 10 Dec 2023
    Release notes
    • Add Debug impl for primitive_list::Reader, struct_list::Reader, and others.
    Open source →
  46. 0.18.9 01 Dec 2023
    Release notes
    • Add support for List(Void) in primitive_list::as_slice().
    Open source →
  47. 0.18.8 30 Nov 2023
    Release notes
    • Deprecate StructBuilder::get_pointer_field_mut().
    • Improve docstring on dynamic_struct::Reader::has().
    Open source →
  48. 0.18.7 15 Nov 2023
    Release notes
    • Update try_push_segment() to avoid possible overflow panic in 32-bit mode.
    Open source →
  49. 0.18.6 15 Nov 2023
    Release notes
    • Add overflow checking during segment table reading, to prevent some potential denial of service attacks on 32-bit targets.
    • Deprecate SegmentLengthsBuilder::push_segment() in favor of try_push_segment().
    Open source →
  50. 0.18.5 15 Nov 2023
    Release notes
    • Add read_message_no_alloc() and try_read_message_no_alloc() in serialize and serialize_packed.
    • Enable write_message() in no-alloc mode.
    Open source →
  51. 0.18.4 08 Nov 2023
    Release notes
    • Map std::io::ErrorKind::UnexpectedEof to capnp::ErrorKind::PrematureEndOfFile.
    Open source →
  52. 0.18.3 24 Oct 2023
    Release notes
    • Make BuilderArena usable in no-alloc contexts. Only single-segment messages are supported.
    Open source →
  53. 0.18.2 24 Oct 2023
    Release notes
    • Add SingleSegmentAllocator, for use in no-alloc contexts.
    Open source →
  54. 0.18.1 11 Sep 2023
    Release notes
    • Add #[inline] attribute to many text::Reader and text::Builder methods.
    Open source →
  55. 0.18.0 04 Sep 2023
    Release notes
    • Add optional (default-enabled) alloc feature to allow no-alloc mode.
    • Lazier UTF-8 validation.
    • Add missing #[inline] attributes for f32 and f64.
    • Add optional embedded-io feature.
    • Make SliceSegments a special case of BufferSegments.
    Open source →
  56. 0.17.2 12 Jun 2023
    Release notes
    • Fix indexing bug in schema::FieldSubset.
    Open source →
  57. 0.17.1 09 Jun 2023
    Release notes
    • Fix type mismatch copy/paste bug in dynamic_list::Builder::set().
    Open source →
  58. 0.17.0 08 May 2023
    Release notes
    • Add support for reflection. See dynamic_value.rs and schema.rs.
    Open source →
  59. 0.16.1 13 Mar 2023
    Release notes
    • Fix "stacked borrow" errors found by miri.
    Open source →
  60. 0.16.0 17 Jan 2023
    Release notes
    • Remove deprecated HasTypeId::type_id() method.
    • Remove deprecated MessageSize::plus_eq method.
    • Remove RefCell from builder arena. Should result in minor performance boost.
    • Mark Allocator::deallocate_segment as unsafe.
    • Remove ToU16 and FromU16 traits in favor of core::convert traits.
    • Remove FromStructBuilder and FromStructReader traits in favor of core::convert traits.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive