Releases: tokio-rs/prost
v0.6.0
PROST! is a Protocol Buffers implementation for the Rust Language. prost
generates simple, idiomatic Rust code from proto2
and proto3
files.
prost
0.6.0 includes breaking changes:
- The minimum-supported Rust version (MSRV) is now 1.39.0.
- The
bytes
public dependency version is now0.5
. - The prost-types
Timestamp
andDuration
types now implTryFrom
for their
std::time
equivalents. The old inherenttry_from
methods have been
removed. - Deeply nested messages now fail decoding with an error, instead of potentially
resulting in a stack overflow. The limit is set to a nesting depth of 100, and
the limit can be disabled using a newno-recursion-limit
Cargo feature.
As well as many new (non-breaking) features and improvements:
- @hanya added support for protobuf Group types.
- @danburkert improved the benchmark suite, including adding support for the
full set of upstream message encoding and decoding benchmarks. - @nrc implemented a series of micro-optimizations which result in faster
message encoding and decoding. - @dunmatt improved the method docs on generated types.
- @lukaslueg removed the dependency on
byteorder
. - @parasyte added the
ServiceGenerator::finalize_package
, which is useful for
advanced service generators. - @joelgallant improved the error message that occurs when attempting to compile
.proto files without a package specifier. - @LucioFranco removed the direct dependency of generated types on the
bytes
crate, which means applications which useprost
code generation are no
longer required to declare abytes
dependency. - @ErichDonGubler and @hobofan bumped the
syn
,quote
, andproc-macro2
to stable
versions. - @Timmmm improved
prost-build
so that it no longer writes .rs files when they
are unchanged, which improves working with tools likecargo watch
in
codebases withprost
code generation. - @Hirevo replaced usage of
failure
withanyhow
. - @danburkert bumped the packaged
protoc
version to 3.11.2.
Many thanks to the generous contributors who have helped out since 0.5.0:
- Dan Burkert
- Erich Gubler
- FujiApple
- Hanya
- Jay Oster
- Joel Gallant
- koushiro
- Lucio Franco
- Luffbee
- lukaslueg
- M@ Dunlap
- Maximilian Goisser
- Mikhail Zabaluev
- Nick Cameron
- Nicolas Polomack
- Stephan Wolski
- Tim Hutt
v0.5.0
PROST! is a Protocol Buffers implementation for the Rust Language. prost
generates simple, idiomatic Rust code from proto2
and proto3
files.
prost
0.5.0 should be mostly source-compatible with version 0.4.0, with one exception: prost
0.4.0 escapes field and message names which are Rust keyword by appending a suffix underscore; prost
0.5.0 does not escape field or message names, instead using the new raw-identifier feature. In addition, the minimum rustc
version has been bumped to 1.32.0.
0.5.0 ships with new features and bug fixes:
- @adeschamps fixed a bug which caused enum fields with a default value whose prefix is stripped to be incorrectly generated.
- @danburkert added an option for overriding the code-generation output directory with a new
prost_build::Config::out_dir()
method. - @danburkert added a re-export of
prost-derive
types inprost
. As a result, it should no longer be necessary for applications to depend directly on theprost-derive
crate. - @ebkalderon, @trha, and @danburkert added support to the code generator for referencing
prost
generated types in external crates with a newprost_build::Config::extern_path()
method. - @jeffparsons made code generation more robust by always fully-qualifying standard library types.
- @nrc added support for generating edition-2018 compatible code.
Many thanks to the generous contributors who have helped out since 0.4.0:
- Anthony Deschamps
- Dan Burkert
- Eliza Weisman
- Eyal Kalderon
- Jeff Parsons
- Nick Cameron
- Sebastian Hahn
- Timothy Hobbs
- Trinh Hoang Anh
v0.4.0
PROST! is a Protocol Buffers implementation for the Rust Language. prost
generates simple, idiomatic Rust code from proto2
and proto3
files.
prost
0.4.0 contains new features, bug-fixes, and one breaking change since
0.3.0:
- @briansmith cleaned up the project dependencies and build scripts, resulting
in faster and more robust builds for allprost
users. - @kestred added tag inference on fields in types which derive
Message
.
Tag inference reduces the number annotations necessary when manually writing
message structs. - @warrenfalk added logic to strip the enum name from enum
variants which include the enum name as a prefix. This style is common with
Protobuf (since it's heavily tied to C++ name resolution), however it's
non-idiomatic in Rust. To restore the previous behavior a new Config option is
provided:retain_enum_prefix
. This is a breaking change. - @danburkert added helper methods for working with length delimiters
independently of message encoding and decoding. - And many more bug fixes.
Many thanks to the generous contributors who have helped out since 0.3.0:
- Brian Smith
- Dan Burkert
- Gergely Nagy
- Ivan Mironov
- Kevin Stenerson
- Warren Falk
- YetAnotherMinion
- hcpl
v0.3.0
PROST! is a Protocol Buffers implementation for the Rust Language. prost
generates simple, idiomatic Rust code from proto2
and proto3
files.
prost
0.3.0 contains new features, bug-fixes, and one breaking change since 0.2.0:
- @vorner added an important new feature to
prost-build
which allows custom attributes to be added to generated types. This allows applications to derive traits for generated types, such as SerDe support. - @vorner changed the
Debug
implementation for enumeration fields to be more helpful. - The
prost_build::ServiceGenerator
andprost_build::Config
APIs have been changed to take&mut self
instead of&self
in order to simplify writing stateful service generators.
Many thanks to the wonderful contributors who have pitched-in since 0.2.0:
- Dan Burkert
- Fabrice Desré
- Michal 'vorner' Vaner
- Oliver Gould
v0.2.0
PROST! is a Protocol Buffers implementation for the Rust Language. prost
generates simple, idiomatic Rust code from proto2
and proto3
files.
prost
0.2.0 includes many improvements over the previous version, including:
- The
prost-codegen
crate has been removed, and its functionality has been combined intoprost-build
. - A new crate,
prost-types
, containing Protobuf well-known types has been added. The code generator will automatically useprost-types
when well-known types are encountered during.proto
→.rs
code generation. - Field accessors for proto2 optional fields and enum fields have been made more ergonomic.
prost-build
has a new builder API (prost_build::Config
), which can be used to specify custom code generation options. Current options include:- Using
BTreeMap
instead ofHashMap
for map fields. - Custom code generation for protobuf
service
definitions.
- Using
- New prost-specific error types,
prost::EncodeError
andprost::DecodeError
for encoding and decoding results. - The
prost::Message
trait has been made more flexible, and more ergonomic. - varint encoding and decoding has been optimized, see the following commit messages for results:
- Default values are now preserved during code generation (bugfix).
- New
Message::clear
method.