COOLJAPAN
← All posts

OxiRPC 0.2.1 Released — gRPC-over-QUIC Arrives, Plus a Trailer Spoofing Fix

OxiRPC 0.2.1 adds a 100% Pure-Rust HTTP/3 (gRPC-over-QUIC) transport behind the opt-in http3 feature, closes a bug where a missing grpc-status trailer could look like a successful empty stream, adds a frame-size overflow guard, and validates gRPC Content-Type on every native transport path — 702 tests passing (801 with all features), the sovereign gRPC layer for the COOLJAPAN ecosystem.

release oxirpc pure-rust cooljapan noffi grpc http3 quic networking

gRPC no longer has to choose between HTTP/2 and a native QUIC library — not in this stack.

Today we released OxiRPC 0.2.1 — the COOLJAPAN Pure-Rust gRPC stack. The headline feature is a genuinely new transport: gRPC-over-QUIC (HTTP/3), built entirely on OxiQUIC, behind an opt-in http3 feature that keeps the default closure exactly as QUIC-free as before. Alongside it, this release closes a trailer-handling bug where a dropped grpc-status could masquerade as a successful empty response, adds a frame-size overflow guard, and validates Content-Type on every native transport path.

No protoc. No OpenSSL. No ring by default. No FFI, no -sys crates on the path you actually ship — and now that includes the QUIC transport too, since OxiQUIC is Pure Rust from the UDP socket up.

Why OxiRPC 0.2.1 is a game changer

HTTP/3 support is the kind of feature that’s easy to bolt on badly — pull in a native QUIC implementation, widen the FFI surface you spent two major versions closing, and call it done. That’s not what happened here:

OxiRPC 0.2.1 ends all of that.

Technical Deep Dive: how gRPC rides on QUIC here

  1. TLS configs built for QUIC (oxirpc-core::tls). client_config_h3 / server_config_h3 (and their _arc variants) are TLS 1.3-only rustls configs carrying the "h3" ALPN, built on oxiquic_crypto::quic_crypto_provider() — whose cipher suites carry the quic: Some(..) key schedule QUIC packet-key derivation actually needs.
  2. A native H3 client channel (oxirpc-client::native_channel::h3). H3Channel/H3ChannelBuilder/H3Connection/execute_h3 drive gRPC full-duplex over QUIC via RequestStream::split(), strip the HTTP/2-only te header, detect trailers-only responses, and map grpc-status trailers to typed errors — the same semantics as the H2 path, on a different transport.
  3. A native H3 server accept loop (oxirpc-server::native_transport_h3). serve_native_h3_with_service / bind_h3_endpoint reuse the existing NativeServiceRegistry, send grpc-status/grpc-message trailers, enforce the "h3" ALPN, and support graceful shutdown — no separate registry implementation to maintain.
  4. A real E2E suite, not just unit coverage (crates/oxirpc/tests/h3_e2e.rs). Unary, server-streaming, client-streaming/bidi, deadline/timeout, graceful shutdown, and ALPN-mismatch rejection are all exercised over an actual loopback QUIC connection.

Getting Started

cargo add oxirpc --features "client,server,http3"

HTTP/2 usage is unchanged — the new transport is additive:

use oxirpc::http3::{H3ChannelBuilder, serve_native_registry_h3};

// Client: gRPC over QUIC instead of HTTP/2
let channel = H3ChannelBuilder::new("https://[::1]:50051")
    .connect()
    .await?;
# Run the compiled, runnable example backing the README's HTTP/3 snippet
cargo run --example http3_client_server -p oxirpc --features http3

What’s New in 0.2.1

Tips

This is the foundation

OxiRPC is part of NoFFI — the COOLJAPAN initiative to replace every C/C++/Fortran/-sys FFI dependency in the Rust ecosystem with a clean, memory-safe, 100% Pure Rust implementation. Landing HTTP/3 without widening the default FFI surface is exactly the discipline that promise requires — QUIC support had to prove it could stay opt-in before it shipped.

OxiRPC depends on OxiProto for descriptor parsing, OxiTLS for its crypto provider and certificate types, OxiQUIC for the new HTTP/3 transport, and OxiARC for compression — and in turn powers oxirouter, oxigenai, oxigdal-cluster, oxionnx, and oxirs across the rest of the stack.

Repository: https://github.com/cool-japan/oxirpc

Star the repo if gRPC-over-QUIC without a native QUIC library anywhere on the default path is something you’ve been waiting for.

The era of choosing between HTTP/3 and a Pure-Rust dependency tree is over. Pure Rust gRPC, now over QUIC too — sovereign, safe, and FFI-free.

KitaSan at COOLJAPAN OÜ August 7, 2026

↑ Back to all posts