feat: add gRPC support with SafeMetadata API (kyo-grpc modules)#1469
Closed
EnzoGaillardSystems wants to merge 2 commits intogetkyo:mainfrom
Closed
feat: add gRPC support with SafeMetadata API (kyo-grpc modules)#1469EnzoGaillardSystems wants to merge 2 commits intogetkyo:mainfrom
EnzoGaillardSystems wants to merge 2 commits intogetkyo:mainfrom
Conversation
added 2 commits
February 21, 2026 21:31
- Added kyo-grpc-core module with SafeMetadata API and streaming support - Added kyo-grpc-code-gen protoc plugin for generating Kyo service stubs - Added kyo-grpc-e2e integration tests - Fixed Abort.merge usage (replaced with Abort.run + fold) - Fixed metadata handling to use SafeMetadata throughout - Fixed test compilation errors (157 core tests passing) - Updated bench module with grpc-netty-shaded dependency - Fixed protobuf code generation path for e2e module Implements issue getkyo#390 - Support for protobuf and gRPC Core functionality complete with unit tests passing. E2E integration tests have known issues requiring further investigation.
Implements native gRPC support for Kyo via three new modules: - kyo-grpc-core: Client, Server, SafeMetadata (immutable metadata wrapper), streaming handlers for all 4 gRPC patterns (unary, server-streaming, client-streaming, bidirectional) - kyo-grpc-code-gen: ScalaPB protoc plugin generating Kyo-native service stubs - kyo-grpc-e2e: Integration tests with protobuf definitions Key design decisions: - SafeMetadata wraps metadata as immutable Map[String, Seq[String]], converting to/from io.grpc.Metadata only at IO boundaries - Full integration with Kyo effects (Async, Abort, Resource, Channel) - 157 unit tests passing Closes getkyo#390
Author
|
Closing this PR, learned that the bounty program was paused. Thanks for the heads up. Great project, happy to contribute if the program reopens. |
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.
Summary
Adds native gRPC support for Kyo, implementing the feature requested in #390.
New Modules
.protofiles.Key Design: SafeMetadata
The main blocker identified in prior PRs (#1334, #1450) was metadata ergonomics — wrapping Java's mutable
io.grpc.Metadatasafely within Kyo's effect system.This PR introduces
SafeMetadata: an immutableMap[String, Seq[String]]wrapper with typed accessors via extension methods. Conversion to/fromio.grpc.Metadatahappens only at gRPC IO boundaries, keeping the rest of the code pure and thread-safe.Tests
Local Build Results
Closes #390