... everything has been released!
- Add read-only support for proto2 extension fields (#163, #170)
- Remove Python dependency by rewriting pb-jelly-gen in Rust (#164)
- Make pb-jelly-gen Rust API optional (#166)
- This is a breaking change: if you were using pb-jelly-gen as a library, turn on the
generate
feature flag
- This is a breaking change: if you were using pb-jelly-gen as a library, turn on the
- Remove serde impls for Fixed/Signed types (#168)
- Various optimizations around the generated code (#173, #175)
- Replace ctype=CORD with rust.blob extension field (#160)
- Improve handling of recursive types (#157)
- In particular, recursive types now implement
Eq
/Hash
/etc. if possible.
- In particular, recursive types now implement
- Reduce the amount of generated code (#158)
- Implement box_it for oneof fields (#150)
- Use r# syntax for keywords instead of appending _ (#153)
- This is a breaking change. Fields with names like
type
used to be generated astype_
. Now, you should refer to them using a raw identifier:r#type
.
- This is a breaking change. Fields with names like
- Add
rustdoc::
prefix to#[allow(broken_intra_doc_links)]
(#148)
- Add a
(rust.sso)
option to opt into usingcompact_str
for strings (#141) - Support
optional
fields in proto3 (#143) - Optimize varint encoding (#144)
- Pass through UTF-8 decode errors when deserializing strings
- Avoid unnecessary
return
statements in some generated code. (#136) - Avoid extra logic for oneofs with only 1 possible value. (#133)
- Simplify the zerocopy implementation. (#127)
PbBuffer
has been reworked to untie it fromPbBufferReader
.copy_from_reader
replacesfrom_reader
and allows aPbBuffer
to be constructed, by copying, from anyBuf
. Implementations can still opt out by returningErr
.copy_to_writer
replacesinto_reader
. Callers that were usinginto_reader
to callMessage::deserialize
should instead construct their desiredPbBufferReader
directly (e.g.Cursor<Bytes>
).
PbBufferReader::as_buffer
is renamed toread_buffer
, and provided implementations fall back to copyingLazy
fields by default (instead of returning an error).
- Implement basic support for the field reflection API. (#121)
MessageDescriptor
has been reworked to be astruct
rather than atrait
, and is returned fromMessage::descriptor
rather than implemented on aMessage
.MessageDescriptor
has been augmented to return information about the fields and oneofs in theMessage
.
- A
Reflection
trait has been added to provide more dynamic access to proto fields.- This is automatically generated by
pb-jelly-gen
for all generated protos, but any manually implementedMessage
that is used in a generatedMessage
will also need to manually implementReflection
. - Example usage can be seen in
pb-test/src/pbtest.rs
inall_fields_reflection3
.
- This is automatically generated by
- Simplify Option -> &str conversion in pb-jelly-gen (clippy warning)
- Move
(gogoproto.nullable)
option to(rust.nullable_field)
, removing the dependency on gogoproto - Support running with any version of protoc (by dynamically generating
extensions_pb2.py
in a venv) - Use github CI for tests, rustfmt, black, mypy --strict
- Support windows for codegen
- Rename master branch to main
- Use a setup.cfg to install protoc-gen-rust to avoid need for --plugin flag. Simplifies manual usage process, especially on windows (no need for codegen.bat)
- Remove need for requirements.txt - by using setup.cfg
install_requires
- Add
(rust.closed_enum)
option to only generate closed enums
- Bump
bytes
to1.0
- Bump
byteorder
to1.4
- Add Windows support to
pb-jelly-gen
- Add Windows support to our CI
- Allows proto files at the root of proto path
- Fixed a bug around non-optional boxed messages
- Drop python2 support (remove six and inline type annotations)
- Only generate crate level attributes in lib.rs (vs every module)
- Better error message if python-protobuf version is too low for codegen plugin
- Bump protobuf in requirements to 3.13.0
- Requires upgrading to protobuf 3.13.0
- Fixed issue where sometimes in codegen field type was incorrect when using
err_if_default_or_unknown
- Forgot to bump the version of
pb-jelly
that the codegen script uses
- Use the
license
field instead of thelicense-file
field in the Cargo.toml ofpb-jelly
andpb-jelly-gen
.- Note: The License is still the same, the update is purely for better metadata from crates.io
- Warn on
rust_2018_idioms
closes #45 - A few changes related solely to re-integrating
pb-jelly
into the Dropbox codebase.