Road to grpc.v 1.0 — stability + real-world exposure for the scoped surface, mirroring the protobuf.v roadmap.
Scope of 1.0
Unary gRPC client + Connect unary server, declared stable. Proven today against live grpc-go and connect-go.
Post-1.0, upstream-gated (V stdlib needs HTTP/2 trailer send + h2c): native gRPC server, and streaming (client/server/bidi). Documented as roadmap, not a wart.
Tandem with protobuf.v (structural, not incidental)
The generated gRPC glue (<Svc>Client/Handler/dispatch) is emitted by protobuf.v's gen/grpc.v, and protobuf.v is now 1.0 / SemVer-frozen. So:
- New call-shapes (deadlines, metadata) are protobuf.v codegen changes → additive → protobuf.v minor bumps (1.1, 1.2…), never breaking the frozen message API.
- Hardening/conformance will surface protobuf.v runtime bugs → 1.0.x patches (as the protobuf conformance gate did).
- Discipline: every protobuf.v touch stays backward-compatible, ships tested + released on its own, then grpc.v regenerates its checked-in stubs; both CIs green each step. The generated-stub shape is a shared contract — designed in Gate 1, frozen on both sides in Gate 4.
Gates
Gate 1 — Unary call semantics (both repos)
Gate 2 — Robustness & hardening (mostly grpc.v)
Gate 3 — Conformance & interop breadth (mostly grpc.v)
Gate 4 — API freeze + CHANGELOG (both repos, together)
Sequencing
1 → 2 → 3 → 4. The protobuf.v codegen change is front-loaded into Gate 1 (design the call-options shape early; Gate 4 freezes it). Gates 2–3 are mostly grpc.v with opportunistic protobuf.v patch releases.
Road to grpc.v 1.0 — stability + real-world exposure for the scoped surface, mirroring the protobuf.v roadmap.
Scope of 1.0
Unary gRPC client + Connect unary server, declared stable. Proven today against live grpc-go and connect-go.
Post-1.0, upstream-gated (V stdlib needs HTTP/2 trailer send + h2c): native gRPC server, and streaming (client/server/bidi). Documented as roadmap, not a wart.
Tandem with protobuf.v (structural, not incidental)
The generated gRPC glue (
<Svc>Client/Handler/dispatch) is emitted by protobuf.v'sgen/grpc.v, and protobuf.v is now 1.0 / SemVer-frozen. So:Gates
Gate 1 — Unary call semantics (both repos)
grpc-timeoutheader + client-side deadline/cancellationClient.metadatagoes in)gen/grpc.v: generated client methods take call options (deadline + per-call metadata) and return response metadata — additive (bare form preserved). Ships protobuf.v 1.1.0.Gate 2 — Robustness & hardening (mostly grpc.v)
grpc-status/grpc-timeout, half-closed conns, concurrent calls, cleanupGate 3 — Conformance & interop breadth (mostly grpc.v)
conformance/harness + failure-list (same pattern as protobuf.v)Gate 4 — API freeze + CHANGELOG (both repos, together)
Client,ConnectServer,StatusError,frame,status) and the generated-stub shape in protobuf.vgen/grpc.vSequencing
1 → 2 → 3 → 4. The protobuf.v codegen change is front-loaded into Gate 1 (design the call-options shape early; Gate 4 freezes it). Gates 2–3 are mostly grpc.v with opportunistic protobuf.v patch releases.