wavefnd / wavefnd/Wave

Remove the mandatory libc dependency from the Linux name-resolution path

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

Description

`std/sys/linux/resolver.wave` unconditionally delegates name resolution and result release to getaddrinfo/freeaddrinfo. Even a numeric-host lookup through net_resolve_tcp/net_resolve_udp therefore uses libc. This is a remaining dependency gap in the Linux sys layer, distinct from socket syscalls and interface enumeration.

Name resolution includes host/service lookup and system policy, so substituting a hardcoded external DNS server would not be an acceptable fix. The implementation approach needs review before replacing behavior.

Code evidence:

- [std/sys/linux/resolver.wave:15](https://github.com/wavefnd/Wave/blob/ea74c2dafc31da876e5561f2d176ba719f5a0458/std/sys/linux/resolver.wave#L15)
- [std/sys/linux/resolver.wave:20](https://github.com/wavefnd/Wave/blob/ea74c2dafc31da876e5561f2d176ba719f5a0458/std/sys/linux/resolver.wave#L20)
- [std/net/resolve.wave:160](https://github.com/wavefnd/Wave/blob/ea74c2dafc31da876e5561f2d176ba719f5a0458/std/net/resolve.wave#L160)

Acceptance:

- [ ] Provide a libc-free path for numeric IPv4/IPv6 hosts and numeric services with the current SocketAddr/result representation.
- [ ] Choose and review how hostname/service resolution is supplied through a native or explicitly configured resolver provider, with clear unsupported behavior when none is available.
- [ ] Do not silently bypass system host policy, hardcode a public DNS server, or force an unrelated protocol stack into std.
- [ ] Preserve result ordering/truncation and native error detail where available; keep ownership independent of freeaddrinfo.
- [ ] Add deterministic local fixtures and a no-libc link check, avoiding public-network dependencies in tests.

Reference: [getaddrinfo behavior and libc dependency](https://man7.org/linux/man-pages/man3/getaddrinfo.3.html). Related #378 for capability reporting; #445 keeps protocol policy outside the async network primitives. This issue does not propose new Wave syntax.

Audit status: static source inspection against canonical master `ea74c2dafc31da876e5561f2d176ba719f5a0458` on 2026-09-10. No compiler build, test execution, implementation change or local reproduction was performed for this report. The examples describe the source-derived behavior to verify when implementing the fix.

Contributor guide

Open the contributing guide

Research direction

Start with std/sys/linux/resolver.wave at the cited lines, then trace the callers in std/net/resolve.wave around line 160. Review the proposed native or explicitly configured resolver-provider approach before changing behavior. Done means numeric host/service resolution works without libc, policy-dependent resolution has clear unsupported behavior, ownership and ordering are preserved, and deterministic fixtures plus a no-libc link check cover the result.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux
Domain
networking, operating-systems
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.