... 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
generatefeature 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
typeused 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_strfor strings (#141) - Support
optionalfields in proto3 (#143) - Optimize varint encoding (#144)
- Pass through UTF-8 decode errors when deserializing strings
- Avoid unnecessary
returnstatements in some generated code. (#136) - Avoid extra logic for oneofs with only 1 possible value. (#133)
- Simplify the zerocopy implementation. (#127)
PbBufferhas been reworked to untie it fromPbBufferReader.copy_from_readerreplacesfrom_readerand allows aPbBufferto be constructed, by copying, from anyBuf. Implementations can still opt out by returningErr.copy_to_writerreplacesinto_reader. Callers that were usinginto_readerto callMessage::deserializeshould instead construct their desiredPbBufferReaderdirectly (e.g.Cursor<Bytes>).
PbBufferReader::as_bufferis renamed toread_buffer, and provided implementations fall back to copyingLazyfields by default (instead of returning an error).
- Implement basic support for the field reflection API. (#121)
MessageDescriptorhas been reworked to be astructrather than atrait, and is returned fromMessage::descriptorrather than implemented on aMessage.MessageDescriptorhas been augmented to return information about the fields and oneofs in theMessage.
- A
Reflectiontrait has been added to provide more dynamic access to proto fields.- This is automatically generated by
pb-jelly-genfor all generated protos, but any manually implementedMessagethat is used in a generatedMessagewill also need to manually implementReflection. - Example usage can be seen in
pb-test/src/pbtest.rsinall_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.pyin 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
bytesto1.0 - Bump
byteorderto1.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-jellythat the codegen script uses
- Use the
licensefield instead of thelicense-filefield in the Cargo.toml ofpb-jellyandpb-jelly-gen.- Note: The License is still the same, the update is purely for better metadata from crates.io
- Warn on
rust_2018_idiomscloses #45 - A few changes related solely to re-integrating
pb-jellyinto the Dropbox codebase.