wavefnd / wavefnd/Wave

Implement Windows anonymous pipes and handle duplication

Open
#430 0 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted needs testing os compatibility
Dominant language
Rust
Stars
53
Forks
16
Avg merge
4h 22m
Merged PRs (30d)
46

Description

## Summary

The Windows filesystem provider already carries native HANDLE values through the portable descriptor layer, but `pipe`, `dup2`, and `fcntl` currently return `-ENOSYS`. This blocks portable pipe-based I/O and process output capture.

## Related issue

- #385

## Scope

Implement anonymous pipes and the handle-duplication behavior needed by `std::io` and the Windows process layer. Map only operations with a well-defined portable meaning; do not invent a broad `fcntl` emulation.

## Acceptance criteria

- `io_pipe` creates readable and writable endpoints on Windows.
- Duplicating or replacing standard input/output/error handles follows documented ownership rules.
- Closing either endpoint does not leak or double-close native handles.
- Unsupported `fcntl` commands remain explicit and deterministic.
- Windows-native tests cover a round trip, EOF after writer close, and standard-handle redirection.
- Existing Unix behavior is unchanged.

Contributor guide

Open the contributing guide

Research direction

Locate the Windows filesystem provider and portable descriptor layer, then trace the existing pipe, dup2, and fcntl entry points that return -ENOSYS. Use the Windows-native test area as the starting point and cover pipe round trips, EOF after writer close, standard-handle redirection, ownership, and unsupported commands. Done means the Windows criteria pass without changing Unix behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
operating-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.