Not long ago, protobuf introduced a new system to define the proto syntax used: editions:
Switching from syntax = proto3 to edition = 2023 comes with minimal breaking changes, but a big advantage: All fields have "explicit presence" by default, meaning no more optional just to allow the field to be unset when deserialized - it is the default (as it should be). If for some reason "implicit presence" is preferred (or required for backward compatibility), it can be configured (see the examples).
We should take the opportunity and port our protos to the new 2023 edition before release
Not long ago, protobuf introduced a new system to define the proto syntax used: editions:
Switching from
syntax = proto3toedition = 2023comes with minimal breaking changes, but a big advantage: All fields have "explicit presence" by default, meaning no moreoptionaljust to allow the field to be unset when deserialized - it is the default (as it should be). If for some reason "implicit presence" is preferred (or required for backward compatibility), it can be configured (see the examples).We should take the opportunity and port our protos to the new 2023 edition before release