项目/grpc-lite
更新于 2026/07/25
grpc-lite
基于 Zig、libxev 与 nghttp2 的轻量 gRPC core runtime,将 Protobuf 与 transport 解耦。
grpc-lite 是一个 Zig 编写的轻量 gRPC core runtime。HTTP/2 交给固定版本的 nghttp2,socket 与事件循环使用 Zig 和 libxev,Protobuf message runtime 则保持可选。
这种拆分让 transport core 可以直接处理原始 Protobuf wire bytes,也能在需要时接入 zig-protobuf 生成的 typed client 与 service registration。
已实现
- cleartext HTTP/2 上的标准 unary gRPC。
- 持久连接与多路复用 channel。
- ASCII 与 binary metadata。
- deadline、stream cancellation 与 graceful server draining。
- identity 和 gzip unary compression。
- GOAWAY 后的连接替换。
- 显式 allocator 与确定性
deinit。
Client 与 Server 都有完整示例。可选 typed adapter 能从生成的 service type 推导 method path、编码请求并解码响应,业务错误可以映射到 gRPC status。
测试与边界
CI 在 Linux x64 和 ARM64 上运行 Debug、ReleaseSafe、ThreadSanitizer、UBSan 与互操作测试,并包含官方 HTTP/2 边界场景。
项目仍处于 1.0 之前:当前只支持 unary 和 IPv4,尚未实现 streaming、TLS、DNS、自动重试与 server reflection。README 中声明的高层 API 相对稳定,底层模块仍可能变化。