bench/boundary (#56) measures list-shaped imports only (ping(list<u8>), fetch() -> list<u8>). The stream rendezvous path — now performance-relevant after #63's typed-chunk work — has no instrument: nothing would catch a regression in SharedStreamImpl copy mechanics, HostBuffer.taken() chunk preservation, or the CABI fast paths as exercised via GuestBuffer.
Proposed shapes, same lanes-on-one-engine discipline as the existing sweep:
| shape |
what it measures |
stream-sink: async func(s: stream<u8>) -> u64 (guest drains) |
host→guest payload via rendezvous: GuestBuffer.write store path + wakeup cost per chunk |
stream-source: async func(n: u32) -> stream<u8> (guest pumps) |
guest→host: bulk lift + HostBuffer chunk pass-through |
pass-through: async func(s: stream<u8>) -> stream<u8> (guest never reads) |
host↔host rendezvous after identity transfer — the #63 pass-through path (measured ad hoc at ~712 MB/s for 64 KiB single-read; no standing number) |
Sweep dimensions: chunk size (1200 B / 16 KiB / 256 KiB) × read granularity, medians over timed runs after warmup, callback + jspi + deno lanes as today. The existing stream-pass fixture (#63) covers the third shape's guest; the first two need a small bench guest addition.
Follow-up to #63; companion to #67 (which will want the same lanes for non-u8 element types).
bench/boundary (#56) measures list-shaped imports only (
ping(list<u8>),fetch() -> list<u8>). The stream rendezvous path — now performance-relevant after #63's typed-chunk work — has no instrument: nothing would catch a regression inSharedStreamImplcopy mechanics,HostBuffer.taken()chunk preservation, or the CABI fast paths as exercised viaGuestBuffer.Proposed shapes, same lanes-on-one-engine discipline as the existing sweep:
stream-sink: async func(s: stream<u8>) -> u64(guest drains)stream-source: async func(n: u32) -> stream<u8>(guest pumps)pass-through: async func(s: stream<u8>) -> stream<u8>(guest never reads)Sweep dimensions: chunk size (1200 B / 16 KiB / 256 KiB) × read granularity, medians over timed runs after warmup, callback + jspi + deno lanes as today. The existing
stream-passfixture (#63) covers the third shape's guest; the first two need a small bench guest addition.Follow-up to #63; companion to #67 (which will want the same lanes for non-u8 element types).