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

[ObjC] Add support for using the proto package to prefix symbols. #8760

Merged
merged 1 commit into from Jun 24, 2021

Conversation

thomasvl
Copy link
Contributor

This likely should have been the default from the start, as without it is way to
common to get symbol collisions between different proto files. It would be nice
to support a "migration" mode where both names are created to aid it moving code
to this model, but with ObjC @class decls being very common to avoid header
imports to control rebuilds/etc., it doesn't work as an @class usage will
error if one also uses @compatibility_alias. Falling back to #define the two
together also doesn't work as the header with the @class will cause methods to
get defined with one interface, but when methods taking those types are define
will likely #import the generate header and thus get the define and end up with
a different signature. So for now, there is no migration support and code has to
be updated in one shot with enable the new prefixing.

  • Add a generation option to enable this change in generation.
  • Add a second generation option to provide a list of proto package that are
    exceptions from using the proto package. This allows easier
    migration/updating of code one package at a time.

This likely should have been the default from the start, as without it is way to
common to get symbol collisions between different proto files. It would be nice
to support a "migration" mode where both names are created to aid it moving code
to this model, but with ObjC `@class` decls being very common to avoid header
imports to control rebuilds/etc., it doesn't work as an `@class` usage will
error if one also uses `@compatibility_alias`. Falling back to `#define` the two
together also doesn't work as the header with the `@class` will cause methods to
get defined with one interface, but when methods taking those types are define
will likely #import the generate header and thus get the define and end up with
a different signature. So for now, there is no migration support and code has to
be updated in one shot with enable the new prefixing.

- Add a generation option to enable this change in generation.
- Add a second generation option to provide a list of proto package that are
  exceptions from using the proto package. This allows easier
  migration/updating of code one package at a time.
@thomasvl thomasvl merged commit cf12bff into protocolbuffers:master Jun 24, 2021
@thomasvl thomasvl deleted the package_prefix branch June 24, 2021 20:10
veblush pushed a commit to grpc/grpc that referenced this pull request Jul 14, 2021
This adds support for protobuf ObjC support for using the proto package to
define the prefix for the file
(protocolbuffers/protobuf#8760).

Once protobuf cuts a release, it likely makes sense to support the same
generator options that the objc generator does, but for now the environment
variable support can used to enable this when building from recent sources.
lidizheng pushed a commit to lidizheng/grpc that referenced this pull request Sep 23, 2021
This adds support for protobuf ObjC support for using the proto package to
define the prefix for the file
(protocolbuffers/protobuf#8760).

Once protobuf cuts a release, it likely makes sense to support the same
generator options that the objc generator does, but for now the environment
variable support can used to enable this when building from recent sources.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants