[
https://issues.apache.org/jira/browse/GSOC-318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chaokun Yang updated GSOC-318:
------------------------------
Description:
*Description:*
Apache Fory can already generate high-performance Java and Python model code
from IDL, but end-to-end Java/Python gRPC integration is not available as a
unified workflow.
This project will implement Java and Python gRPC integration in the Fory
compiler by generating language-specific service and transport artifacts.
Java output artifacts: *Service.java and *Grpc.java.
Python output artifacts: *_service.py and *_grpc.py.
The implementation must use Fory serialization only, without protobuf runtime
payload types. It must follow compiler conventions and keep runtime overhead
low.
*Expected outcomes:*
1. Generate Java and Python gRPC service and binding code from service
definitions.
2. Support unary and streaming RPC APIs based on Fory service IR.
3. Generate Fory-based request and response marshalling for both languages.
4. Implement zero-copy decode paths for inbound payloads in both Java and
Python, with a safe fallback path when zero-copy cannot be applied.
5. Add golden code generation tests for output file names and key method
signatures in both Java and Python generators.
6. Provide runnable Java and Python gRPC examples using generated stubs and
Fory codec.
7. Update compiler documentation for Java and Python gRPC code generation usage
and constraints.
*Required cross-language gRPC tests between Java and Python services:*
1. Add integration tests for Java server with Python client.
2. Add integration tests for Python server with Java client.
3. Cover request and response round-trip correctness using Fory-serialized
payloads.
4. Include unary RPC coverage as required. Include streaming coverage when
corresponding generated streaming APIs are in scope.
5. Validate compatibility for normal cases and key error paths, including
decode errors and type mismatch.
6. Add coverage for zero-copy decode paths and fallback behavior in both Java
and Python integrations.
CI end-to-end test requirements:
1. Add Java and Python gRPC end-to-end interoperability tests into CI.
2. CI must execute both directions: Java server to Python client, and Python
server to Java client.
3. CI must fail on serialization compatibility regressions.
4. CI should run deterministic test cases with stable assertions for payload
correctness and error handling behavior.
*Skills:*
Java, Python, gRPC Java, grpcio, compiler and code generation, serialization
internals, testing, performance optimization.
*Difficulty:*
Medium to Hard.
*Project size:*
Preferred 350 hours.
*Potential mentors:*
Chaokun Yang, Weipeng Wang.
*Source links:*
https://github.com/apache/fory/issues/3272
https://github.com/apache/fory/issues/3273
https://fory.apache.org/docs/next/compiler/compiler_guide
https://github.com/apache/fory/tree/main/compiler
https://github.com/apache/fory/tree/main/java
https://github.com/apache/fory/tree/main/python
https://fory.apache.org/docs/next/guide/java/
https://fory.apache.org/docs/guide/python/
was:
*Description*
Apache Fory can already generate high-performance Java model code from IDL, but
Java gRPC stubs are not generated
yet.
This project will implement Java gRPC integration in the Fory compiler by
generating *Service.java and *Grpc.java artifacts, using Fory serialization
only (no protobuf runtime types for payload encoding).
compiler conventions, and avoid adding gRPC runtime dependencies into Fory core.
- Generate *Service.java interfaces and *Grpc.java binding classes from
service definitions.
- Generate gRPC MethodDescriptors, server binders, and client stubs (including
unary/streaming modes supported by
IR).
- Implement generated Fory-based Marshaller logic for request/response types.
- Add golden codegen tests for output file names and key method signatures.
- Provide a runnable Java server/client example using generated stubs and Fory
codec.
- Update compiler documentation for Java gRPC code generation usage and limits.
*Skills*
Java, gRPC Java, compiler/code generation, serialization internals, testing.
{*}Difficulty{*}:Medium
{*}Project size:{*}175 hours
{*}Potential mentors{*}: Chaokun Yang, Weipeng Wang
*Source links:*
- [https://github.com/apache/fory/issues/3272]
- [https://fory.apache.org/docs/next/compiler/compiler_guide]
- [https://github.com/apache/fory/tree/main/compiler]
- [https://github.com/apache/fory/tree/main/java]
- [https://fory.apache.org/docs/next/guide/java/]
Summary: Implement Fory gRPC Java/Python Integration (was: Apache
Fory: Implement Fory Java gRPC Integration)
> Implement Fory gRPC Java/Python Integration
> -------------------------------------------
>
> Key: GSOC-318
> URL: https://issues.apache.org/jira/browse/GSOC-318
> Project: Comdev GSOC
> Issue Type: New Feature
> Reporter: Chaokun Yang
> Priority: Major
> Labels: fory, gsoc2026, java, mentor
>
> *Description:*
> Apache Fory can already generate high-performance Java and Python model code
> from IDL, but end-to-end Java/Python gRPC integration is not available as a
> unified workflow.
> This project will implement Java and Python gRPC integration in the Fory
> compiler by generating language-specific service and transport artifacts.
> Java output artifacts: *Service.java and *Grpc.java.
> Python output artifacts: *_service.py and *_grpc.py.
> The implementation must use Fory serialization only, without protobuf runtime
> payload types. It must follow compiler conventions and keep runtime overhead
> low.
> *Expected outcomes:*
> 1. Generate Java and Python gRPC service and binding code from service
> definitions.
> 2. Support unary and streaming RPC APIs based on Fory service IR.
> 3. Generate Fory-based request and response marshalling for both languages.
> 4. Implement zero-copy decode paths for inbound payloads in both Java and
> Python, with a safe fallback path when zero-copy cannot be applied.
> 5. Add golden code generation tests for output file names and key method
> signatures in both Java and Python generators.
> 6. Provide runnable Java and Python gRPC examples using generated stubs and
> Fory codec.
> 7. Update compiler documentation for Java and Python gRPC code generation
> usage and constraints.
> *Required cross-language gRPC tests between Java and Python services:*
> 1. Add integration tests for Java server with Python client.
> 2. Add integration tests for Python server with Java client.
> 3. Cover request and response round-trip correctness using Fory-serialized
> payloads.
> 4. Include unary RPC coverage as required. Include streaming coverage when
> corresponding generated streaming APIs are in scope.
> 5. Validate compatibility for normal cases and key error paths, including
> decode errors and type mismatch.
> 6. Add coverage for zero-copy decode paths and fallback behavior in both Java
> and Python integrations.
> CI end-to-end test requirements:
> 1. Add Java and Python gRPC end-to-end interoperability tests into CI.
> 2. CI must execute both directions: Java server to Python client, and Python
> server to Java client.
> 3. CI must fail on serialization compatibility regressions.
> 4. CI should run deterministic test cases with stable assertions for payload
> correctness and error handling behavior.
> *Skills:*
> Java, Python, gRPC Java, grpcio, compiler and code generation, serialization
> internals, testing, performance optimization.
> *Difficulty:*
> Medium to Hard.
> *Project size:*
> Preferred 350 hours.
> *Potential mentors:*
> Chaokun Yang, Weipeng Wang.
> *Source links:*
> https://github.com/apache/fory/issues/3272
> https://github.com/apache/fory/issues/3273
> https://fory.apache.org/docs/next/compiler/compiler_guide
> https://github.com/apache/fory/tree/main/compiler
> https://github.com/apache/fory/tree/main/java
> https://github.com/apache/fory/tree/main/python
> https://fory.apache.org/docs/next/guide/java/
> https://fory.apache.org/docs/guide/python/
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]