-
Notifications
You must be signed in to change notification settings - Fork 15.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Backport editions plugin improvements #13316
Merged
mkruskal-google
merged 6 commits into
protocolbuffers:24.x
from
mkruskal-google:backports-24
Jul 15, 2023
Merged
Backport editions plugin improvements #13316
mkruskal-google
merged 6 commits into
protocolbuffers:24.x
from
mkruskal-google:backports-24
Jul 15, 2023
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
googleberg
approved these changes
Jul 13, 2023
7e478a6
to
7a2a676
Compare
fowles
approved these changes
Jul 14, 2023
This will be used for tracking the unresolved feature sets from the original proto file. Notable use-cases for this include: * Code generators that need to validate their own features * Runtimes that need to be able to accurately round-trip the original protos PiperOrigin-RevId: 547610367
PiperOrigin-RevId: 547625871
There are 4 different feature sets for every descriptor: * Runtime/resolved - Used to make runtime decisions * Source/resolved - Used to make codegen decisions * Runtime/raw - Used to reason about the original proto file during runtime * Source/raw - Used to validate features during codegen All of these will need to be shipped to code generators. While C++ generators can use the C++ runtime to reconstruct these, they won't end up in the FileDescriptorProtos we send to runtimes. Similarly, non-C++ generators wouldn't be able to get them without duplicating our feature resolution logic. This change adds a helper that allows us to bundle all of these into the protos we send to generators. PiperOrigin-RevId: 547849243
There are 4 different feature sets for every descriptor: * Runtime/resolved - Used to make runtime decisions * Source/resolved - Used to make codegen decisions * Runtime/unresolved - Used to reason about the original proto file during runtime * Source/unresolved - Used to validate features during codegen Plugins will receive all 4 of these. Unresolved features will show up in the `raw_features` fields nested inside `features`. The runtime features will be in the `proto_file` field of the request, while the source features will be in the unstripped `source_file_descriptors` field. PiperOrigin-RevId: 547925275
Editions are still flag-guarded by the `--experimental_editions` flag for now, but once that's removed in a later release generators will need to explicitly specify that their support. This will avoid cases where generators may happen to work for editions but produce incorrect code. PiperOrigin-RevId: 547959326
7a2a676
to
16fbb2b
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This collection of changes should provide all of the information plugin owners need to start implementing editions support