gcc 15 (C23) трактует () как 'без аргументов', из-за чего lib/dns.c не собирался (65 ошибок). struct dns_rr_i.sort и таблица dns_rrtypes[] переведены на явные прототипы с typedef'ами и кастами указателей.
- dns.c: #define uint32_t → #include <stdint.h> (на UCRT64 stdint.h уже тянется через winsock2.h, макро даёт 'duplicate unsigned') - async_dns.c: p->IpAddress → p->IpAddress.String (IP_ADDR_STRING.IpAddress — IP_ADDRESS_STRING, не char*)
- Вендор libdns (MIT) как lib/dns.{c,h}; правка dns_quietinit для GCC 5+ - Новый lib/async_dns.{c,h}: неблокирующий A-резолвер поверх uasync - src/ntp_time.c: убраны блокирующие getaddrinfo+select; async DNS + неблокирующая машина состояний UDP-запроса - test_async_dns.c (юнит) + test_ntp.c сценарий hostname→DNS - сборка: -DDNS_RANDOM=RAND_bytes, -lcrypto в COMMON_LIBS