Skip to content

Commit 71fe483

Browse files
Protocol Buffer TeamLogofile
authored andcommitted
This documentation change includes the following:
* Clarification of recommended action for `features.default_symbol_visibility` and enhanced the sample code for Edition 2023 -> 2024 changes in `editions/features.md` * Formatting fix in `editions/overview.md`, `news/v32.md`, and `news/2025-06-27.md` * Updated the C++ tutorial to reference Editions * Clarified language in `news/2025-06-27.md` * Added Edition 2024 information to `programming-guides/editions.md` * Updated formatting in `programming-guides/serialization-not-canonical.md` to make it less weird * Added information about `enforce_naming_style` to `programming-guides/style.md` * Added the `reference/protobuf/edition-2024-spec.md` topic * Updated `reference/rust/rust-generated.md` to include information about relevant traits and to highlight associated functions PiperOrigin-RevId: 803449001 Change-Id: I61a9a5cc7fe5ead3053ab395847ea53143b296c2
1 parent b68f344 commit 71fe483

File tree

10 files changed

+693
-191
lines changed

10 files changed

+693
-191
lines changed

content/editions/features.md

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ and `export` keywords to set per-field behavior. Read more about this at
100100
to local.
101101
* `LOCAL_ALL`: All symbols default to local.
102102
* `STRICT`: All symbols local by default. Nested types cannot be exported,
103-
except for a special-case caveat for message `{ enum {} reserved 1 to max;
104-
}`. This is the recommended setting for new protos.
103+
except for a special-case caveat for `message { enum {} reserved 0 to max;
104+
}`. This will become the default in a future edition.
105105

106106
**Applicable to the following scope:** Enum, Message
107107

@@ -172,7 +172,7 @@ protos are round-trippable by default with a feature value to opt-out to use
172172

173173
**Applicable to the following scope:** File
174174

175-
**Added in:** 2024
175+
**Added in:** Edition 2024
176176

177177
**Default behavior per syntax/edition:**
178178

@@ -231,7 +231,7 @@ and after of a proto3 file.
231231

232232
**Applicable to the following scopes:** File, Enum
233233

234-
**Added in:** 2023
234+
**Added in:** Edition 2023
235235

236236
**Default behavior per syntax/edition:**
237237

@@ -292,7 +292,7 @@ whether a protobuf field has a value.
292292

293293
**Applicable to the following scopes:** File, Field
294294

295-
**Added in:** 2023
295+
**Added in:** Edition 2023
296296

297297
**Default behavior per syntax/edition:**
298298

@@ -385,7 +385,7 @@ and after of a proto3 file. Editions behavior matches the behavior in proto3.
385385

386386
**Applicable to the following scopes:** File, Message, Enum
387387

388-
**Added in:** 2023
388+
**Added in:** Edition 2023
389389

390390
**Default behavior per syntax/edition:**
391391

@@ -448,7 +448,7 @@ the following conditions are met:
448448

449449
**Applicable to the following scopes:** File, Field
450450

451-
**Added in:** 2023
451+
**Added in:** Edition 2023
452452

453453
**Default behavior per syntax/edition:**
454454

@@ -504,7 +504,7 @@ for `repeated` fields has been migrated to in Editions.
504504

505505
**Applicable to the following scopes:** File, Field
506506

507-
**Added in:** 2023
507+
**Added in:** Edition 2023
508508

509509
**Default behavior per syntax/edition:**
510510

@@ -583,7 +583,7 @@ and after of a proto3 file.
583583

584584
**Applicable to the following scopes:** File, Field
585585

586-
**Added in:** 2023
586+
**Added in:** Edition 2023
587587

588588
**Default behavior per syntax/edition:**
589589

@@ -650,7 +650,7 @@ in the migration guide for more on this topic.
650650
651651
**Applicable to the following scopes:** Enum, File
652652
653-
**Added in:** 2024
653+
**Added in:** Edition 2024
654654
655655
**Default behavior per syntax/edition:**
656656
@@ -680,7 +680,7 @@ example, switch statements are not supported.
680680
681681
**Applicable to the following scopes:** Enum
682682
683-
**Added in:** 2024
683+
**Added in:** Edition 2024
684684
685685
**Default behavior per syntax/edition:**
686686
@@ -713,7 +713,7 @@ before and after of a proto3 file.
713713
714714
**Applicable to the following scopes:** File, Field
715715
716-
**Added in:** 2023
716+
**Added in:** Edition 2023
717717
718718
**Default behavior per syntax/edition:**
719719
@@ -762,7 +762,7 @@ message Msg {
762762
**Languages:** Java
763763

764764
This feature controls whether the Java generator will nest the generated class
765-
in the Java generated file class. Setting this option to `Yes` is the equivalent
765+
in the Java generated file class. Setting this option to `NO` is the equivalent
766766
of setting `java_multiple_files = true` in proto2/proto3/edition 2023.
767767

768768
The default outer classname is also updated to always be the camel-cased .proto
@@ -779,7 +779,7 @@ becomes `BarBazProto`). You can still override this using the
779779

780780
**Applicable to the following scopes:** Message, Enum, Service
781781

782-
**Added in:** 2024
782+
**Added in:** Edition 2024
783783

784784
**Default behavior per syntax/edition:**
785785

@@ -812,7 +812,7 @@ removed.
812812

813813
**Applicable to the following scopes:** File, Field
814814

815-
**Added in:** 2023
815+
**Added in:** Edition 2023
816816

817817
**Default behavior per syntax/edition:**
818818

@@ -893,7 +893,7 @@ before and after of a proto3 file.
893893

894894
**Applicable to the following scopes:** Field, File
895895

896-
**Added in:** 2023
896+
**Added in:** Edition 2023
897897

898898
**Default behavior per syntax/edition:**
899899

@@ -974,7 +974,7 @@ generator strips the repetitive prefix or not.
974974

975975
**Applicable to the following scopes:** Enum, File
976976

977-
**Added in:** 2024
977+
**Added in:** Edition 2024
978978

979979
**Default behavior per syntax/edition:**
980980

@@ -991,7 +991,7 @@ files:
991991
```proto
992992
edition = "2024";
993993
994-
import "third_party/golang/protobuf/v2/src/google/protobuf/go_features.proto";
994+
import "google/protobuf/go_features.proto";
995995
996996
option features.(pb.go).strip_enum_prefix = STRIP_ENUM_PREFIX_STRIP;
997997
@@ -1074,16 +1074,23 @@ The following shows the settings to replicate Edition 2023 behavior with Edition
10741074
2024.
10751075

10761076
```proto
1077+
// foo/bar_baz.proto
10771078
edition = "2024";
10781079
10791080
import option "third_party/protobuf/cpp_features.proto";
10801081
import option "third_party/java/protobuf/java_features.proto";
10811082
1083+
// If previously relying on edition 2023 default java_outer_classname.
1084+
option java_outer_classname = "BarBaz" // or BarBazOuterClass
1085+
10821086
option features.(pb.cpp).string_type = STRING;
10831087
option features.enforce_naming_style = STYLE_LEGACY;
10841088
option features.default_symbol_visibility = EXPORT_ALL;
10851089
option features.(pb.cpp).enum_name_uses_string_view = false;
1086-
option features.(pb.java).nest_in_file_class = LEGACY;
1090+
1091+
message MyMessage {
1092+
option features.(pb.java).nest_in_file_class = YES;
1093+
}
10871094
```
10881095

10891096
### Caveats and Exceptions {#caveats}

content/editions/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ Edition 2024 added support for option imports using the syntax `import option`.
365365

366366
Option imports must come after any other `import` statements.
367367

368-
Unlike normal `import` statements, option imports import only custom options
368+
Unlike normal `import` statements, `import option` only imports custom options
369369
defined in a `.proto` file, without importing other symbols.
370370

371371
This means that messages and enums are excluded from the option import. In the

0 commit comments

Comments
 (0)