oxdock-pipe
Anonymous pipe backends for OxDock: spillable script buffers, OS pairs, and owned handle slots.
Part of the OxDock workspace.
Anonymous pipe backends. Handles start unbound and materialize lazily on
first binding (script buffers by default, OS kernel pairs for pure
single-RUN pipelines); cloning a handle shares the backend, and the last
drop closes. Under Miri everything stays on script pipes.
Layout
spill: the spillable byte buffer. Bytes accumulate in memory and spill to a guarded temp file past the configured threshold, with a backlog cap bounding disk use. Thresholds ride on the value so tests construct small-threshold buffers explicitly; disk spilling is compiled out under Miri.backend: the script-pipe backend. OnePipeInnerholds the buffer plus writer/keeper accounting with blocking reads, timeout-bounded reads for bridge workers, and explicit close;KeeperGuardpins transient gaps for background tasks.slot: owned handles and OS pairs. APipeHandleis a mutex cell over aSlotthat startsUnboundand decides its kind once, under the cell lock, on first binding. OS pairs sit behind take-once slots: the first producer and consumer each take their half, and any further take bails instead of stealing the descriptor.
There is no central pipe index anywhere: resolution, keepers, peeks, and
diagnostics (inspect, peek, script_backend) all operate on handles
already in hand. SharedInput / SharedOutput aliases live here and are
re-exported from oxdock-process, keeping this crate a leaf
(anyhow + oxdock-fs only) so oxdock-parser pipe values can own
handles without a dependency cycle.
License
oxdock-pipe is distributed under the terms of the Apache License (Version 2.0).