curl and libcurl 8.21.0 Public curl releases: 275 Command line options: 273 curl_easy_setopt() options: 308 Public functions in libcurl: 100 Authors: 1465 Contributors: 3668 This release includes the following changes: o lib: drop support for CURLAUTH_DIGEST_IE [4] This release includes the following bugfixes: o asyn-thrdd: fix result processing without wakeup socketpair [2] o cmake: auto-select static nghttp2/nghttp3/ngtcp2 Config [8] o cmake: fix zstd CMake config name [5] o cookie: simplify strstore(), remove outdated comment [12] o CURLOPT_ECH.md: simplify the description language [18] o CURLOPT_HAPROXYPROTOCOL.md: only sent for newly setup connections [32] o ECH: cleanups [20] o ftp: avoid accessing EPSV response one byte past the NULL [9] o ftp: remove 2 Curl_resolv_blocking() calls [30] o ftp: remove bits.ftp_use_control_ssl [28] o gtls: fix some typos [15] o ldap: fix minor leak on write callback error [24] o lib: two minor typos [16] o libcurl-easy.md: minor clarifications [19] o mbedtls: null terminate the private key blob [36] o mqtt: validate PINGRESP and DISCONNECT have remaining_length == 0 [7] o schannel_verify: avoid out of blob access [11] o setopt: changing the proxy port is also a proxy change [23] o setopt: gate a few proxy TLS options by checking backend support [35] o show-headers.md: mention bold headers and --no-styled-output [17] o tests: fix unit1636 with --disable-progress-meter [37] o tool_formparse.c: fix two minor comment typos [25] o tool_formparse: polish error message + make two functions static [1] o tool_formparse: tool2curlparts is no longer recursive [33] o tool_urlglob: avoid overflow at end of range [22] o url: fix connection reuse for starttls protocols [27] o url: remove ssh_config_matches [31] o user-agent.md: mention double quotes too [3] o x509asn1: fix operator order in do_pubkey [21] This release includes the following known bugs: See https://curl.se/docs/knownbugs.html For all changes ever done in curl: See https://curl.se/changes.html Planned upcoming removals include: o local crypto implementations o NTLM o SMB o TLS-SRP support See https://curl.se/dev/deprecate.html This release would not have looked like this without help, code, reports and advice from friends like these: Andrew Nesbit, Dan Fandrich, Daniel Stenberg, dependabot[bot], Elise Vance, Jeremy Nicoll, Kai Pastor, parasol-aser, Raymond Steen, renovate[bot], Sollace on github, Stefan Eissing, Viktor Szakats (13 contributors) References to bug reports and discussions on issues: [1] = https://curl.se/bug/?i=21510 [2] = https://curl.se/bug/?i=21476 [3] = https://curl.se/mail/archive-2026-04/0029.html [4] = https://curl.se/bug/?i=21486 [5] = https://curl.se/bug/?i=21538 [7] = https://hackerone.com/reports/3702718 [8] = https://curl.se/bug/?i=21470 [9] = https://curl.se/bug/?i=21545 [11] = https://curl.se/bug/?i=21543 [12] = https://curl.se/bug/?i=21541 [15] = https://curl.se/bug/?i=21498 [16] = https://curl.se/bug/?i=21496 [17] = https://curl.se/bug/?i=21495 [18] = https://curl.se/bug/?i=21536 [19] = https://curl.se/bug/?i=21491 [20] = https://curl.se/bug/?i=21532 [21] = https://curl.se/bug/?i=21533 [22] = https://curl.se/bug/?i=21529 [23] = https://curl.se/bug/?i=21485 [24] = https://curl.se/bug/?i=21530 [25] = https://curl.se/bug/?i=21480 [27] = https://curl.se/bug/?i=21522 [28] = https://curl.se/bug/?i=21521 [30] = https://curl.se/bug/?i=21512 [31] = https://curl.se/bug/?i=21519 [32] = https://curl.se/bug/?i=21517 [33] = https://curl.se/bug/?i=21518 [35] = https://curl.se/bug/?i=21514 [36] = https://curl.se/bug/?i=21515 [37] = https://curl.se/bug/?i=21500