···2222- Uses `reqwless` with `default-features = false`
2323- Default feature set is `backend-posix-libc` + `dns-getaddrinfo`
2424- `backend-rustix` is available as an alternate transport backend
2525+- DNS mode is selected independently via `dns-getaddrinfo` or `dns-ip-only`
2526- Alternate DNS mode `dns-ip-only` rejects hostnames and only accepts literal IP hosts
2627- HTTPS is optional via `--features https` and currently uses `TlsVerify::None` (insecure baseline)
2728- Uses fixed-size stack buffers for request/response and output chunks
···41424243# Rustix backend with getaddrinfo DNS mode
4344cargo run --no-default-features --features backend-rustix,dns-getaddrinfo -- http://example.com
4545+4646+# Rustix backend with IP-only DNS mode
4747+cargo run --no-default-features --features backend-rustix,dns-ip-only -- http://93.184.216.34
4448```
45494650## Validation
+11-4
doc/portable.md
···7676 app/
7777 main.rs
7878 download.rs
7979+ dns/
8080+ mod.rs
8181+ getaddrinfo.rs
8282+ ip_only.rs
7983 net/
8084 mod.rs
8185 traits.rs
···99103```
100104101105- `app/`: URL handling, request flow, stdout streaming.
106106+- `dns/`: DNS mode implementations selected independently from transport backend.
102107- `net/`: shared adapter interfaces and error mapping.
103103-- `platform/`: backend-specific networking + DNS + address conversion.
108108+- `platform/`: backend-specific transport + address conversion.
104109- `runtime/`: executor and FD utilities.
105110106111## Feature Model
···125130 CLI[app/main] --> DL[app/download]
126131 DL --> NAL[embedded-nal-async traits]
127132 NAL --> SEL{backend feature}
133133+ NAL --> DNSSEL{dns feature}
128134 SEL --> LIBC[platform/posix_libc]
129135 SEL --> RUSTIX[platform/rustix]
130130- LIBC --> DNS{dns mode}
131131- RUSTIX --> DNS
132132- DNS --> OUT[stdout stream]
136136+ DNSSEL --> DNSMODE[dns resolver]
137137+ LIBC --> OUT[stdout stream]
138138+ RUSTIX --> OUT
139139+ DNSMODE --> OUT
133140```
134141135142## Practical Notes
···11pub mod addr;
22-pub mod dns;
32pub mod errno;
43pub mod tcp;
5466-#[cfg(feature = "backend-posix-libc")]
77-pub use dns::PosixDns;
85#[cfg(feature = "backend-posix-libc")]
96pub use tcp::PosixTcp;