Skip to content

[Extension Proposal] Quarkus gRPC Zero #49767

@andreaTP

Description

@andreaTP

Description

Description

Interested in this extension, please +1 via the emoji/reaction feature of GitHub (top right).

gRPC Zero is an experimental, drop-in replacement for io.quarkus:quarkus-grpc that eliminates the need for native protoc executables and plugins by running the whole code generation pipeline directly on the JVM. It is self-contained, portable, and designed to work in hermetic or constrained build environments.

Repository name

quarkus-grpc-zero

Short description

gRPC Zero Codegen is a JVM-only, self-contained protoc codegen implementation for Quarkus projects.

Repository Homepage URL

https://docs.quarkiverse.io/quarkus-grpc-zero/dev/

Repository Topics

  • quarkus-extension
  • grpc
  • codegen
  • protoc

Team Members

Additional context

This extension avoids shipping platform-specific protoc binaries by embedding the necessary protoc functionality in Java. High-level approach described in the README:

  1. Strip out the CLI interface from libprotobuf to avoid spawning external processes.
  2. Compile the modified libprotobuf into WebAssembly (.wasm) using wasi-sdk.
  3. Translate the resulting WebAssembly into pure Java bytecode at build time using Chicory.
  4. Use the generated Java dependency (containing the protoc capabilities and plugin support) to perform gRPC code generation in-process on the JVM.

This provides:

  • Self-contained, single-JVM dependency (no native protoc required).
  • Improved portability across OS/architectures.
  • Suitability for hermetic builds and CI environments where native binaries are a pain to manage.

Previously discussed with @cescoffier and @jponge we are aiming to provide an opt-in alternative that can mature and stabilize, with the help of community feedback, in a quarkiverse repository.

The initial codebase lives here:
https://github.com/andreaTP/quarkus-grpc-zero

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions