PackageTrack
Sign in Get early access

prost-reflect-derive

A derive macro for prost-reflect to generate ReflectMessage implementations

0.16.1 14M downloads/mo #2542 most downloaded on crates.io andrewhickman/prost-reflect

What this package is like to depend on

Last release 1 months ago

09 Jul 2026

Release timing varies

gaps range from 8 days to 13 months

Nearly every release is documented

notes for 20 of 20 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

20 releases · first in 2021

1 release in the last 12 months

see the full history below

Release timeline

20 releases · Dec 2021 to Jul 2026
2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 20
  1. 0.16.1 09 Jul 2026
    Release notes

    Added

    • Add OneofDescriptor::is_synthetic (#175)
    • Add default_value method to FieldDescriptor, ExtensionDescriptor and Value for better visibility (#176)
    Open source →
  2. 0.16.0 13 Jun 2025
    Release notes

    Changed

    • Update prost to 0.14.0 (#167)
    • Fixed documentation for prost-reflect-build (#169)
    Open source →
  3. 0.15.1 19 Apr 2025
    Release notes

    Fixed

    • The JSON deserializer now accepts messages with oneofs where multiple fields are set, but only one is non-null, to better conform to the specification. This does not apply to google.protobuf.Value or google.protobuf.NullValue.
    • If the deny_unknown_fields field is set to false when deserializing from JSON, unknown enum fields will now be ignored, in addition to unknown fields. This matches the behaviour of this flag in other implementations.
    Open source →
  4. 0.15.0 10 Apr 2025
    Release notes

    Changed

    • The minimum supported rust version is now 1.74.0.

    Fixed

    • Fixed an unused type parameter on DescriptorPool::add_file_descriptor_protos. ([#150])
    Open source →
  5. 0.14.0 08 Jul 2024
    Release notes

    Changed

    Open source →
  6. 0.13.0 07 Feb 2024
    Release notes

    Changed

    • The minimum supported rust version is now 1.70.0.
    • Updated the miette dependency to version 7.0.0.
    Open source →
  7. 0.12.0 01 Sep 2023
    Release notes

    Changed

    • The minimum supported rust version is now 1.64.0.
    • Updated to prost 0.12.0
    • When adding files to a DescriptorPool, the library now validates that all referenced types are contained within the dependency files (including files imported using import public). Fixes [#57].
    Open source →
  8. 0.11.0 27 Mar 2023
    Release notes

    Added

    Changed

    • Duplicate files are now always ignored when adding to a DescriptorPool (previously, the code would skip files with identical contents, but now it skips any file with the same name).
    • prost-reflect-derive Update syn requirement from 1.0.84 to 2.0.3
    • prost-reflect-build Breaking Renamed Builder::file_descriptor_expr to Builder::descriptor_pool.
    • prost-reflect-build Breaking Removed the default behaviour of looking for the file descriptor under crate::DESCRIPTOR_POOL. One of descriptor_pool or file_descriptor_pool_bytes must be set explicitly.
    Open source →
  9. 0.10.0 04 Jan 2023
    Release notes

    Added

    • Added the path() method to all descriptor types, which returns a path that can be used to get source code info by comparing against Location::path.
    • Added the options() method to all descriptor types, which returns a message containing the options defined for the descriptor, including custom options.
    • The uninterpreted_options field of options is now used to populate options if it is present.
      • Note that if the text-format feature flag is not enabled, then options set through the aggregate_value field will be ignored.
    • Added several new validation checks when constructing a DescriptorPool instance.
    • Added new file(), line() and column() methods to get more context information about errors.
    • When the miette feature is enabled, DescriptorError now implements Diagnostic. When source code is provided through DescriptorError::with_source_code, and span information is provided in FileDescriptorProto::source_code_info, then the error will have labels annotating relevant portions of the source.

    Changed

    • The minimum supported rust version is now 1.60.0.
    • Breaking: The FileDescriptor::dependencies now returns all imported files, instead of just those imported with import public. The new public_dependencies method preserves the old behaviour ([#19]).
    • Breaking: The reflect-well-known-types feature flag has been removed, and the functionality is now always available.
    • Updated the base64 dependency to version 0.20.0.
    Open source →
  10. 0.9.0 30 Jul 2022
    Release notes

    Added

    • Added MessageDescriptor::get_extension_by_full_name().

    Changed

    • Updated to prost 0.11.0
    • When the serde feature is enabled, the functions in prost-types for parsing and formatting time types are now used. This removes the time dependency.
    • The minimum supported rust version is now 1.56.0.
    Open source →
  11. 0.8.0 09 May 2022
    Release notes

    Added

    • DescriptorPool (formerly FileDescriptor) now supports adding individual FileDescriptorProto instances (#6).

    Changed

    • Breaking: FileDescriptor has been renamed to DescriptorPool. (The name FileDescriptor may be used in a future release to provide an API for inspecting individual source files)
      • FileDescriptor::new has been renamed to DescriptorPool::from_file_descriptor_set.
      • FileDescriptor::file_descriptor_set has been replaced by DescriptorPool::file_descriptor_protos to allow for it containing multiple sets of descriptors.
      • The parent_file method on all descriptor types has been renamed to parent_pool.
      • The file_descriptor parameter of the ReflectMessage derive macro has been renamed to descriptor_pool.
      • The default value of the descriptor pool expression for prost-reflect-build is changed from crate::FILE_DESCRIPTOR to crate::DESCRIPTOR_POOL.
    Open source →
  12. 0.7.0 03 Apr 2022
    Release notes

    Changed

    • Updated to version 0.10.0 of prost.
    Open source →
  13. 0.6.1 27 Feb 2022
    Release notes

    Added

    • The public dependencies prost, prost-types and bytes are now re-exported from the crate root.
    Open source →
  14. 0.6.0 20 Feb 2022
    Release notes

    Added

    • Added implementations of [ReflectMessage] for the google well-known types in prost-types, behind a feature flag reflect-well-known-types.

    Changed

    • The minimum supported rust version is now 1.54.0.
    Open source →
  15. 0.5.0 05 Jan 2022
    Release notes

    Added

    • Extension fields are now decoded from their byte representation
    • Added APIs to get extensions for a given message.

    Changed

    • DynamicMessage::get_extension no longer returns an option.
    Open source →
  16. 0.4.0 04 Jan 2022
    Release notes

    Added

    • New helper method DynamicMessage::decode.
    • New APIs to get reserved names and fields for messages and enums
    • New descriptor APIs to inspect extension fields
    • New dynamic message APIs to get and set extension fields

    Changed

    • Renamed SerializeOptions::emit_unpopulated_fields to SerializeOptions::skip_default_fields (note the meaning is inverted as well!).
    • DynamicMessage::{has_field,get_field,set_field,clear_field} now take a field descriptor instead of a number. Use the new _by_number variants for the old behavior.

    Fixed

    • The library now passes the protobuf conformance tests. This uncovered a number of edge cases:

      • Fixed unpacked fields not accepting packed bytes
      • Unknown fields are now preserved and roundtripped.
      • Fixed default value for enums with negative values
      • When receiving multiple fields of a oneof in the byte representation, only the last is set.
      • Trailing zeros (e.g. 10.00) are now accepted when parsing integers from the JSON representation.
      • Fixed handling of null in JSON deserialization.
      • Deserialization of google.protobuf.NullValue now accepts the "NULL_VALUE" string.
      • Deserialization of floats from JSON now validates the value is in range.
      • Nonzero trailing bits are allowed when deserializing JSON bytes from base64.
      • Serialization of google.protobuf.FieldMask fails if the path cannot be roundtripped through camelCase.
      • google.protobuf.Duration uses a different number of trailing zeroes depending on the precision of the input.
      • JSON serialization of google.protobuf.Timestamp and google.protobuf.Duration fails if it is outside the allowed range.
      • Duplicate oneof fields is now an error during JSON deserialization
      • Extensions are roundtripped though JSON format
    Open source →
  17. 0.3.3 30 Dec 2021
    Release notes

    Added

    • Added support for JSON mapping of google.protobuf.Any.
    Open source →
  18. 0.3.2 29 Dec 2021
    Release notes

    Added

    • Builder methods on SerializeOptions and DeserializeOptions are now const.

    Fixed

    • Fixed a case where serialization could produce invalid JSON.
    Open source →
  19. 0.3.1 29 Dec 2021
    Release notes

    Fixed

    • Fixed docs for ReflectMessage macro.
    Open source →
  20. 0.3.0 29 Dec 2021
    Release notes

    Added

    • Added parent_message() method to MessageDescriptor and EnumDescriptor to support inspecting the structure of nested types.
    • Added package_name() method to MessageDescriptor, EnumDescriptor and ServiceDescriptor to determine which package they are defined in.
    • Added ReflectMessage trait for types which can identify themselves with a MessageDescriptor.
    • Added a derive macro which can be used as part of prost_build to generate ReflectMessage implementations.

    Changed

    • Renamed merge_from_message to transcode_from and to_message to transcode_to.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive