Yash Agarwal
ProjectsOpen SourceExperienceWritingAboutContact
Hire me

Yash Agarwal

Backend, distributed systems, and the network layer underneath.

Open to SWE roles and internships · 2027 graduate

Site

  • Projects
  • Open Source
  • Experience
  • Writing
  • About
  • Contact

Elsewhere

  • LinkedIn
  • GitHub
  • X
  • Email

© 2026 Yash Agarwal.

Punjab, India

Projects/Apache Fory: gRPC Code Generation
02ShippedMay 2026 - Aug 2026

Apache Fory: gRPC Code Generation

Google Summer of Code 2026. Two merged PRs bringing gRPC codegen to Fory's IDL compiler for Dart and Swift.

Final reportPR #3723 · DartPR #3776 · SwiftDocs
Fory IDLforyc compilerDart · gRPCSwift · gRPCJavaRust · C++cross-language interop in CI

Apache Fory is a multi-language serialization framework. Its IDL compiler could already emit model types for eleven languages, but gRPC service generation was landing language by language. I owned Dart and Swift: a Fory IDL service definition now produces an idiomatic client and server in both, across all four gRPC shapes and all three schema frontends.

Both PRs are merged into apache/main and shipping. Along the way I found and fixed a runtime divergence in Fory's Swift implementation: under reference tracking, Swift wrote a different reference flag for value-type structs than Java, Rust and C++ did, so Java could not read Swift-produced bytes. Swift now follows the same convention as the other runtimes.

  • Dart generator (#3723): client and service base per schema, covering unary, server-streaming, client-streaming and bidirectional RPCs, with no manual Fory registration required at startup.
  • Swift generator (#3776): providers, an async client, service metadata and stream adapters for grpc-swift, with a per-thread Fory runtime because the Swift runtime is single-threaded and a shared instance raced under ThreadSanitizer.
  • Symbol-collision preflight that fails generation before writing files when two declarations would claim one identifier: namespace enums, duplicates, flattened helpers, names that normalise together, and nested declarations.
  • Cross-language interop driven in both directions against a Java peer, across all three schema frontends, wired into CI on every relevant change.
  • Reserved-name guarding: generated classes inherit from gRPC base types and Object, so an RPC named `ToString` produced an invalid override. Codegen now detects that and fails with a clear diagnostic.

2

PRs merged to apache/main

4,830

lines added

58

files touched

3

IDL frontends supported

My role

GSoC 2026 contributor · Mentor: Chaokun Yang

Stack

DartSwiftJavagRPCProtocol BuffersFlatBuffersCI

Previous

Salongraphy

Next

Vajra: Next-Generation Firewall

Happy to walk through the code, the schema, or the decisions behind this one.

Get in touchAll projects