Add tube multiplexing to pwntools
Add a TubeMultiplexer and MuxChannel API for multiple bidirectional logical channels over one tube, with flow control and close propagation.
pwntools-tube-multiplexing
Normalized profile
What this task asks for
Add a TubeMultiplexer and MuxChannel API for multiple bidirectional logical channels over one tube, with flow control and close propagation. `TubeMultiplexer(underlying, max_channels=256, high_water_mark=1048576, low_water_mark=262144)` must reject non-tube arguments with `TypeError`, reject `max_channels` outside `[1, 65535]` with `ValueError`, and reject `low_water_mark > high_water_mark` with `ValueError`. Channel IDs must be integers in the range `[1, 65535]`. If a thread is blocked in `accept_channel` when `close()` is called, it must be unblocked with `EOFError`. `MuxChannel` must support half-close via `shutdown('send')`: after half-closing the send direction, further sends must raise `EOFError` while receives continue to work. The `Buffer` class must gain `set_watermarks(high=None, low=None)` (raising `ValueError` if `low > high`), plus properties `high_water`, `low_water`, `over_high_water` (True when size >= high, False if unset), and `under_low_water` (True when size <= low, False if unset). Calling `mux(**kwargs)` on any tube instance must return a `TubeMultiplexer` wrapping that instance, forwarding all keyword arguments to the `TubeMultiplexer` constructor.
Intent
- feature implementation
- data transformation
Work surfaces
- task scheduler
- library API
Technology
- pwntools
Expected artifacts
- repository patch
What makes it difficult
- concurrency, cancellation, or distributed-state coordination
Published evidence
Model × harness outcomes
Counts are tied to these exact configurations. Harnesses are not treated as equivalent across benchmarks.
- Models
- 13
- Configurations
- 41
- Trials
- 163
Showing 41 of 41 configurations
| Model | Harness | Effort | Result | Passes |
|---|---|---|---|---|
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | xhigh | No passes | 0/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | max | No passes | 0/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | low | Mixed | 2/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | medium | Mixed | 3/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | high | Mixed | 2/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | xhigh | Mixed | 3/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | max | Mixed | 2/4 |
| claude-sonnet-4-6anthropic | mini-swe-agentpublished configuration | high | Mixed | 3/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | medium | Mixed | 1/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | high | Mixed | 2/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | xhigh | Mixed | 3/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| gemini-3-1-pro-previewvertex_ai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| gemini-3-5-flashvertex_ai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| glm-5-2zai | mini-swe-agentpublished configuration | high | Mixed | 2/4 |
| glm-5-2zai | mini-swe-agentpublished configuration | max | Mixed | 1/4 |
| gpt-5-4openai | mini-swe-agentpublished configuration | xhigh | Mixed | 2/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | high | Mixed | 3/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | xhigh | Mixed | 1/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | xhigh | Mixed | 2/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | max | Mixed | 1/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | low | Mixed | 1/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | medium | Mixed | 2/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | high | Mixed | 1/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | xhigh | Mixed | 3/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | max | Mixed | 1/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | low | Mixed | 1/3 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | high | Mixed | 1/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | xhigh | Mixed | 3/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | max | Mixed | 2/4 |
| kimi-k2-7-codeopenrouter | mini-swe-agentpublished configuration | default | No passes | 0/4 |