wavefnd / wavefnd/Wave

Make the POSIX timeout module respect target selection during Windows corpus checks

Open
#632 0 comments 0 reactions 0 assignees View on GitHub
bug ci good first issue
Dominant language
Rust
Stars
53
Forks
16
Avg merge
4h 22m
Merged PRs (30d)
46

Description

Observed at PR #631 head `d811e0c2accc8997eecb5071f8752f88e9fb44e4`. [Failing CI job](https://github.com/wavefnd/Wave/actions/runs/34737095086/job/103670349649).

The Windows GNU amd64 job fails its standard-library corpus check with `E3001: module 'std::sys::socket' has no symbol 'MSG_DONTWAIT'`. The corpus result is 279 passed / 1 failed; all 26 standard-library examples pass.

The new `std/net/posix_timeout.wave` imports the Unix-only symbol unconditionally. Target selection at the `tcp.wave` import site does not protect this file when the corpus checker checks each module directly. Locally reproduced with:

```sh
target/debug/wavec check std/net/posix_timeout.wave --target x86_64-pc-windows-gnu
```

Scope: make the module's imports/declarations target-appropriate, or apply an explicit supported-target contract in corpus discovery. Do not invent a Windows MSG_DONTWAIT constant or drop platform validation wholesale.

Acceptance:
- Windows GNU corpus and examples pass, and the native Windows timeout implementation remains selected.
- Linux/macOS/FreeBSD still check the real POSIX timeout implementation.
- Add a focused regression for standalone module checking on an incompatible target.

This is a target-selection regression introduced in #631, separate from the runtime deadline behavior in #510.

Source references:
- [std/net/posix_timeout.wave](https://github.com/wavefnd/Wave/blob/d811e0c2accc8997eecb5071f8752f88e9fb44e4/std/net/posix_timeout.wave)
- [std/net/tcp.wave](https://github.com/wavefnd/Wave/blob/d811e0c2accc8997eecb5071f8752f88e9fb44e4/std/net/tcp.wave)
- [tools/check_wave_corpus.py](https://github.com/wavefnd/Wave/blob/d811e0c2accc8997eecb5071f8752f88e9fb44e4/tools/check_wave_corpus.py)

Contributor guide

Open the contributing guide

Research direction

Start with std/net/posix_timeout.wave and compare its target handling with std/net/tcp.wave. Run `target/debug/wavec check std/net/posix_timeout.wave --target x86_64-pc-windows-gnu`, then inspect tools/check_wave_corpus.py and add the focused standalone-check regression. Done means Windows GNU corpus and examples pass while POSIX implementations still check on Linux, macOS, and FreeBSD.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers, testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
74/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.