Skip to content

Latest commit

 

History

History
595 lines (393 loc) · 23.9 KB

CHANGELOG-before-3.md

File metadata and controls

595 lines (393 loc) · 23.9 KB

Changelog

Changelog after version 3.0.0 lives in CHANGELOG.md.

[3.0.0] - 2022-05-01

  • New stable version released.

[3.0.0-alpha.14] - 2022-05-01

  • JSON support is moved into a separate crate protobuf-json-mapping
  • Generated code for well known types is more similar to regular protobuf now (well known type modules are now placed as is in well_known_types module instead of being flattened).
  • file_descriptor_proto() function is private now in generated code. Descriptor can be obtained by calling file_descriptor().proto().
  • file_descriptor() now returns &'static FileDescriptor
  • Hide UnknownValues from public API (keep UnknownFields)

[3.0.0-alpha.13] - 2022-05-01

  • More efficient reflective operations
  • Fewer internals exposed from public API (e.g. ProtobufType is no longer public)

[3.0.0-alpha.12] - 2022-04-30

[3.0.0-alpha.11] - 2022-04-29

  • all fields are public now in generated messages
  • protobuf-support crate added. This crate contains utilities shared by other protobuf crates. This crate has no public API.

[3.0.0-alpha.10] - 2022-04-11

  • remove expose_oneof codegen option (it is on by default for a long time)
  • remove unused serde-related options from rustproto.proto
  • in generated code, enum variant names are converted to camel case
  • generate SpecialFields field in messages instead of a pair (unknown_fields, cached_size)
  • reflection operations like nested_messages now return iterator instead of Vec
  • replace fn Enum::values() with const Enum::VALUES
  • remove EnumFull::enum_descriptor(), does not provide much value over enum_descriptor_static
  • rename EnumFull::enum_descriptor_static -> enum_descriptor
  • fix EnumFull::descriptor for enums with allow_alias
  • rename MessageDescriptor::enums to nested_enums
  • rename MessageDescriptor::descriptor_static to descriptor
  • add EnumDescriptor::enclosing_message()
  • Message now requires PartialEq

[3.0.0-alpha.9] - 2022-04-04

  • Unimplement DerefMut for MessageField: DerefMut which modifies the object state is too dangerous. Deref is kept though. Deref returns an empty instance if field is not set.
  • Added Message::clear, removed trait Clear
  • Lazy (which is used in generated code) is now implemented with once_cell crate.
  • protobuf 3 experimental optional fields are implemented

[3.0.0-alpha.8] - 2022-02-21

  • Lite runtime generation is restored. When lite runtime requested, code is generated without reflection support.
  • lite option can be specified when using protoc-gen-rust plugin similarly to how C++ or Java do.

[3.0.0-alpha.7] - 2022-02-20

  • Getters are now generated without get_ prefix. get_ prefix also removed from public API functions.
  • Reflection API now supports ServiceDescriptor. Which can be used to generate code for gRPC for example.
  • Message size computation uses u64 now. It is explicit error now on attempt to serialize a message larger than 2GiB.
  • Binary message parsing now switches by tag, not by field name. It is faster.

[3.0.0-alpha.6] - 2022-02-08

  • Fixed invalid aliasing and uninitialized memory access
  • MessageField now implements Deref and DerefMut
  • Slightly more compact generated code
  • serde is no longer supported natively. See explanations in the issue.
  • Rename ProtobufError to Error and make it opaque type. Rename ProtobufResult to Result.
  • Rename ProtobufEnum to Enum and ProtobufEnumOrUnknown to EnumOrUnknown
  • gen_mod_rs option is true by default now: code generator now generates mod.rs with modules
  • carllerche options renamed to tokio (since bytes crate now lives in tokio org)
  • protobuf-parse API cleanup (API used to parse .proto files, not protocol buffers data files)
  • Remove protoc crate, most of it is incorprotated into protobuf-parse crate, and the rest is not very useful
  • Generated enums for oneof are marked #[non_exhaustive]

[3.0.0-alpha.5] - 2022-02-02

  • Dynamic messages work (but not tested enough)

[3.0.0-alpha.4] - 2022-02-02

  • Display for message now outputs text format, and Debug for message does standard rust #[derive(Debug)].
  • Smaller generated code (common code snippets extracted into the library runtime)
  • Improvements in dynamic messages

[3.0.0-alpha.3] - 2022-02-01

  • Remove protobuf-codegen-pure and protoc-rust crates. Now all codegen (pure or with protoc is done using protobuf-codegen crate).
  • LazyV2 (internal utility for rust-protobuf) now implements Drop.
  • Default .proto parser in protobuf-codegen is now pure-rust (not using protoc command)
  • Dynamic messages mostly work

[3.0.0-alpha.2] - 2021-11-01

[3.0.0-alpha.1] - 2021-10-24

Backward compatibility

Version 3.0 is backward incompatible with 2.0 version. Changes are listed here:

New features

[2.27] - Unreleased

[2.28.0] - 2022-09-26

[2.27.1] - 2022-02-05

  • Min rust version bumped back to 1.52.1

[2.27.0] - 2022-02-03

[2.26.1] - 2022-02-01

  • Documentation

[2.26.0] - 2020-01-31

[2.25.2] - 2021-10-24

[2.25.1] - 2021-08-21

[2.25.0] - 2021-08-08

[2.24.2] - 2021-08-08

[2.24.1] - 2021-06-11

[2.24.0] - 2021-06-11

  • Accidentally published version roughtly equivalent to 2.23.0

[2.23.0] - 2021-04-24

  • Update bundled protoc version to 3.15.8

[2.22.1] - 2021-03-18

[2.22.0] - 2021-02-06

  • Slightly better prefix stripping algorithm in pure rust codegen: "." is now considered to be a prefix for "foo/bar.proto". (Probably Rust stdlib should do that out of the box)
  • Update bundled version of protoc to version 3.14.0
  • protoc-bin-vendored now includes google/**.proto files, so import "google/protobuf/Timestamp.proto" should work with this crate without relying on external files

[2.21.0] - 2021-02-06

[2.20.0] - 2021-01-06

  • update bytes crate dependency version from 0.6 to 1.0

[2.19.0] - 2021-01-05

  • Add UnknownFields::remove
  • Fix several inconsistencies between protoc parser and pure rust parser
  • protobuf::parse_from* functions are deprecated, use protobuf::Message::parse_from* instead
  • impl IntoIterator for &mut RepeatedField<T> and for RepeatedField<T>
  • update bytes crate dependency version from 0.5 to 0.6

[2.18.2] - 2021-03-28

  • Backport rust::skip workaround from 2.22.1

[2.18.1] - 2020-11-22

[2.18.0] - 2020-10-04

  • gen_mod_rs codegen option can be used to generate .rs files friendlier to generating files in $OUT_DIR

[2.17.0] - 2020-08-12

  • protoc crate now depends on which crate for protoc binary lookup
  • pure rust codegen output adjusted to be closer to protoc-command based output
  • RepeatedField::retain is implemented

[2.16.2] - 2020-07-06

  • Fix compilation when feature with-bytes is enabled

[2.16.1] - 2020-07-06

  • Mute self-deprecation warning when compiling rust-protobuf

[2.16.0] - 2020-07-06

  • Generated repeated and message fields for proto2 are public now (for proto3 all fields are already public).
  • Generated code no longer contains unsafe
  • Minor changes in generated files

[2.15.1] - 2020-06-26

[2.15.0] - 2020-06-21

  • Min supported rust version if 1.44.1 now
  • Replace deprecated #![cfg_attr(rustfmt, rustfmt_skip)] with #![rustfmt::skip]

[2.14.0] - 2020-04-12

  • Rename protoc_rust::Args to protoc_rust::Codegen
  • Rename protobuf_codegen_pure::Args to protobuf_codegen_pure::Codegen
  • protoc-bin-vendored crate introduced

[2.13.0] - 2020-04-09

[2.12.0] - 2020-03-26

  • Generated code for reflection now references messages by Protobuf name, not by Rust name.

[2.11.0] - 2020-03-23

Backward compatibility

  • Rename ProtobufValueRef to ReflectValueRef. Old name is kept for a while.

Other changes

  • Generated code now uses associated constant Lazy::INIT for Lazy intialization instead of initializing fields directly.

[2.10.3] - 2020-03-23

  • Oneof names are escaped now in generated code

[2.10.2] - 2020-03-01

  • Added dyn to a list of rust keyword needed escaping

[2.10.1] - 2020-01-14

[2.10.0] - 2020-01-01

Backward compatibility

Other changes

[2.9] - Unreleased

Changes in 2.9 branch are not included in 2.10.

[2.9.0] - (2019-09-30) yanked

Backward compatibility

  • Minimum supported Rust version is 1.34.2 now
  • Generated code by protobuf compiler is now compatible only with exactly the same version of protobuf library. Note you can use pure rust protobuf compiler to avoid dependency on protoc binary.
  • UnknownFields::fields field is no longer public

Big changes

  • Text format and JSON printing and parsing is now implemented
  • Mutation reflection is implemented
  • All fields are public now except optional or repeated fields when syntax = "proto2", but message fields are public even when syntax = "proto2"

Other changes

  • Box<dyn Message> now implements Clone
  • Generated code is slightly cleaner now (does not use use statements)
  • Generated code no longer uses unsafe (protobuf library still does)
  • Add a couple functions to reflection

[2.8] - Unreleased

[2.8.2] - 2019-12-31

[2.8.1] - 2019-09-06

[2.8.0] - 2019-07-22

[2.7.0] - 2019-07-02

[2.6.2] - 2019-06-03

[2.6.1] - 2019-05-27

[2.6.0] - 2019-05-19

[2.5.0] - 2019-04-15

[2.4.2] - 2019-03-29

[2.3.1] - 2019-03-05

[2.3.0] - 2019-01-30

[2.2.5] - 2019-01-20

[2.2.4] - 2019-01-13

[2.2.2] - 2018-12-29

[2.2.1] - 2018-12-25

[2.2.0] - 2018-11-17

  • Implement From<Option<T>> for SingularPtrField<T>

[2.1.5] - 2019-01-13

[2.1.4] - 2018-11-01

  • Revert clippy annotations

[2.1.3] - 2018-10-31

[2.1.2] - 2018-10-28

[2.1.1] - 2018-10-09

[2.1.0] - 2018-10-06

[2.0.6] - 2019-01-13

[2.0.5] - 2018-09-21

[2.0.4] - 2018-07-19

  • Minimum bytes version is 0.4 now (since protobuf doesn't work with 0.3 anyway)

[2.0.3] - 2018-07-11

[2.0.2] - 2018-05-29

  • Make rust-protobuf compatible with rust 1.23.0

[2.0.1] - 2018-05-27

[2.0.0] - 2018-05-17

[1.7.5] - 2018-05-20

[1.7.4] - 2018-07-11

[1.7.3] - 2018-05-29

  • Make rust-protobuf compatible with rust 1.23.0

[1.7.2] - 2018-05-27

[1.7.1] - 2018-05-17

[1.6.0] - 2018-05-11

Republished as 2.0.0

New features

Backward compatibility issues

[1.5.1] - 2018-04-02

[1.5.0] - 2018-03-25

[1.4.5] - 2018-04-02

[1.4.4] - 2018-03-05

[1.4.3] - 2017-12-03

[1.4.2] - 2017-10-14

[1.4.1] - 2017-06-24

[1.4] - 2017-06-24

  • Start of changelog

[0.0.0] - 2013-07-28

  • First commit added to the repository