NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #207 most downloaded on crates.io
Generate encoding and decoding implementations for Prost annotated types.
Last release 4 months ago
07 Jun 2026
Ships fairly regularly
a new release about every 2 months
Rarely documented
notes for 8 of 37 stable releases
5 versions withdrawn
withdrawn after publishing
9 years old
42 releases · first in 2017
PROST! is a Protocol Buffers implementation for the Rust Language . prost generates simple, idiomatic Rust code from proto2 and proto3 files.
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
decode_length_delimiter (#1311)getrandom@0.4.1 from build-dependencies (#1400)cargo clippy to 1.89 (#1433)cargo clippy to 1.91 (#1435)One column per quarter.
fix some forgotten prost import paths by @GlenDC in #1385
DecodeError::new by @caspermeijn in #1382Full Changelog: v0.14.2...v0.14.3
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
Add back DecodeError::new (#1382)
The DecodeError::new() was removed to simplify our code. It was not part of the public API, but
removing it broke code in other crates. It is added back to prevent breakage across the ecosystem.
Bug fixes are still important, and security fixes will be released as soon as possible. Contact the #prost channel in Tokio discord if you feel a bug…
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
Increase MSRV to 1.82 (#1356)
Update maintenance status to Passively Maintained (#1359)
This excerpt is from the readme:
The current maintainer is not contributing new features and doesn't have the time to review new features. Bug fixes and small improvements are welcome. Feel free to contribute small and easily reviewable PRs.
Bug fixes are still important, and security fixes will be released as soon as possible. Contact the
#prostchannel in Tokio discord if you feel a bug or security fix is not getting enough attention.The maintainer expects the official
protobufproject to release their rust library soon and expects it to be as fully featured as the C++ library. See their source code and crate for more information.
prost_build::Config or #[(prost(prost_path = "::prost")] (#1274)trait Error from core (#1179)format! string (#1293)format! string (#1361)ident_conversion (#1291)decode_varint_slice with roundtrips (#1325)Coumpound (#1365)BREAKING CHANGE: trait Debug was a supertrait of trait Message . This is no longer required by prost . If your code relies on trait Debug being implem…
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
rerun commandsVersion 0.14.1 reverts the emission of rerun commands. Other than this change, it is identical to 0.14.0.
In version 0.14.0, prost-build began emitting rerun commands. While intended to improve build correctness, this change caused regressions for some users—for example, those generating protos from an includes directory. These edge cases are difficult to address reliably, so the change has been rolled back in 0.14.1.
For more details, see issue #1296.
prost: Relax Message Debug trait bound (#1147)
BREAKING CHANGE: trait Debug was a supertrait of trait Message. This is no longer required by prost. If your code relies on trait Debug being implemented for every impl Message, you must now explicitly state that you require both Debug and Message. For example: where M: Debug + Message
prost: Remove prost-derive feature (#1247)
BREAKING CHANGE: Feature flag prost-derive is renamed to derive. Please rename any usage of prost-derive feature in your Cargo.toml.
prost-build: Prevent repeated fields to be boxed (#1237)
BREAKING CHANGE: A repeated field that is manually marked as boxed was typed as Vec<Box<T>>. Those fields are now simply typed as Vec<T> to prevent double indirection. The boxed configuration is effectively ignored for repeated fields.
prost-build: Make type_name_domain cumulative (#1228)
BREAKING CHANGE: The configuration for domain names of messages is now cumulative. All calls to prost_build::Config::type_name_domain are now concatenated. The previous behavior was that only the arguments of the last call were used. If you do multiple calls to type_name_domain, you need to remove all but the last call to maintain the same behavior.
prost-build: Derive Eq and Hash trait for messages where possible (#1175)
BREAKING CHANGE: prost-build will automatically derive trait Eq and trait Hash for types where all field support those as well. If you manually impl Eq and/or impl Hash for generated types, then you need to remove the manual implementation. If you use type_attribute to derive(Eq) and/or derive(Hash), then you need to remove those.
Duration to/from chrono::TimeDelta (#1236)gen (#1257)prost-types/README.md (#1262)BREAKING CHANGE: trait Debug was a supertrait of trait Message . This is no longer required by prost . If your code relies on trait Debug being implem…
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
prost: Relax Message Debug trait bound (#1147)
BREAKING CHANGE: trait Debug was a supertrait of trait Message. This is no longer required by prost. If your code relies on trait Debug being implemented for every impl Message, you must now explicitly state that you require both Debug and Message. For example: where M: Debug + Message
prost: Remove prost-derive feature (#1247)
BREAKING CHANGE: Feature flag prost-derive is renamed to derive. Please rename any usage of prost-derive feature in your Cargo.toml.
prost-build: Emit rerun commands (#1140)
BREAKING CHANGE: Previously cargo assumed it had to rerun build.rs if any files in the project changed. prost-build will now emit rerun commands, which means only the explicitly marked files cause a rerun. If your build.rs is dependent on any other file paths than those given to prost-build, then your build.rs needs to emit rerun commands as well.
prost-build: Prevent repeated fields to be boxed (#1237)
BREAKING CHANGE: A repeated field that is manually marked as boxed was typed as Vec<Box<T>>. Those fields are now simply typed as Vec<T> to prevent double indirection. The boxed configuration is effectively ignored for repeated fields.
prost-build: Make type_name_domain cumulative (#1228)
BREAKING CHANGE: The configuration for domain names of messages is now cumulative. All calls to prost_build::Config::type_name_domain are now concatenated. The previous behavior was that only the arguments of the last call were used. If you do multiple calls to type_name_domain, you need to remove all but the last call to maintain the same behavior.
prost-build: Derive Eq and Hash trait for messages where possible (#1175)
BREAKING CHANGE: prost-build will automatically derive trait Eq and trait Hash for types where all field support those as well. If you manually impl Eq and/or impl Hash for generated types, then you need to remove the manual implementation. If you use type_attribute to derive(Eq) and/or derive(Hash), then you need to remove those.
Duration to/from chrono::TimeDelta (#1236)gen (#1257)prost-types/README.md (#1262)PROST! is a Protocol Buffers implementation for the Rust Language . prost generates simple, idiomatic Rust code from proto2 and proto3 files.
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
PROST! is a Protocol Buffers implementation for the Rust Language . prost generates simple, idiomatic Rust code from proto2 and proto3 files.
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
bytes dependency from prost-build (#1169)Foo::bar is boxed (#1168)skip_debug into custom_debug (#1178)invalid_doctest to disable_comments (#1183)PROST! is a Protocol Buffers implementation for the Rust Language . prost generates simple, idiomatic Rust code from proto2 and proto3 files.
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
normalized functions (#1158)derived(Copy) on boxed fields (#1157)Path::display() when printing a path (#1150)MessageGraph::new() can't actually fail (#1151)Self in as_str_name (#1154)skip_debug for prost::Oneof (#1148)protoc from same repo as .proto-files (#1136)PROST! is a Protocol Buffers implementation for the Rust Language . prost generates simple, idiomatic Rust code from proto2 and proto3 files.
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
parse_date fuzzing target (#1127)parse_duration fuzzing target (#1129)cargo test without all-targets (#1118)proc-macro in Cargo.toml (#1102)tests crates (#1101)cmake (#1137)PROST! is a Protocol Buffers implementation for the Rust Language . prost generates simple, idiomatic Rust code from proto2 and proto3 files.
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
note: this version was yanked in favor of 0.13.1
note: this version was yanked in favor of 0.13.1
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
This major update brings new features and fixes:
derive Copy trait for messages where possible (#950)
prost-build will automatically derive trait Copy for some messages. If you manually implement Copy you should remove your implementation.
Change generated functions signatures to remove type parameters (#1045)
The function signature of trait Message is changed to use impl Buf instead of a named generic type. If you implement trait Message, you should change the function signature.
Lightweight error value in TryFrom<i32> for enums (#1010)
When a impl TryFrom<i32> is generated by prost derive macros, it will now return the error type UnknownEnumValue instead of DecodeError. The new error can be used to retreive the integer value that failed to convert.
fix: Only touch include file if contents is changed (#1058)
Most generated files are untouched when the contents doesn't change. Use the same mechanism for include file as well.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →