Releases: tokio-rs/prost
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.