v0.6.1
Marionette v0.6.1 completes the deterministic simulated TCP-stream contract.
-
Makes simulated stream connection establishment a queued deterministic
network event. Connect now observes source/destination liveness, link state,
latency, duration/deadline timeouts, and task cancellation before publishing
either endpoint; failed, timed-out, and canceled attempts roll back their
probe and socket state. Competing probes on a directed path publish in
(deliver_at, packet_id)order independently of reader-owned stream frames. -
Completes the supported TCP-stream lifecycle contract: listener backlogs are
enforced, accepted sockets report deterministic abstracted peer metadata,
port0assigns deterministic ephemeral ports, directional shutdown
implements half-close, and cancellation is delivered at every supported
blocking network point. Accepted peer IPs remain destination-derived because
simulated nodes do not model source interfaces. Same-family wildcard
listeners match literal destinations and preserve active-bind exclusivity.
reuse_addressis an explicit abstraction because the simulator has no
kernelTIME_WAITstate. -
Preserves reliable-stream semantics under simulated faults. Segmented writes
return accepted partial progress, loss cannot expose an interior byte hole,
process reset discards delayed outbound frames before terminally resetting
the peer, teardown reclaims queued path/pool capacity, and every capacity
release wakes blocked writers. Explicit unclog and healing also wake queued
stream/connect waits at their newly eligible simulated time. -
Adds a checked-in
std.Io.netconformance ledger and no-fault differential
coverage that runs the same bidirectional exchange, accepted-peer port/family
checks, and send-half-close/EOF scenario against hoststd.Io.netand
Marionette. Targeted allocation, timeout, cancellation, partition, backlog,
and capacity regressions accompany the contract tests. -
Keeps connection probes separate from readable stream payloads. This avoids
a ready probe owned by one connecting task making an unrelated reader
busy-loop, while probe publication retains its own deterministic ordering
domain. The ownership regression was caught by the pinned Dusty HTTP
validation.