项目/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 相对稳定,底层模块仍可能变化。

相关阅读

Memo关闭 macOS 监听的端口 5000长文TLA+ 学习笔记长文阿里盘古性能导向的演进