The Tragedy of Gethostbyname
ariadne.space
ariadne.space
the title should really be the tragedy of musl
(There is a deep irony here that mDNS, LLMNR and NBNS all use the DNS packet format on the wire!)
Sometimes the argument given is that these resolvers should be implemented via a service which listens on localhost, with resolv.conf pointed at. Unfortunately, this assumes you can translate the responses from querying all of these protocols to DNS packets. This isn't true: There's no way to encode an IPv6 address scope in a DNS packet (because they're machine-local considerations). In mDNS and LLMNR, this isn't a problem because the scope is implicit - take it from the sockaddr_in6 of the received packet. This means link local addressing doesn't work.
(n.b. gethostbyname can't support link local addressing either, but getaddrinfo can. This is one reason for gethostbyname's deprecation in favor of the latter API)
The blog talks about "use of DNS for bulk data distribution, such as in DNSSEC, DKIM and other applications", but it's not just that -- even for a most basic use, "ask a hostname from user and connect to that host", musl will fail if the response contains too many IP addresses.
In turn, this decision undermines - if not actively destroys - the potential value of Alpine as a distribution, because it potentially represents the tip of an iceberg of other compatibility issues.
After running into this issue, I gave up on Alpine entirely, because I do not have any inclination to support people or projects that actively choose to go against established standards.