Remove the mandatory libc dependency from the Linux name-resolution path
- 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
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