Skip to content
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
merged 6 commits into from
Jul 15, 2023

Conversation

mkruskal-google
Copy link
Member

This collection of changes should provide all of the information plugin owners need to start implementing editions support

@mkruskal-google mkruskal-google added the back-port Cherrypick PRs to release branches label Jul 13, 2023
@mkruskal-google mkruskal-google requested review from a team as code owners July 13, 2023 23:44
@mkruskal-google mkruskal-google requested review from deannagarcia and removed request for a team July 13, 2023 23:44
@mkruskal-google mkruskal-google added the 🅰️ safe for tests Mark a commit as safe to run presubmits over label Jul 13, 2023
@github-actions github-actions bot removed the 🅰️ safe for tests Mark a commit as safe to run presubmits over label Jul 13, 2023
@mkruskal-google mkruskal-google added the 🅰️ safe for tests Mark a commit as safe to run presubmits over label Jul 14, 2023
@github-actions github-actions bot removed the 🅰️ safe for tests Mark a commit as safe to run presubmits over label Jul 14, 2023
@mkruskal-google mkruskal-google added the 🅰️ safe for tests Mark a commit as safe to run presubmits over label Jul 14, 2023
@github-actions github-actions bot removed the 🅰️ safe for tests Mark a commit as safe to run presubmits over label 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
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
@mkruskal-google mkruskal-google added the 🅰️ safe for tests Mark a commit as safe to run presubmits over label Jul 15, 2023
@github-actions github-actions bot removed the 🅰️ safe for tests Mark a commit as safe to run presubmits over label Jul 15, 2023
@mkruskal-google mkruskal-google merged commit bfc841d into protocolbuffers:24.x Jul 15, 2023
@mkruskal-google mkruskal-google deleted the backports-24 branch July 15, 2023 01:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
back-port Cherrypick PRs to release branches
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants