[ 
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]

Reply via email to