Support grpc 1.0 (grpc/grpc_server package split)#88
Merged
mjheilmann merged 1 commit intoJun 22, 2026
Conversation
grpc 1.0 split the client and server into separate packages: `grpc` is
now client-only and the server lives in the new `grpc_server` package
(both backed by `grpc_core`). Module names are unchanged.
- Depend on `grpc ~> 1.0` (the generated reflection stubs `use GRPC.Stub`)
and `grpc_server ~> 1.0` (`GRPC.Server`/`GRPC.Endpoint`).
- Drop `start_supervised({GRPC.Client.Supervisor, []})` from the test
support: grpc 1.0 starts the client supervisor automatically via its
application, so the module is no longer a valid child spec (it now
fails with "module does not exist").
- Add `gun` as a test-only dependency, since grpc 1.0 made the HTTP
client adapters optional and the suite connects real stubs.
All 206 tests pass against grpc 1.0 / grpc_server 1.0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mjheilmann
approved these changes
Jun 22, 2026
mjheilmann
left a comment
Collaborator
There was a problem hiding this comment.
This is great, thanks!
This file contains hidden or 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
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.
Fixes #87.
What
Makes
grpc_reflectioncompatible withgrpc1.0, which split the library into separategrpc(client),grpc_server(server), andgrpc_core(shared) packages. The current{:grpc, "~> 0.11.1"}pin blocks any project that bumpsgrpcto~> 1.0.Changes
mix.exs: depend ongrpc ~> 1.0(the generated reflection stubsuse GRPC.Stub) andgrpc_server ~> 1.0(GRPC.Server/GRPC.Endpoint). Addgunas a test-only dep, since the HTTP client adapters are now optional in grpc 1.0 and the suite connects real stubs.test/support/: dropstart_supervised({GRPC.Client.Supervisor, []}). grpc 1.0 starts the client supervisor automatically via its application (mod: {GRPC.Client.Application, []}), so the module is no longer a valid child spec — passing it now raises "module GRPC.Client.Supervisor was given as a child to a supervisor but it does not exist".CHANGELOG.md: note the change.No changes to shipped library logic were needed — module names are unchanged across the split.
Testing
against
grpc1.0.0 /grpc_server1.0.0 /grpc_core1.0.0.Note on version constraints
I used
grpc_server ~> 1.0andgun ~> 2.0to matchgrpc_server's own constraints. Happy to tighten/loosen to your preference, and to gategrpc_server/gundifferently if you'd rather keep the client-only footprint smaller.