PackageTrack
Sign in Get early access

prost-reflect

A protobuf library extending prost with reflection support and dynamic messages.

0.16.5 75M downloads/mo #947 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 6 months

Nearly every release is documented

notes for 56 of 56 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

57 releases · first in 2021

4 releases in the last 12 months

see the full history below

Release timeline

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

Releases

latest 57
  1. 0.16.5 09 Jul 2026
    Release notes

    Fixed

    • Fixed a performance regression in encoding of DynamicMessage (#200)
    Open source →
    Release notes

    Fixed

    • Fixed a performance regression in encoding of DynamicMessage (#200)
    Open source →
  2. 0.16.4 24 May 2026
    Release notes

    Fixed

    • Fix proto3 default for is_packed when FieldOptions is present but packed is absent (#196)

    Other

    • Update logos to 0.16.0 #192
    Open source →
    Release notes

    Fixed

    • Fix proto3 default for is_packed when FieldOptions is present but packed is absent (#196)

    Other

    • Update logos to 0.16.0 #192
    Open source →
  3. 0.16.3 01 Dec 2025
    Release notes

    Other

    • Update prost to v0.14.2 and fix error handling (#188)
    Open source →
    Release notes

    Other

    • Update prost to v0.14.2 and fix error handling (#188)
    Open source →
  4. 0.16.2 19 Sep 2025
    Release notes

    Added

    Add FieldDescriptor::is_required (#181)

    Open source →
    Release notes

    Added

    Add FieldDescriptor::is_required (#181)

    Open source →
  5. 0.16.1 01 Aug 2025
    Release notes

    Added

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

    Added

    • Add OneofDescriptor::is_synthetic (#175)
    • Add default_value method to FieldDescriptor, ExtensionDescriptor and Value for better visibility (#176)
    Open source →
  6. 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 →
    Release notes

    Changed

    • Update prost to 0.14.0 (#167)
    • Fixed documentation for prost-reflect-build (#169)
    Open source →
  7. 0.15.3 20 May 2025
    Release notes

    Fixed

    • Revert accidental removal of docs.rs metadata
    Open source →
  8. 0.15.2 19 Apr 2025
    Release notes

    Changed

    • The descriptors for well-known types returned by DescriptorPool::global() have been updated to match the definitions in protobuf version 25.4.
    • The crate package now includes test files to allow consumers to run the tests.
    Open source →
  9. 0.15.1 13 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 →
  10. 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 →
  11. 0.14.7 01 Mar 2025
    Release notes

    Changed

    • All type name domains are now permitted when serializing google.protobuf.Any types in the JSON format. ([#148]).
    Open source →
  12. 0.14.6 06 Feb 2025
    Release notes

    Fixed

    • Fixed empty lists not being allowed in the text format. ([#143]).
    Open source →
  13. 0.14.5 21 Jan 2025
    Release notes

    Added

    • Added the print_message_fields_in_index_order option to the text format, which causes fields to be print in the order they are defined in the protofile. ([#140]).
    Open source →
  14. 0.14.4 13 Jan 2025
    Release notes

    Changed

    • The descriptors for well known types are now distributed as Rust code instead of a binary protobuf file, to make auditing of the package easier ([# 138]).
    Open source →
  15. 0.14.3 03 Dec 2024
    Release notes

    Added

    • Added the skip_default_fields option to the text format, which has the same behaviour as the equivalent option for the JSON format ([#131]).

    Fixed

    • The text format now correct parses the full range of boolean values allowed by the spec ([#135]).
    Open source →
  16. 0.14.2 08 Sep 2024
    Release notes

    Fixed

    • Fixed an issue with the name resolution changes in the previous release, causing some valid files to be rejected (protox#86)
    Open source →
  17. 0.14.1 02 Sep 2024
    Release notes

    Fixed

    • Fixed a case where resolution of names was less strict than protoc ([protox#82])
    Open source →
  18. 0.14.0 08 Jul 2024
    Release notes

    Changed

    Open source →
  19. 0.13.1 03 Apr 2024
    Release notes

    Fixed

    • Fixed resolution of field types when the type name is the same as the field name ([#99])
    Open source →
  20. 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 →
  21. 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 →
  22. 0.11.5 29 Aug 2023
    Release notes

    Added

    Open source →
  23. 0.11.4 28 Apr 2023
    Release notes

    Changed

    • Monomorphised some code in DescriptorPool::add_* methods to reduce binary size. Thanks to [@srijs] for [#40] and [#41].
    • Source code info is now omitted from the built-in descriptors for well-known types. This reduces the binary size by around 100KB.
    Open source →
  24. 0.11.3 11 Apr 2023
    Release notes

    Changed

    • Updated logos dependency to 0.13.0.
    Open source →
  25. 0.11.2 09 Apr 2023
    Release notes

    Changed

    • Adjusted the Debug implementation for DescriptorError to be more concise and readable.

    Fixed

    • Fixed parsing of group fields from text format. The field name must now match the type name of the group field.
    Open source →
  26. 0.11.1 05 Apr 2023
    Release notes

    Added

    Open source →
  27. 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 →
  28. 0.10.3 20 Mar 2023
    Release notes

    Fixed

    • Fixed type resolution for double fields. Thanks to [@jackkleeman] for [#29]
    Open source →
  29. 0.10.2 17 Feb 2023
    Release notes

    Changed

    • Updated the base64 dependency to version 0.21.0.
    • If the json_name property for a field is unset, it will now be populated with the camel-cased field name (#5).
    Open source →
  30. 0.10.1 07 Jan 2023
    Release notes

    Fixed

    • The path for repeated extension options now includes the array index (for consistency with the output of protoc).
    Open source →
  31. 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 →
  32. 0.10.0-alpha.1 01 Jan 2023 pre-release

    Nothing published for this version

  33. 0.9.2 14 Aug 2022
    Release notes

    Added

    Open source →
  34. 0.9.1 01 Aug 2022
    Release notes

    Fixed

    • Fixed docs build
    Open source →
  35. 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 →
  36. 0.8.1 29 May 2022
    Release notes

    Added

    • Added the FileDescriptor API for inspecting individual protobuf files.
    • Added methods to MessageDescriptor to get child messages, enums and extensions.
    Open source →
  37. 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 →
  38. 0.7.0 03 Apr 2022
    Release notes

    Changed

    • Updated to version 0.10.0 of prost.
    Open source →
  39. 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 →
  40. 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 →
  41. 0.5.7 14 Feb 2022
    Release notes

    Added

    • Added file_descriptor_proto methods to descriptor types to access raw details about the file the object is defined in.
    Open source →
  42. 0.5.6 03 Feb 2022
    Release notes

    Fixed

    • Fixed handling of enums with the allow_alias option (see [#9]).
    Open source →
  43. 0.5.5 01 Feb 2022
    Release notes

    Added

    • Added MessageDescriptor::descriptor_proto and friends to get the raw prost_types representation of protobuf definitions.
    Open source →
  44. 0.5.4 01 Feb 2022
    Release notes

    Changed

    • Replace chrono dependency with time for parsing and formatting RFC 3339 timestamps when the serde feature is enabled. This avoids security vulnerabilities RUSTSEC-2020-0071 and RUSTSEC-2020-0159 which are not yet patched in chrono.
    Open source →
  45. 0.5.3 18 Jan 2022
    Release notes

    Fixed

    • The Cardinality enum is now exported. Thanks to [@benesch] for [#4].
    Open source →
  46. 0.5.2 09 Jan 2022
    Release notes

    Changed

    • DynamicMessage now stores all fields (normal, extensions, and unknown) in the same storage, reducing its footprint from 48 bytes to 40.
    Open source →
  47. 0.5.1 05 Jan 2022
    Release notes

    Added

    • Added DynamicMessage::get_field_mut and friends for in-place modification of messages.
    Open source →
  48. 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 →
  49. 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 →
  50. 0.3.5 02 Jan 2022
    Release notes

    Fixed

    • Fixed deserialization of negative durations
    Open source →
  51. 0.3.4 01 Jan 2022
    Release notes

    Added

    • Added MessageDescriptor::map_entry_key_field and MessageDescriptor::map_entry_value_field to help with inspecting message types.
    • Added Value::is_valid_for_field to validate that value types are compatible with message fields.
    • DynamicMessage::set_value now asserts that the value type is compatible with the field type.

    Fixed

    • Fixed FieldDescriptor::is_packed returning true for non-repeated fields.
    Open source →
  52. 0.3.3 30 Dec 2021
    Release notes

    Added

    • Added support for JSON mapping of google.protobuf.Any.
    Open source →
  53. 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 →
  54. 0.3.1 29 Dec 2021
    Release notes

    Fixed

    • Fixed docs for ReflectMessage macro.
    Open source →
  55. 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 →
  56. 0.2.0 28 Dec 2021
    Release notes

    Added

    • Added support for serializing and deserializing with serde. By default the serialization format is the canonical JSON encoding.
    Open source →
  57. 0.1.0 26 Dec 2021
    Release notes

    Added

    • Initial release, including support for inspecting message types at runtime.
    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