最初のエディションである2023
を見ると、割とproto2とproto3で食い違った挙動を、どっちでも好きな方に設定できるようにしたみたいなのが目立つ。
Note that the required and optional labels no longer exist in Editions, as the corresponding behavior is set explicitly with the field_presence feature.https://protobuf.dev/editions/features/#field_presence
なので基本的には、設定次第でprot3と同じように動作させる事も出来るが
optional
ラベルが無くなってしまった模様。振舞いとしては、何もつけなくてもゼロ値と値無しを見分けるメソッドがデフォルトで生成されて、全フィールドがoptional付いてるような挙動になる。
とはいえ、nullチェック的なメソッドが生えるだけで、値無しフィールドにはゼロ値が入ってるから、チェックしないとnull pointer的な事になったりはしないみたい。
挙動は問題なくても、optionalと書いてあるからそういうフィールドだと分かる利点があったと思うので、無くさないで欲しかったな。
https://protobuf.dev/overview/
ただまぁ、protobufの概要を読んでも、.protoファイルがAPIのドキュメントになるとかそういう利点があるとかは書いてないから、そういう事は目的にしてないのかもしれない。