This inventory is the pre-stabilization contract. “Generated” means a comptime
factory returns a concrete, fully typed Zig type; anytype in a declaration is
generic syntax and is specialized at the call site, not dynamic typing.
| Surface | Status | Purpose |
|---|---|---|
Config, Endpoint(cfg), memoryPlan(cfg) |
canonical | Configuration, transport table, exact sizing |
proto.channels, proto.Session, proto.Endpoint |
canonical/advanced | Channel schema and sans-I/O transport |
proto.stream.Transfer, proto.live_stream.Live |
canonical | Seekable resumable and sequential byte streaming |
proto.conn |
advanced | Tokens, identity, ICE/STUN, relay, resumption, reset, migration primitives |
proto.delivery |
advanced | ACK/loss/RTT/MTU/pacing/congestion primitives |
host.Bridge, host.SnapshotAck |
canonical | Typed endpoint-to-replication snapshot bridge |
replication.Game, replication.Engine |
canonical | Generated world/engine stack |
replication.ReconcileResult |
canonical | held, corrected, resynchronized, future, history_exhausted |
runtime.transport |
canonical | Driver contracts (assert*), the shared pump (drain/flush/flushBatched), and housekeep |
runtime.net.Platform |
canonical | Compile-time-selected best backend per target (bind/run) |
runtime.reactor, io, io_linux, sharded, task |
canonical | Engine-loop and real socket drivers |
runtime.sim |
canonical test API | Deterministic impairment/path-transition lab |
runtime.metrics, ops, record, checkpoint |
canonical operations | Metrics, health/drain, captures, persistence |
Removed before stabilization: RealtimeBridge, magnetNetEqual, the boolean
reconcile API, and reconcileDetailed. There are no compatibility aliases for
these names. Bridge, magnetEqual, and enum-valued reconcile are the only forms.
The runtime layer was likewise collapsed onto a single set of contracts, with no forwarding shims:
| Removed | Use instead |
|---|---|
runtime.poll (recvAll / flushAll) |
runtime.transport (drain / flush) |
io.runBlocking, io.serve, io.Driver |
io.runReactor (runBlocking was a one-line forward to it) |
io.nowMs, io.unixSeconds, io.sendBatch |
io.IoClock, transport.flushBatched |
AddrTable.recordChecked / lookupChecked |
record / lookup, now the only (checked) forms |
Reactor.addChecked |
add, which now returns bool |
io_linux.sendChecked |
send, which counts into send_errors |
task.pumpSession's recvOne / sendOne |
the standard recv / send transport |
record.Dir |
record.Direction (disambiguated from sim.Dir) |
reading Endpoint.used / .addrs directly |
Endpoint.connections(), also on Sharded |
io.bindUdp, io.SocketTransport |
io.Socket(cap), or net.Platform(cap).bind |
io.runReactorSeeded |
sock.remember(ip) then runReactor |
recvBatch's timeout_ns |
waitReadable(ns) then recvBatch (the timeout never applied) |
io_linux.runReactorGro, recvGro, enableGro |
io_linux.runReactor (recvmmsg batch recv) |
io_linux.enableGso |
nothing; there was no GSO send path for it to enable |
io_linux.UdpSocket |
io_linux.Socket(Endpoint.capacity), or net.Platform(cap) |
Callback wrappers use *anyopaque internally when a runtime callback needs type
erasure, but their constructors bind a concrete context and function signature.
Application-facing data, channel messages, components, inputs, streams, and bridge
types remain concrete and compile-time checked.