prost
A Protocol Buffers implementation for the Rust Language.
0.14.4
546M downloads/mo
#184 most downloaded on crates.io
tokio-rs/prost
What this package is like to depend on
Last release 2 months ago
07 Jun 2026
Ships fairly regularly
a new release about every 2 months
Rarely documented
notes for 8 of 41 stable releases
5 versions withdrawn
withdrawn after publishing
9 years old
46 releases · first in 2017
3 releases in the last 12 months
see the full history below
Release timeline
46 releases · Jun 2017 to Jun 2026Releases
latest 46-
0.14.407 Jun 2026Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.🚀 Features
🐛 Bug Fixes
- Use Display instead of Debug for generated enumeration attributes (#1419)
- (prost-derive) Return error for invalid enumeration default identifiers (#1426)
- (build) Grab binary path from cargo (#1429)
- (build) Fix C++ build on GCC 15 (#1395)
📚 Documentation
- Add example for
decode_length_delimiter(#1311) - Update protobuf-src example to avoid unsafe set_var
🧪 Testing
💼 Dependencies
- (deps) Update criterion requirement from 0.7 to 0.8 (#1374)
- (deps) Remove
[email protected]from build-dependencies (#1400) - (deps) Update rand requirement from 0.9 to 0.10 (#1397)
- (deps) Bump actions/upload-artifact from 6 to 7 (#1409)
- (deps) Update
cargo clippyto 1.89 (#1433) - (deps) Update
cargo clippyto 1.91 (#1435) - (deps) Update and improve nix devshell (#1393)
🎨 Styling
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.🚀 Features
- (prost-derive) Make is_valid a constant function (#1401)
- Increase MSRV to 1.85 (#1428)
🐛 Bug Fixes
- Use Display instead of Debug for generated enumeration attributes (#1419)
- (prost-derive) Return error for invalid enumeration default identifiers (#1426)
- (build) Grab binary path from cargo (#1429)
- (build) Fix C++ build on GCC 15 (#1395)
📚 Documentation
- Add example for
decode_length_delimiter(#1311) - Update protobuf-src example to avoid unsafe set_var
🧪 Testing
- Test derive Eq behavior (#1422)
- (groups) Actually construct
NestedGroup(#1363)
💼 Dependencies
- (deps) Update criterion requirement from 0.7 to 0.8 (#1374)
- (deps) Remove
[email protected]from build-dependencies (#1400) - (deps) Update rand requirement from 0.9 to 0.10 (#1397)
- (deps) Bump actions/upload-artifact from 6 to 7 (#1409)
- (deps) Update
cargo clippyto 1.89 (#1433) - (deps) Update
cargo clippyto 1.91 (#1435) - (deps) Update and improve nix devshell (#1393)
🎨 Styling
- Prevent needless borrow (#1404)
- Use
std::hint::black_box()(#1403) - Use variables directly in
format!()(#1432) - Remove explicit
.into_iter()(#1434) - Run clippy on benches (#1405)
-
0.14.310 Jan 2026Release notes
Open source →What's Changed
- fix some forgotten prost import paths by @GlenDC in #1385
- build(deps): bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #1381
- build(deps): update pulldown-cmark-to-cmark requirement from 21 to 22 by @dependabot[bot] in #1384
- Bugfix: default Name implementation produces invalid URLs with empty packages. by @aaronjeline in #1386
- fix: Add back
DecodeError::newby @caspermeijn in #1382 - chore: remove protobuf submodule and leverage cmake for it by @LucioFranco in #1389
New Contributors
- @GlenDC made their first contribution in #1385
- @aaronjeline made their first contribution in #1386
Full Changelog: v0.14.2...v0.14.3
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.⚠️ Heads-up
-
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
- Name::full_name() is correct for empty packages (#1386)
💼 Dependencies
- (deps) Bump actions/upload-artifact from 5 to 6 (#1381)
- (deps) Update pulldown-cmark-to-cmark requirement from 21 to 22 (#1384)
⚙️ Miscellaneous Tasks
- Remove protobuf submodule and leverage cmake for it (#1389)
-
0.14.201 Dec 2025 withdrawnRelease notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.⚠️ Heads-up
-
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.
🚀 Features
- Configure prost path via
prost_build::Configor#[(prost(prost_path = "::prost")](#1274) - Support for deprecated enum and oneof fields (#1316)
🐛 Bug Fixes
- (prost-build) Resolve OneOf type name conflict with embedded message (#1294)
- (prost-build) Avoid OneOf type collision with enums and keyword names (#1341)
💼 Dependencies
- Use
trait Errorfrom core (#1179) - (deps) Update protobuf to v25.8 (#1323)
- (deps) Update criterion requirement from 0.6 to 0.7 (#1308)
- (deps) Update petgraph to 0.8 (#1327)
- (deps) Bump actions/upload-artifact from 4 to 5 (#1351)
- (deps) Bump actions/checkout from 5 to 6 (#1370)
- Bump actions/checkout to v5 (#1312)
- Update clippy to version 1.87 (#1292)
- Replace once_cell dependency by std lib (#1119)
📚 Documentation
- Update outdated link is test documentation (#1289)
- Describe use of encoding module (#1322)
- Update the readme MSRV to the actual number (#1331)
- Update URLs after manual review (#1336)
- Answer why fields are wrapped in option (#1358)
🎨 Styling
- Add spaces to derive arguments in generated code (#1290)
- Use variables directly in the
format!string (#1293) - Remove unneeded lint allow statements (#1326)
- Remove allocation in tests (#1332)
- Simplify DecodeError description to an enum (#1330)
- Use variables directly in the
format!string (#1361) - Fix typo in prost/src/encoding.rs (#1369)
🧪 Testing
- Rename package of
ident_conversion(#1291) - Add test for split buffer varint decoding (#1321)
- Add descriptive reason of test failure (#1320)
- Additionally test
decode_varint_slicewith roundtrips (#1325) - (result_struct) Move tests to separate module (#1333)
- (proto3_presence) Move test to separate module (#1334)
- (result_enum) Move test to separate module (#1342)
- (option_enum) Move test to separate module (#1344)
- (option_struct) Move tests to separate module (#1345)
- (message_encoding) Roundtrip
Coumpound(#1365) - (no_unused_results) Add roundtrip for Test message (#1364)
- (ServiceGenerator) Verify the content of all generated files (#1357)
- (derive_copy) Allow dead code (#1362)
- Always choose macOS 14 (#1324)
⚙️ Miscellaneous Tasks
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.note: this version was yanked in favor of 0.14.2
⚠️ Heads-up
-
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.
🚀 Features
- Configure prost path via
prost_build::Configor#[(prost(prost_path = "::prost")](#1274) - Support for deprecated enum and oneof fields (#1316)
🐛 Bug Fixes
- (prost-build) Resolve OneOf type name conflict with embedded message (#1294)
- (prost-build) Avoid OneOf type collision with enums and keyword names (#1341)
💼 Dependencies
- Use
trait Errorfrom core (#1179) - (deps) Update protobuf to v25.8 (#1323)
- (deps) Update criterion requirement from 0.6 to 0.7 (#1308)
- (deps) Update petgraph to 0.8 (#1327)
- (deps) Bump actions/upload-artifact from 4 to 5 (#1351)
- (deps) Bump actions/checkout from 5 to 6 (#1370)
- Bump actions/checkout to v5 (#1312)
- Update clippy to version 1.87 (#1292)
- Replace once_cell dependency by std lib (#1119)
📚 Documentation
- Update outdated link is test documentation (#1289)
- Describe use of encoding module (#1322)
- Update the readme MSRV to the actual number (#1331)
- Update URLs after manual review (#1336)
- Answer why fields are wrapped in option (#1358)
🎨 Styling
- Add spaces to derive arguments in generated code (#1290)
- Use variables directly in the
format!string (#1293) - Remove unneeded lint allow statements (#1326)
- Remove allocation in tests (#1332)
- Simplify DecodeError description to an enum (#1330)
- Use variables directly in the
format!string (#1361) - Fix typo in prost/src/encoding.rs (#1369)
🧪 Testing
- Rename package of
ident_conversion(#1291) - Add test for split buffer varint decoding (#1321)
- Add descriptive reason of test failure (#1320)
- Additionally test
decode_varint_slicewith roundtrips (#1325) - (result_struct) Move tests to separate module (#1333)
- (proto3_presence) Move test to separate module (#1334)
- (result_enum) Move test to separate module (#1342)
- (option_enum) Move test to separate module (#1344)
- (option_struct) Move tests to separate module (#1345)
- (message_encoding) Roundtrip
Coumpound(#1365) - (no_unused_results) Add roundtrip for Test message (#1364)
- (ServiceGenerator) Verify the content of all generated files (#1357)
- (derive_copy) Allow dead code (#1362)
- Always choose macOS 14 (#1324)
⚙️ Miscellaneous Tasks
- Replace duplicate README by a symlink (#1303)
- Add
cargo-semver-checks(#1337)
-
-
0.14.118 Jun 2025Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.⚠️ Revert emission of
reruncommandsVersion 0.14.1 reverts the emission of
reruncommands. Other than this change, it is identical to 0.14.0.In version 0.14.0,
prost-buildbegan emittingreruncommands. While intended to improve build correctness, this change caused regressions for some users—for example, those generatingprotosfrom anincludesdirectory. 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.
Breaking changes
-
prost: Relax Message Debug trait bound (#1147)
BREAKING CHANGE:
trait Debugwas a supertrait oftrait Message. This is no longer required byprost. If your code relies ontrait Debugbeing implemented for everyimpl 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-deriveis renamed toderive. Please rename any usage ofprost-derivefeature in yourCargo.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 asVec<T>to prevent double indirection. Theboxedconfiguration is effectively ignored for repeated fields. -
prost-build: Make
type_name_domaincumulative (#1228)BREAKING CHANGE: The configuration for domain names of messages is now cumulative. All calls to
prost_build::Config::type_name_domainare 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-buildwill automatically derivetrait Eqandtrait Hashfor types where all field support those as well. If you manuallyimpl Eqand/orimpl Hashfor generated types, then you need to remove the manual implementation. If you usetype_attributetoderive(Eq)and/orderive(Hash), then you need to remove those.
Features
- prost-types: Implement conversion
Durationto/fromchrono::TimeDelta(#1236) - prost-build: Prepare for 2024 keyword
gen(#1257)
Dependencies
- (deps) Update pulldown-cmark to 0.13 (#1259)
- (deps) update criterion requirement from 0.5 to 0.6 (#1280)
Documentation
- Update dead link LICENSE in
prost-types/README.md(#1262)
Styling
Testing
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.⚠️ Revert emission of
reruncommandsVersion 0.14.1 reverts the emission of
reruncommands. Other than this change, it is identical to 0.14.0.In version 0.14.0,
prost-buildbegan emittingreruncommands. While intended to improve build correctness, this change caused regressions for some users—for example, those generatingprotosfrom anincludesdirectory. 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.
Breaking changes
-
prost: Relax Message Debug trait bound (#1147)
BREAKING CHANGE:
trait Debugwas a supertrait oftrait Message. This is no longer required byprost. If your code relies ontrait Debugbeing implemented for everyimpl 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-deriveis renamed toderive. Please rename any usage ofprost-derivefeature in yourCargo.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 asVec<T>to prevent double indirection. Theboxedconfiguration is effectively ignored for repeated fields. -
prost-build: Make
type_name_domaincumulative (#1228)BREAKING CHANGE: The configuration for domain names of messages is now cumulative. All calls to
prost_build::Config::type_name_domainare 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-buildwill automatically derivetrait Eqandtrait Hashfor types where all field support those as well. If you manuallyimpl Eqand/orimpl Hashfor generated types, then you need to remove the manual implementation. If you usetype_attributetoderive(Eq)and/orderive(Hash), then you need to remove those.
Features
- prost-types: Implement conversion
Durationto/fromchrono::TimeDelta(#1236) - prost-build: Prepare for 2024 keyword
gen(#1257)
Dependencies
- (deps) Update pulldown-cmark to 0.13 (#1259)
- (deps) update criterion requirement from 0.5 to 0.6 (#1280)
Documentation
- Update dead link LICENSE in
prost-types/README.md(#1262)
Styling
- Use DoubleEndedIterator::next_back (#1255)
- Fix typo (#1260)
Testing
- Run tests using edition 2024 (#1254)
- Run clippy with edition 2024 enabled (#1256)
-
-
0.14.013 Jun 2025 withdrawnRelease notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Breaking changes
-
prost: Relax Message Debug trait bound (#1147)
BREAKING CHANGE:
trait Debugwas a supertrait oftrait Message. This is no longer required byprost. If your code relies ontrait Debugbeing implemented for everyimpl 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-deriveis renamed toderive. Please rename any usage ofprost-derivefeature in yourCargo.toml. -
prost-build: Emit
reruncommands (#1140)BREAKING CHANGE: Previously
cargoassumed it had to rerunbuild.rsif any files in the project changed.prost-buildwill now emitreruncommands, which means only the explicitly marked files cause a rerun. If yourbuild.rsis dependent on any other file paths than those given toprost-build, then yourbuild.rsneeds to emitreruncommands 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 asVec<T>to prevent double indirection. Theboxedconfiguration is effectively ignored for repeated fields. -
prost-build: Make
type_name_domaincumulative (#1228)BREAKING CHANGE: The configuration for domain names of messages is now cumulative. All calls to
prost_build::Config::type_name_domainare 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-buildwill automatically derivetrait Eqandtrait Hashfor types where all field support those as well. If you manuallyimpl Eqand/orimpl Hashfor generated types, then you need to remove the manual implementation. If you usetype_attributetoderive(Eq)and/orderive(Hash), then you need to remove those.
Features
- prost-types: Implement conversion
Durationto/fromchrono::TimeDelta(#1236) - prost-build: Prepare for 2024 keyword
gen(#1257)
Dependencies
- (deps) Update pulldown-cmark to 0.13 (#1259)
- (deps) update criterion requirement from 0.5 to 0.6 (#1280)
Documentation
- Update dead link LICENSE in
prost-types/README.md(#1262)
Styling
Testing
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Breaking changes
-
prost: Relax Message Debug trait bound (#1147)
BREAKING CHANGE:
trait Debugwas a supertrait oftrait Message. This is no longer required byprost. If your code relies ontrait Debugbeing implemented for everyimpl 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-deriveis renamed toderive. Please rename any usage ofprost-derivefeature in yourCargo.toml. -
prost-build: Emit
reruncommands (#1140)BREAKING CHANGE: Previously
cargoassumed it had to rerunbuild.rsif any files in the project changed.prost-buildwill now emitreruncommands, which means only the explicitly marked files cause a rerun. If yourbuild.rsis dependent on any other file paths than those given toprost-build, then yourbuild.rsneeds to emitreruncommands 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 asVec<T>to prevent double indirection. Theboxedconfiguration is effectively ignored for repeated fields. -
prost-build: Make
type_name_domaincumulative (#1228)BREAKING CHANGE: The configuration for domain names of messages is now cumulative. All calls to
prost_build::Config::type_name_domainare 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-buildwill automatically derivetrait Eqandtrait Hashfor types where all field support those as well. If you manuallyimpl Eqand/orimpl Hashfor generated types, then you need to remove the manual implementation. If you usetype_attributetoderive(Eq)and/orderive(Hash), then you need to remove those.
Features
- prost-types: Implement conversion
Durationto/fromchrono::TimeDelta(#1236) - prost-build: Prepare for 2024 keyword
gen(#1257)
Dependencies
- (deps) Update pulldown-cmark to 0.13 (#1259)
- (deps) update criterion requirement from 0.5 to 0.6 (#1280)
Documentation
- Update dead link LICENSE in
prost-types/README.md(#1262)
Styling
- Use DoubleEndedIterator::next_back (#1255)
- Fix typo (#1260)
Testing
- Run tests using edition 2024 (#1254)
- Run clippy with edition 2024 enabled (#1256)
-
-
0.13.512 Feb 2025Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Features
- prost-types: Derive Arbitrary (#1188)
Documentation
- Use intra doc links instead of HTML tags (#1219)
Dependencies
- Update pulldown-cmark-to-cmark requirement from >=16, <=19 to >=16, <=20 (#1206)
- Update itertools requirement from >=0.10, <=0.13 to >=0.10, <=0.14 (#1222)
- Update petgraph requirement to include 0.7 (#1226)
- Update rand requirement from 0.8 to 0.9 (#1233)
- Bump clippy to 1.83 (#1220)
- Update flake.lock (#1216)
Styling
Testing
- default_enum_value: Move tests to separate module (#1198)
- nesting: Move tests to separate module (#1218)
- recursive_oneof: Move tests to separate module (#1225)
- boxed_field: Box an oneof field (#1235)
- groups: Move tests to separate module (#1234)
- default_string_escape: Move tests to separate module (#1239)
- Move DecodeError tests closer to the implementation (#1227)
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Features
- prost-types: Derive Arbitrary (#1188)
Documentation
- Use intra doc links instead of HTML tags (#1219)
Dependencies
- Update pulldown-cmark-to-cmark requirement from >=16, <=19 to >=16, <=20 (#1206)
- Update itertools requirement from >=0.10, <=0.13 to >=0.10, <=0.14 (#1222)
- Update petgraph requirement to include 0.7 (#1226)
- Update rand requirement from 0.8 to 0.9 (#1233)
- Bump clippy to 1.83 (#1220)
- Update flake.lock (#1216)
Styling
- Replace unnecessary
map_or(#1221) - prost-build: Use enum getter (#1238)
Testing
- default_enum_value: Move tests to separate module (#1198)
- nesting: Move tests to separate module (#1218)
- recursive_oneof: Move tests to separate module (#1225)
- boxed_field: Box an oneof field (#1235)
- groups: Move tests to separate module (#1234)
- default_string_escape: Move tests to separate module (#1239)
- Move DecodeError tests closer to the implementation (#1227)
-
0.13.406 Dec 2024Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Features
- Impl Name for Protobuf well-known wrapper types (#1174)
Performance
- NonZeroU64 to optimize encoded_len_varint (#1192)
Dependencies
- Remove unused
bytesdependency fromprost-build(#1169) - Update pulldown-cmark-to-cmark requirement from >=16, <=17 to >=16, <=18 (#1173)
- Update pulldown-cmark-to-cmark requirement from >=16, <=18 to >=16, <=19 (#1195)
- Update protobuf to v25.3 (#1165)
- Update protobuf to v25.4 (#1176)
Styling
Testing
- (boxed_field) Confirm
Foo::baris boxed (#1168) - Move build.rs to standard location (#1167)
- (custom_debug) Merge
skip_debugintocustom_debug(#1178) - Rename
invalid_doctesttodisable_comments(#1183) - (custom_attributes) Move module to separate file (#1187)
Build
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Features
- Impl Name for Protobuf well-known wrapper types (#1174)
Performance
- NonZeroU64 to optimize encoded_len_varint (#1192)
Dependencies
- Remove unused
bytesdependency fromprost-build(#1169) - Update pulldown-cmark-to-cmark requirement from >=16, <=17 to >=16, <=18 (#1173)
- Update pulldown-cmark-to-cmark requirement from >=16, <=18 to >=16, <=19 (#1195)
- Update protobuf to v25.3 (#1165)
- Update protobuf to v25.4 (#1176)
Styling
- Remove explicit lifetimes (#1180)
- Remove unnecessary empty line after document (#1181)
Testing
- (boxed_field) Confirm
Foo::baris boxed (#1168) - Move build.rs to standard location (#1167)
- (custom_debug) Merge
skip_debugintocustom_debug(#1178) - Rename
invalid_doctesttodisable_comments(#1183) - (custom_attributes) Move module to separate file (#1187)
Build
- Bump clippy version to 1.82 (#1182)
- Restrict permissions of
GITHUB_TOKEN(#1189)
-
0.13.321 Sep 2024Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Features
- (prost-types) Add
normalizedfunctions (#1158)
Bug Fixes
- (prost-build) Remove
derived(Copy)on boxed fields (#1157)
Documentation
Styling
- Use
Path::display()when printing a path (#1150) MessageGraph::new()can't actually fail (#1151)- (generated-code) Use
Selfinas_str_name(#1154)
Testing
- Actually test
skip_debugforprost::Oneof(#1148) - (prost-build) Validate error texts (#1152)
- (prost-build) Fix error texts (#1156)
Build
- Increase MSRV to 1.71.1 (#1135)
- (deps) Update pulldown-cmark to 0.12 and pulldown-cmark-to-cmark to 16 (#1144)
- (protobuf) Compile and install protoc on Windows (#1145)
- (protobuf) Use same
protocfrom same repo as .proto-files (#1136) - (deps) Update pulldown-cmark-to-cmark from 16 to 17 (#1155)
- Unify assert on fixtures (#1142)
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Features
- (prost-types) Add
normalizedfunctions (#1158)
Bug Fixes
- (prost-build) Remove
derived(Copy)on boxed fields (#1157)
Documentation
- (prost-types) Add description of using Any (#1141)
- (prost-build) Use
cargo addin example (#1149)
Styling
- Use
Path::display()when printing a path (#1150) MessageGraph::new()can't actually fail (#1151)- (generated-code) Use
Selfinas_str_name(#1154)
Testing
- Actually test
skip_debugforprost::Oneof(#1148) - (prost-build) Validate error texts (#1152)
- (prost-build) Fix error texts (#1156)
Build
- Increase MSRV to 1.71.1 (#1135)
- (deps) Update pulldown-cmark to 0.12 and pulldown-cmark-to-cmark to 16 (#1144)
- (protobuf) Compile and install protoc on Windows (#1145)
- (protobuf) Use same
protocfrom same repo as .proto-files (#1136) - (deps) Update pulldown-cmark-to-cmark from 16 to 17 (#1155)
- Unify assert on fixtures (#1142)
- (prost-types) Add
-
0.13.230 Aug 2024Release notes
Open source →Prost version 0.13.2
PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Features
- prost-build: Add protoc executable path to Config (#1126)
- prost-build: Extract file descriptor loading from compile_protos() (#1067)
Bug Fixes
- prost-types: Fix date-time parsing (#1096)
- prost-types: '+' is not a numeric digit (#1104)
- prost-types: Converting DateTime to Timestamp is fallible (#1095)
- prost-types: Parse timestamp with long second fraction (#1106)
- prost-types: Format negative fractional duration (#1110)
- prost-types: Allow unknown local time offset (#1109)
Styling
- Remove use of legacy numeric constants (#1089)
- Move encoding functions into separate modules (#1111)
- Remove needless borrow (#1122)
Testing
- Add tests for public interface of DecodeError (#1120)
- Add
parse_datefuzzing target (#1127) - Fix build without std (#1134)
- Change some proptest to kani proofs (#1133)
- Add
parse_durationfuzzing target (#1129) - fuzz: Fix building of fuzzing targets (#1107)
- fuzz: Add fuzz targets to workspace (#1117)
Miscellaneous Tasks
- Move old protobuf benchmark into prost (#1100)
- Remove allow clippy::derive_partial_eq_without_eq (#1115)
- Run
cargo testwithoutall-targets(#1118) - dependabot: Add github actions (#1121)
- Update to cargo clippy version 1.80 (#1128)
Build
- Use
proc-macroin Cargo.toml (#1102) - Ignore missing features in
testscrates (#1101) - Use separated build directory for protobuf (#1103)
- protobuf: Don't install unused test proto (#1116)
- protobuf: Use crate
cmake(#1137) - deps: Update devcontainer to Debian Bookworm release (#1114)
- deps: Bump actions/upload-artifact from 3 to 4 (#1123)
- deps: Bump baptiste0928/cargo-install from 2 to 3 (#1124)
- deps: bump model-checking/kani-github-action from 0.32 to 1.1 (#1125)
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Features
- prost-build: Add protoc executable path to Config (#1126)
- prost-build: Extract file descriptor loading from compile_protos() (#1067)
Bug Fixes
- prost-types: Fix date-time parsing (#1096)
- prost-types: '+' is not a numeric digit (#1104)
- prost-types: Converting DateTime to Timestamp is fallible (#1095)
- prost-types: Parse timestamp with long second fraction (#1106)
- prost-types: Format negative fractional duration (#1110)
- prost-types: Allow unknown local time offset (#1109)
Styling
- Remove use of legacy numeric constants (#1089)
- Move encoding functions into separate modules (#1111)
- Remove needless borrow (#1122)
Testing
- Add tests for public interface of DecodeError (#1120)
- Add
parse_datefuzzing target (#1127) - Fix build without std (#1134)
- Change some proptest to kani proofs (#1133)
- Add
parse_durationfuzzing target (#1129) - fuzz: Fix building of fuzzing targets (#1107)
- fuzz: Add fuzz targets to workspace (#1117)
Miscellaneous Tasks
- Move old protobuf benchmark into prost (#1100)
- Remove allow clippy::derive_partial_eq_without_eq (#1115)
- Run
cargo testwithoutall-targets(#1118) - dependabot: Add github actions (#1121)
- Update to cargo clippy version 1.80 (#1128)
Build
- Use
proc-macroin Cargo.toml (#1102) - Ignore missing features in
testscrates (#1101) - Use separated build directory for protobuf (#1103)
- protobuf: Don't install unused test proto (#1116)
- protobuf: Use crate
cmake(#1137) - deps: Update devcontainer to Debian Bookworm release (#1114)
- deps: Bump actions/upload-artifact from 3 to 4 (#1123)
- deps: Bump baptiste0928/cargo-install from 2 to 3 (#1124)
- deps: bump model-checking/kani-github-action from 0.32 to 1.1 (#1125)
-
0.13.109 Jul 2024Release notes
Open source →Prost version 0.13.1
PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Bug fixes
- Enum variant named Error causes ambiguous item (#1098)
Release notes
Open source →PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.Bug fixes
- Enum variant named Error causes ambiguous item (#1098)
-
0.13.008 Jul 2024 withdrawnRelease notes
Open source →note: this version was yanked in favor of 0.13.1
PROST! is a Protocol Buffers implementation for the Rust Language.
prostgenerates simple, idiomatic Rust code fromproto2andproto3files.This major update brings new features and fixes:
Breaking changes
-
derive Copy trait for messages where possible (#950)
prost-buildwill automatically derivetrait Copyfor some messages. If you manually implementCopyyou should remove your implementation. -
Change generated functions signatures to remove type parameters (#1045)
The function signature of
trait Messageis changed to useimpl Bufinstead of a named generic type. If you implementtrait Message, you should change the function signature. -
Lightweight error value in TryFrom<i32> for enums (#1010)
When a
impl TryFrom<i32>is generated byprostderive macros, it will now return the error typeUnknownEnumValueinstead ofDecodeError. The new error can be used to retreive the integer value that failed to convert.
Features
-
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.
Dependencies
- update env_logger requirement from 0.10 to 0.11 (#1074)
- update criterion requirement from 0.4 to 0.5 (#1071)
- Remove unused libz-sys (#1077)
- build(deps): update itertools requirement from >=0.10, <=0.12 to >=0.10, <=0.13 (#1070)
Documentation
- better checking of tag duplicates, avoid discarding invalid variant errs (#951)
- docs: Fix broken link warnings (#1056)
- Add missing LICENSE symlink (#1086)
Internal
- workspace package metadata (#1036)
- fix: Build error due to merge conflict (#1068)
- build: Fix release scripts (#1055)
- chore: Add ci to check MSRV (#1057)
- ci: Add all tests pass job (#1069)
- ci: Add Dependabot (#957)
- ci: Ensure both README are the same and prost version is correct (#1078)
- ci: Set rust version of clippy job to a fixed version (#1090)
-
-
0.12.617 May 2024Nothing published for this version
-
0.12.516 May 2024 withdrawnNothing published for this version
-
0.12.405 Apr 2024Nothing published for this version
-
0.12.321 Nov 2023Nothing published for this version
-
0.12.216 Nov 2023Nothing published for this version
-
0.12.115 Sep 2023Nothing published for this version
-
0.12.001 Sep 2023Nothing published for this version
-
0.11.912 Apr 2023Nothing published for this version
-
0.11.824 Feb 2023Nothing published for this version
-
0.11.723 Feb 2023Nothing published for this version
-
0.11.610 Jan 2023Nothing published for this version
-
0.11.520 Dec 2022Nothing published for this version
-
0.11.329 Nov 2022Nothing published for this version
-
0.11.204 Nov 2022Nothing published for this version
-
0.11.029 Jul 2022Nothing published for this version
-
0.10.424 May 2022Nothing published for this version
-
0.10.305 May 2022Nothing published for this version
-
0.10.205 May 2022Nothing published for this version
-
0.10.113 Apr 2022Nothing published for this version
-
0.10.029 Mar 2022Nothing published for this version
-
0.9.013 Oct 2021Nothing published for this version
-
0.8.008 Jul 2021Nothing published for this version
-
0.7.027 Dec 2020Nothing published for this version
-
0.6.116 Jan 2020Nothing published for this version
-
0.6.013 Jan 2020 withdrawnNothing published for this version
-
0.5.010 Mar 2019Nothing published for this version
-
0.4.013 Jun 2018Nothing published for this version
-
0.3.204 Mar 2018Nothing published for this version
-
0.3.104 Mar 2018Nothing published for this version
-
0.3.029 Jan 2018Nothing published for this version
-
0.2.309 Nov 2017Nothing published for this version
-
0.2.229 Oct 2017Nothing published for this version
-
0.2.128 Sep 2017Nothing published for this version
-
0.2.010 Sep 2017Nothing published for this version
-
0.1.025 Jun 2017Nothing published for this version