# curl 8.20.0 - Product: curl (https://whatsnew.fyi/product/curl) - Vendor: curl - Date: 2026-04-29 - Version: 8.20.0 - Original notes: https://curl.se/ch/8.20.0.html - Permalink: https://whatsnew.fyi/product/curl/releases/8.20.0 - Labels: Platforms: Desktop What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add thread pool and queue to lib - **added** — Add CURLMNWC_CLEAR_ALL to multi.h - **added** — Add HTTPS-RR use in HTTP/3 - **changed** — Use thread queue for resolving in async-thrdd - **changed** — Make NTLM disabled by default - **changed** — Drop support for CMake 3.17 and older - **changed** — Drop support for c-ares versions before 1.16.0 - **changed** — Make SMB support opt-in - **changed** — Extend and update curl_ngtcp2 callbacks for 1.22.0+ - **changed** — Use wolfCrypt DES API with wolfSSL in curl_ntlm_core - **changed** — Support delegating SHA-512/256 to wolfSSL API - **fixed** — Cap altsvc list at 5,000 entries - **fixed** — Skip expired entries read from altsvc file - **fixed** — Fix HTTPS-lookup in asyn-ares when not on port 443 - **fixed** — Fix query counter handling in async-ares - **fixed** — Fix cookie rejection when tabs in value - **fixed** — Fix potential infinite loop in curl_get_line when filename is a directory - **fixed** — Fix memory-leak when doing a second DoH resolve - **fixed** — Repair CURLINFO_TLS_SESSION in getinfo - **removed** — Drop RTMP support - **removed** — Drop the prio field from the altsvc struct curl / Docs / Releases / Changes in 8.20.0 Related: Daily Snapshots Source repo Release log Pending Release 🠰 8.19.0 all changes 8.21.0 🠲 #### Changes in 8.20.0 - April 29 2026 8.20.0 8.20.0 Changes: - async-thrdd: use thread queue for resolving - build: make NTLM disabled by default - cmake: drop support for CMake 3.17 and older - lib: add thread pool and queue - lib: drop support for < c-ares 1.16.0 - lib: make SMB support opt-in - multi.h: add CURLMNWC_CLEAR_ALL - rtmp: drop support Bugfixes: - altsvc: cap the list at 5,000 entries - altsvc: drop the prio field from the struct - altsvc: skip expired entries read from file - asyn-ares: connect async - asyn-ares: drop orphaned variable references - asyn-ares: fix HTTPS-lookup when not on port 443 - asyn-thrdd: drop redundant `result` check - asyn-thrdd: fix clang-tidy unused value warning - async-ares: fix query counter handling - autotools: limit checksrc target to ignore non-repo test sources - badwords-all: exit with correct code on errors - badwords: combine the whitelisting into a single regex - badwords: detect 'the the' and 'with with' - badwords: only check comments and strings in source code - badwords: rework exceptions, fix many of them - boringssl: fix more coexist cases with Schannel/WinCrypt - build: adjust/add casts to fix `-Wformat-signedness` - build: assume `snprintf()` in `mprintf`, drop feature check - build: compiler warning silencing tidy-ups - build: drop `openssl` module dependency for BoringSSL from `libcurl.pc` - build: drop duplicate `pthread.h` includes - build: drop redundant `USE_QUICHE` guards - build: enable `-Wimplicit-int-enum-cast` compiler warning, fix issues - build: fix `-Wformat-signedness` by adjusting printf masks - build: link `bcrypt.lib` via vcxproj files - build: skip detecting `pipe2()` for Apple targets - cf-https-connect: silence `-Wimplicit-int-enum-cast` with HTTPS-RR - cf-https-connect: silence `-Wimplicit-int-enum-cast` with HTTPS-RR - cf-ip-happy: limit concurrent attempts - cf-socket: avoid low risk integer overflow on ancient Solaris - cfilters: fix Curl_pollset_poll() return code mixup - clang-tidy: avoid assignments in `if` expressions - clang-tidy: enable more checks, fix fallouts - cmake: add CMake Config-based dependency detection - cmake: add CMake Config-based dependency detection for c-ares, wolfSSL - cmake: document functions used from Windows system DLLs - cmake: enable pthreads for BoringSSL/AWS-LC - cmake: resolve targets recursively when generating `libcurl.pc` - cmake: rework binutils ld hack to not read `LOCATION` property - cmake: silence bad library `Threads::Threads` warning - cmake: use `AIX` built-in variable (with CMake 4.0+) - config2setopts: make --capath work in proxy disabled builds - configure: fix `--with-ngtcp2=` option for crypto libs - configure: fix LibreSSL ngtcp2 1.15.0+ crypto lib selection logic - configure: prefer dependency-specific variables over `$withval` - configure: remove superfluous experimental warning for HTTP/3 - configure: silence useless clang warnings in C89 builds - configure: tidy up comments - connect: fix typo on error message - cookie: fix rejection when tabs in value - curl-wolfssl.m4: fix to use the correct value for pkg-config directory - curl.h: replace macros with C++-friendly method to enforce 3 args - curl_ctype.h: fix spelling in a couple of locally used macros - curl_get_line: error out on read errors - curl_get_line: fix potential infinite loop when filename is a directory - curl_ngtcp2: extend and update callbacks for 1.22.0+ - curl_ntlm_core: drop redundant PP condition - curl_ntlm_core: use wolfCrypt DES API with wolfSSL - curl_setup.h: drop stray/unused `USE_OPENSSL_QUIC` guard - curl_sha512_256: support delegating to wolfSSL API - curl_version_info.md: clarify age details - CURLOPT_HAPROXY_CLIENT_IP.md: mention assumption on data format - CURLOPT_RTSP_SESSION_ID.md: clarify reuse "dangers" - CURLOPT_RTSP_SESSION_ID.md: expand the comment - CURLO _[Truncated at 4000 characters — full notes: https://curl.se/ch/8.20.0.html]_