diff --git a/RELEASE-NOTES b/RELEASE-NOTES index d04d10fc1c..dc872260e1 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -4,8 +4,8 @@ curl and libcurl 8.22.0 Command line options: 278 curl_easy_setopt() options: 312 Public functions in libcurl: 100 - Authors: 1503 - Contributors: 3761 + Authors: 1506 + Contributors: 3765 This release includes the following changes: @@ -22,8 +22,13 @@ This release includes the following bugfixes: o autotools: minor fixes and improvements [33] o build: always use local `inet_pton()`/`inet_ntop()` implementations [56] o build: assume POSIX `select()` is available [166] + o build: clear `Require.private` for static-only builds in `libcurl.pc` [188] o build: drop superfluous `STDC_HEADERS` macro [51] o build: enable thread-safe `getaddrinfo()` for OpenBSD [35] + o build: minor debug option message fixes/improvements [200] + o build: require `!NDEBUG` for debug-enabled (aka development) builds [202] + o build: strip duplicate spaces after `Libs.private:` in `libcurl.pc` [191] + o build: strip trailing spaces from `libcurl.pc` [194] o cd2nroff: fix backslashes for 4-space indent lines [104] o cd2nroff: stricter checks for asterisks for italics [73] o cf-ngtcp2-cmn: de-duplicate `ngtcp2_conn_client_new()` call code [156] @@ -37,6 +42,7 @@ This release includes the following bugfixes: o cmake: replace `remove` command with `rm` and pass arg safely [11] o cmake: robustify base path in local file reference [15] o cmake: stop probing unused `float.h` for `STDC_HEADERS` [10] + o cmake: use built-in variable and target property dump functions with CMake 4.5+ [155] o configure: clarify --enable-debug option [133] o configure: fix misleading error messages [42] o configure: link `-lcrypt32` instead of `-lm` for wolfSSL on Windows [79] @@ -46,7 +52,9 @@ This release includes the following bugfixes: o conncache: apply multi limits to transfers using a shared pool [41] o conncache: conn upkeep/alive: move and enhance [152] o conncache: connection alive checks intervals [20] + o conncache: don't assume curl_off_t increment wrap-around [138] o connect: connection close tweaks [112] + o content_encoding: exact-match the identity transfer-coding token [189] o content_encoding: give a clear error on multi-member gzip [46] o cookie: refuse to load cookies set against a PSL domain [139] o CREDENTIALS.md: remove comment about empty user/pass [50] @@ -61,14 +69,17 @@ This release includes the following bugfixes: o CURLOPT_UNRESTRICTED_AUTH.md: 'Authorization', not 'Authentication' [74] o CURLSHOPT_(UN)SHARE.md: do not modify shares while in use [44] o DEPRECATE.md: HTTP/2 Server Push gets removed in March 2027 [174] + o dict: avoid busy-loop in sendf() when the socket is not writable [99] o dnsd: fix bounds check in `read_https_alpn_part()` [143] o docs/INTERNALS.md -> docs/DEPENDENCIES.md [127] + o DoH: improvements [203] o FTP: fix TLS session reuse on the data connection [80] o ftp: reject control bytes in ACCT and alternative-to-user [26] o gitignore: maintenance updates [170] o gopher: reject CR and LF in the selector [1] o h2: bootstrap max streams from multi handle if in use [132] o h3-proxy: fix NULL deref when non-:status header arrives before :status [167] + o header api: add guards [168] o HISTORY: add when c-ares support was introduced (2004) o hostip: only cache negative resolves for authoritative answers [16] o http2: make server push transfers inherit share from parent [81] @@ -80,6 +91,8 @@ This release includes the following bugfixes: o idn: restore `MultiByteToWideChar()` `MB_ERR_INVALID_CHARS` flag [103] o INSTALL.md: add building-from-source overview section [29] o INTERNALS.md: require quiche 0.20.0+ [101] + o keylog: add a random size argument to Curl_tls_keylog_write() [180] + o ldap: reject control characters in URL-decoded filter values [196] o ldap: support empty username and password [106] o ldap: support insecure mode for Windows native LDAP [3] o lib1587: fix gcc `-Wconversion` with LibreSSL on Windows, test in CI [6] @@ -89,6 +102,10 @@ This release includes the following bugfixes: o lib: fix 'ns' -> 'us' in trace messages [57] o lib: ratelimit timestamps [14] o lib: update mentions of the legacy "sessionhandle" [157] + o libcurl.pc: add `License` tag [190] + o libcurl.pc: add Copyright tag to the pkgconf file + o libcurl.pc: add the Link.ABI and Source tags [210] + o mbedtls: enforce verifyhost when verifypeer is disabled [208] o mbedtls: replace `memset()` with `psa_hash_operation_init()` [28] o md5: replace magic numbers with `MD5_DIGEST_LEN` [122] o mime.c: avoid integer overflow in base64 size calculation [105] @@ -96,7 +113,10 @@ This release includes the following bugfixes: o mod_curltest: fix compiler warnings [49] o mqtt: reject control bytes in the topic [43] o multi: forbid curl_easy_pause from within multi socket callback [22] + o multi: hold timeout values in 'int' instead of 'long' [165] o multi: remove #if 0'ed code that uses old struct [150] + o multi: use index list for expire timeouts [197] + o multihandle: move two struct fields [163] o ngtcp2: clean up after ngtcp2 in `curl_global_cleanup` [126] o ngtcp2: let verify failures win over expiry processing errors [98] o openldap: handle Curl_sasl_continue() returns better [45] @@ -105,6 +125,7 @@ This release includes the following bugfixes: o openssl: drop unused pre-OpenSSL3 `ctx_option_t` typedef [8] o openssl: prefer modern API flavors for `EVP_MD_CTX` new/free [47] o openssl: replace stray legacy API variant with `EVP_DigestInit_ex()` [27] + o progress: cleanup, less memory [179] o psl: update a comment to understandable English [162] o pytest: update two H3 tests for nghttp3 1.18.0+ [158] o quiche: set the max field section size [100] @@ -115,6 +136,7 @@ This release includes the following bugfixes: o runtests: restore `-k` option and actively process as no-op [32] o sasl: fix zero-length response encoding [36] o schannel: fix error check logic in `get_client_cert()` file reader [144] + o schannel: reuse the send buffer [195] o schannel: shut off experimental TLS 1.3 support for Win 10 [25] o scorecard: fix `max_upload` init value in `ul_parallel()` [142] o scripts/badwords.txt: do not recommend using 'will' in rewrites [141] @@ -149,6 +171,7 @@ This release includes the following bugfixes: o tests: target Python 3.8 as the minimum Python version o tests: use simpler constructions in Python code o thrdpool: retry failed thread starts while items wait [62] + o thrdqueue: drop name strdups from Curl_thrdq_create [181] o tidy-up: `TEXT()` vs `_TEXT()` vs `_T()` use (Windows) [102] o tidy-up: comments, messages, formatting [172] o tidy-up: drop redundant includes [110] @@ -163,13 +186,18 @@ This release includes the following bugfixes: o tool_cb_hdr: de-duplicate filename setter [24] o tool_cb_prg: avoid integer overflows [93] o tool_doswin: add stdin relay auth [130] + o tool_operate: limit `is_using_schannel()` call to Windows [140] + o tool_operate: only check for schannel if on windows [187] o tool_operate: remove call to abort() [23] o tool_xattr: add support for Windows alternate data stream [129] o typecheck-gcc: allow passing `char[]` as callback data [153] + o uint-bset: add slot0 member [173] o uint-spbset: reused empty chunks [67] o unit3214: fix to pass on systems with >=128-bit pointers [107] + o url: fix negotiate/ntlm connection reuse [176] o url: reject control codes in credentials set via CURLOPT [70] o urlapi: allow URLs to not have userauth (hostname) [92] + o urlapi: avoid dedotdotify() if possible [182] o urlapi: clear password buffer on error path [121] o urlapi: do not keep an internal port string [31] o urlapi: improved return codes [148] @@ -205,7 +233,7 @@ Planned upcoming removals include: This release would not have looked like this without help, code, reports and advice from friends like these: - 11soda11, 1rhino2 on hackerone, AlanKingPL, Alb3e3, Alhuda Khan, + 11soda11, 1rhino2 on hackerone, AlanKingPL, Alb3e3, Alhuda Khan, anupamme, Bartel Sielski, Bigtang on hackerone, Bill Mill, Bryan Henderson, Carlos Henrique Lima Melara, CatboxParadox, Christian Ullrich, Christoph Reiter, claudex on github, Collin Funk, Dan Fandrich, @@ -213,13 +241,14 @@ advice from friends like these: ed0d2b2ce19451f2 on github, Emmanuel Ugwu, Eunsoo Kim, firexinghe on github, Graham Campbell, Hendrik Hübner, HwangRock, itzTanos29, Joel Depooter, Johannes Schindelin, Keng-Yu Lin, kit-ty-kate on github, Laurent Sabourin, - Marcel Jamin, Matthew John Cheetham, Memduh Çelik, Patrick Monnerat, - Pavel Sobolev, pszemus on github, Ramesh Adhikari, Ray Satiro, renovate[bot], - Rito Rhymes, RMMoreton on github, Roger Leigh, Ross Burton, Sameeh Jubran, - Sam James, Samuel Dainard, Sergei Zimmerman, smaeljaish on hackerone, - Stefan Eissing, Stephan Zeisberg, stze on hackerone, Viktor Szakats, - xmoezzz on github, Yoshiro Yoneya - (56 contributors) + Marcel Jamin, Martin Dukek, Matthew John Cheetham, Max Dymond, Memduh Çelik, + Patrick Monnerat, Pavel Sobolev, pszemus on github, Ralf Mueller, + Ramesh Adhikari, Ray Satiro, renovate[bot], Rito Rhymes, RMMoreton on github, + Roger Leigh, Ross Burton, Sameeh Jubran, Sam James, Samuel Dainard, + Sergei Zimmerman, smaeljaish on hackerone, Stefan Eissing, Stephan Zeisberg, + stze on hackerone, Thomas Chauchefoin, Viktor Szakats, xmoezzz on github, + Yoshiro Yoneya + (61 contributors) References to bug reports and discussions on issues: @@ -321,6 +350,7 @@ References to bug reports and discussions on issues: [96] = https://curl.se/bug/?i=22323 [97] = https://curl.se/bug/?i=22318 [98] = https://curl.se/bug/?i=22317 + [99] = https://curl.se/bug/?i=22576 [100] = https://curl.se/bug/?i=22331 [101] = https://curl.se/bug/?i=22333 [102] = https://curl.se/bug/?i=22334 @@ -357,7 +387,9 @@ References to bug reports and discussions on issues: [134] = https://curl.se/bug/?i=22515 [135] = https://curl.se/bug/?i=22413 [137] = https://curl.se/bug/?i=22341 + [138] = https://curl.se/bug/?i=22569 [139] = https://curl.se/bug/?i=22500 + [140] = https://curl.se/bug/?i=22568 [141] = https://curl.se/bug/?i=22422 [142] = https://curl.se/bug/?i=22421 [143] = https://curl.se/bug/?i=22420 @@ -372,6 +404,7 @@ References to bug reports and discussions on issues: [152] = https://curl.se/bug/?i=21806 [153] = https://curl.se/bug/?i=22409 [154] = https://curl.se/bug/?i=22270 + [155] = https://curl.se/bug/?i=22566 [156] = https://curl.se/bug/?i=22401 [157] = https://curl.se/bug/?i=22463 [158] = https://curl.se/bug/?i=22397 @@ -379,11 +412,34 @@ References to bug reports and discussions on issues: [160] = https://curl.se/bug/?i=22460 [161] = https://curl.se/bug/?i=22505 [162] = https://curl.se/bug/?i=22502 + [163] = https://curl.se/bug/?i=22565 [164] = https://curl.se/bug/?i=22494 + [165] = https://curl.se/bug/?i=22564 [166] = https://curl.se/bug/?i=22448 [167] = https://curl.se/bug/?i=22449 + [168] = https://curl.se/bug/?i=22530 [169] = https://curl.se/bug/?i=22447 [170] = https://curl.se/bug/?i=22445 [171] = https://curl.se/bug/?i=22444 [172] = https://curl.se/bug/?i=22443 + [173] = https://curl.se/bug/?i=22561 [174] = https://curl.se/bug/?i=22490 + [176] = https://curl.se/bug/?i=22528 + [179] = https://curl.se/bug/?i=22547 + [180] = https://curl.se/bug/?i=22560 + [181] = https://curl.se/bug/?i=22555 + [182] = https://curl.se/bug/?i=22557 + [187] = https://curl.se/bug/?i=22552 + [188] = https://curl.se/bug/?i=22548 + [189] = https://curl.se/bug/?i=22541 + [190] = https://curl.se/bug/?i=22545 + [191] = https://curl.se/bug/?i=22544 + [194] = https://curl.se/bug/?i=22536 + [195] = https://curl.se/bug/?i=22540 + [196] = https://curl.se/bug/?i=22524 + [197] = https://curl.se/bug/?i=22473 + [200] = https://curl.se/bug/?i=22532 + [202] = https://curl.se/bug/?i=22484 + [203] = https://curl.se/bug/?i=22514 + [208] = https://curl.se/bug/?i=22475 + [210] = https://curl.se/bug/?i=22519