curl and libcurl 8.15.1 Public curl releases: 270 Command line options: 271 curl_easy_setopt() options: 308 Public functions in libcurl: 96 Contributors: 3474 This release includes the following changes: o build: bump minimum required mingw-w64 to v3.0 (from v1.0) [33] o curl: add --parallel-max-host to limit concurrent connections per host [81] o curl: add long option '--out-null' [101] o curl: make --retry-delay and --retry-max-time accept decimal seconds [112] o ip happy eyeballing: keep attempts running [80] o multi: add CURLMOPT_NETWORK_CHANGED to signal network changed [84] o netrc: use the NETRC environment variable (first) if set [70] o smtp: allow suffix behind a mail address for RFC 3461 [127] o tls: make default TLS version be minimum 1.2 [71] o tool_getparam: add support for `--longopt=value` [69] o vquic: drop msh3 [8] This release includes the following bugfixes: o _PROTOCOLS.md: mention file:// is only for absolute paths [102] o alpn: query filter [104] o bufq: add integer overflow checks before chunk allocations [108] o build: allow libtests/clients to use libcurl dependencies directly [87] o build: enable _GNU_SOURCE on GNU/Hurd [27] o build: extend GNU C guards to clang where applicable, fix fallouts [61] o build: fix build errors/warnings in rare configurations [7] o build: fix disable-verbose [48] o build: fix mingw-w64 version guard for mingw32ce [124] o build: link to Apple frameworks required by static wolfSSL [40] o build: tidy up compiler definition for tests [37] o cf-https-connect: delete unused declaration [15] o cmake: capitalize 'Rustls' in the config summary o cmake: defer building `unitprotos.h` till a test target needs it [75] o cmake: fix `ENABLE_UNIX_SOCKETS=OFF` with pre-fill enabled on unix o cmake: fix to disable Schannel and SSPI for non-Windows targets o cmake: keep websockets disabled if HTTP is disabled o cmake: make `runtests` targets build the curl tool [32] o cmake: omit linking duplicate/unnecessary libs to tests & examples [45] o CODE_STYLE: sync with recent `checksrc.pl` updates [49] o config-win32.h: do not use winsock2 `inet_ntop()`/`inet_pton()` [58] o connectdata: remove primary+secondary ip_quadruple [126] o connection: terminate after goaway [62] o contrithanks: fix for BSD `sed` tool [98] o curl/system.h: fix for GCC 3.3.x and older [38] o curl: make the URL indexes 64 bit [117] o curl: tool_read_cb fix of segfault [18] o curl_addrinfo: drop workaround for old-mingw [14] o curl_easy_ssls_export: make the example more clear [78] o curl_fnmatch, servers: drop local macros in favour of `sizeof()` [21] o curl_mime_data_cb.md: mention what datasize is for [107] o curl_ossl: extend callback table for nghttp3 1.11.0 [46] o curl_setup.h: move UWP detection after `config-win32.h` (revert) [51] o curl_setup.h: move UWP detection after `config-win32.h` [23] o CURLOPT: bump `CURL_REDIR_*` macros to `long` [110] o CURLOPT: bump `CURLALTSVC_*` macros to `long` [96] o CURLOPT: bump `CURLFTP*` enums to `long`, drop casts [54] o CURLOPT: bump `CURLHEADER_*` macros to `long`, drop casts [94] o CURLOPT: bump `CURLPROXY_*` enums to `long`, drop casts [95] o CURLOPT: drop redundant `long` casts [55] o delta: fix warnings, fix for non-GNU `date` tool [99] o DEPRECATE.md: drop support for Windows XP/2003 [31] o DEPRECATE.md: remove leftover "nothing" [57] o DISTROS.md: add Haiku [39] o docs/cmdline-opts: the auth types are not mutually exclusive [103] o docs: fix name in curl_easy_ssls_export man page [12] o doh: rename symbols to avoid collision with mingw-w64 headers [66] o easy handle: check validity on external calls [28] o gnutls: some small cleanups [41] o hmac: return error if init fails [2] o http: const up readonly H2_NON_FIELD [10] o http: silence `-Warray-bounds` with gcc 13+ [44] o inet_pton, inet_ntop: drop declarations when unused [59] o lib1560: fix memory leak when run without UTF-8 support [17] o lib1560: replace an `int` with `bool` [97] o lib517: use `LL` 64-bit literals & re-enable a test case (`time_t`) [100] o libssh: Use sftp_aio instead of sftp_async for sftp_recv [92] o libtests: update format strings to avoid casts, drop some macros [109] o memanalyze: fix warnings [22] o memory: make function overrides work reliably in unity builds [93] o multi event: remove only announced [25] o multi: don't insert a node into the splay tree twice [68] o multi: fix assert in multi_getsock() [53] o multi: process pending, one by one [90] o multi: replace remaining EXPIRE_RUN_NOW [67] o multissl: initialize when requesting a random number [30] o ngtcp2: extend callback tables for nghttp3 1.11.0 and ngtcp2 1.14.0 [47] o openssl: some small cleanups [42] o openssl: split cert_stuff into smaller sub functions [72] o parallel-max: bump the max value to 65535 [86] o pytest: add SOCKS tests and scoring [9] o pytest: increase server KeepAliveTimeout [26] o pytest: relax error check on test_07_22 [16] o schannel: assume `CERT_CHAIN_REVOCATION_CHECK_CHAIN` [114] o schannel: drop fallbacks for 4 macros [121] o schannel: drop fallbacks for unused `BCRYPT_*` macros [122] o schannel: drop old-mingw special case [77] o schannel: fix recent update for mingw32ce [123] o schannel: not supported with UWP, drop redundant code [105] o schannel: use if(result) like the code style says [125] o scripts: enable strict warnings in Perl where missing, fix fallouts [63] o scripts: fix two Perl uninitialized value warnings [60] o servers: convert two macros to scoped static const strings [89] o setopt: refactor out the booleans from setopt_long to setopt_bool [83] o socks: do_SOCKS5: Fix invalid buffer content on short send [43] o spacecheck.pl: when detecting unicode, mention line number [85] o test1148: drop redundant `LC_NUMBER=` env setting [13] o test1560: set locale/codeset with `LC_ALL` (was: `LANG`), test in CI [19] o test1560: skip some URLs if UTF-8 is not supported [34] o test1: raise alloc limits [11] o test428: re-enable for Windows [5] o tests: constify command-line arguments [82] o tests: drop unused `CURL_FORCEHOST` envs [36] o tests: fix perl warnings in http2-server, http3-server [119] o tests: fix prechecks to call the bundle libtest tool [120] o tests: fix UTF-8 detection, per-test `LC_*` settings, CI coverage [6] o tests: merge clients into libtests, drop duplicate code [76] o tests: set `CURL_ENTROPY` per test, not globally [35] o tests: unset some envs instead of blanking them [4] o tidy-up: `Curl_thread_create()` callback return type [20] o tidy-up: move literal to the right side of comparisons [65] o tidy-up: prefer `ifdef`/`ifndef` for single checks [64] o tls: CURLINFO_TLS_SSL_PTR testing [79] o tool_operate: avoid superfluous strdup'ing output [1] o unit-tests: build the unitprotos.h from here [73] o vquic-tls: fix SSL backend type for QUIC connections using gnutls [29] o windows: assume `ADDRESS_FAMILY`, drop feature checks [88] o windows: document toolchain support for `CERT_NAME_SEARCH_ALL_NAMES_FLAG` o windows: document toolchain support for some macros (cont.) [111] o windows: document toolchain support for some macros [113] o windows: drop `CRYPT_E_*` macro fallbacks, limit one to mingw32ce [118] o windows: drop two interim, single-use macros [106] o windows: drop unused `curlx/version_win32.h` includes [52] o windows: fix `if_nametoindex()` detection with autotools, improve with cmake [24] o windows: include `wincrypt.h` before `iphlpapi.h` for mingw-w64 <6 [50] o windows: target version macro tidy-ups [3] o ws: avoid NULL pointer deref in curl_ws_recv [91] 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 Supporting curl builds using VS2008 o The winbuild build system o Windows CE 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: Ahmad Gani, Alice Lee Poetics, Ammar Faizi, Berthin Torres Callañaupa, Caolán McNamara, Cole Leavitt, d1r3ct0r, Dan Fandrich, Daniel Stenberg, David Zhuang, Dominik Tomecki, Eshan Kelkar, Harry Sintonen, Kai Pastor, LoRd_MuldeR, nevakrien on github, Paul Gilmartin, Philippe Antoine, Pino Toscano, Qriist on github, Ray Satiro, renovate[bot], rm-rmonaghan on github, Schrijvers Luc, Sergio Durigan Junior, Stefan Eissing, Tal Regev, Todd Gamblin, Viktor Szakats, yaoy6 on github, ウさん (31 contributors) References to bug reports and discussions on issues: [1] = https://curl.se/bug/?i=17946 [2] = https://curl.se/bug/?i=18008 [3] = https://curl.se/bug/?i=17981 [4] = https://curl.se/bug/?i=17994 [5] = https://curl.se/bug/?i=17991 [6] = https://curl.se/bug/?i=17988 [7] = https://curl.se/bug/?i=17962 [8] = https://curl.se/bug/?i=17729 [9] = https://curl.se/bug/?i=17986 [10] = https://curl.se/bug/?i=17996 [11] = https://curl.se/bug/?i=18004 [12] = https://curl.se/bug/?i=17995 [13] = https://curl.se/bug/?i=17993 [14] = https://curl.se/bug/?i=18038 [15] = https://curl.se/bug/?i=18036 [16] = https://curl.se/bug/?i=18050 [17] = https://curl.se/bug/?i=17998 [18] = https://curl.se/bug/?i=17978 [19] = https://curl.se/bug/?i=17938 [20] = https://curl.se/bug/?i=17889 [21] = https://curl.se/bug/?i=17898 [22] = https://curl.se/bug/?i=18049 [23] = https://curl.se/bug/?i=17980 [24] = https://curl.se/bug/?i=17982 [25] = https://curl.se/bug/?i=17949 [26] = https://curl.se/bug/?i=17968 [27] = https://curl.se/bug/?i=17975 [28] = https://curl.se/bug/?i=17958 [29] = https://curl.se/bug/?i=17976 [30] = https://curl.se/bug/?i=17963 [31] = https://curl.se/bug/?i=18016 [32] = https://curl.se/bug/?i=17967 [33] = https://curl.se/bug/?i=17984 [34] = https://curl.se/bug/?i=17933 [35] = https://curl.se/bug/?i=17971 [36] = https://curl.se/bug/?i=17972 [37] = https://curl.se/bug/?i=17768 [38] = https://curl.se/bug/?i=17951 [39] = https://curl.se/bug/?i=17953 [40] = https://github.com/microsoft/vcpkg/pull/46444#pullrequestreview-3026575393 [41] = https://curl.se/bug/?i=17941 [42] = https://curl.se/bug/?i=17940 [43] = https://curl.se/bug/?i=17942 [44] = https://curl.se/bug/?i=18030 [45] = https://curl.se/bug/?i=17696 [46] = https://curl.se/bug/?i=18026 [47] = https://curl.se/bug/?i=18019 [48] = https://curl.se/bug/?i=18053 [49] = https://curl.se/bug/?i=18015 [50] = https://curl.se/bug/?i=18012 [51] = https://curl.se/bug/?i=18014 [52] = https://curl.se/bug/?i=18011 [53] = https://curl.se/bug/?i=18046 [54] = https://curl.se/bug/?i=17797 [55] = https://curl.se/bug/?i=17791 [57] = https://curl.se/bug/?i=18044 [58] = https://curl.se/bug/?i=18045 [59] = https://curl.se/bug/?i=18043 [60] = https://curl.se/bug/?i=18047 [61] = https://curl.se/bug/?i=17955 [62] = https://curl.se/bug/?i=17884 [63] = https://curl.se/bug/?i=17877 [64] = https://curl.se/bug/?i=18018 [65] = https://curl.se/bug/?i=17876 [66] = https://curl.se/bug/?i=18041 [67] = https://curl.se/bug/?i=17883 [68] = https://curl.se/bug/?i=18005 [69] = https://curl.se/bug/?i=17789 [70] = https://curl.se/bug/?i=17712 [71] = https://curl.se/bug/?i=17894 [72] = https://curl.se/bug/?i=18081 [73] = https://curl.se/bug/?i=18088 [75] = https://curl.se/bug/?i=18086 [76] = https://curl.se/bug/?i=18079 [77] = https://curl.se/bug/?i=18084 [78] = https://curl.se/bug/?i=18117 [79] = https://curl.se/bug/?i=18066 [80] = https://curl.se/bug/?i=18105 [81] = https://curl.se/bug/?i=18052 [82] = https://curl.se/bug/?i=18076 [83] = https://curl.se/bug/?i=17887 [84] = https://curl.se/bug/?i=17225 [85] = https://curl.se/bug/?i=18120 [86] = https://curl.se/bug/?i=18068 [87] = https://curl.se/bug/?i=18069 [88] = https://curl.se/bug/?i=18057 [89] = https://curl.se/bug/?i=18067 [90] = https://curl.se/bug/?i=18017 [91] = https://curl.se/bug/?i=18065 [92] = https://curl.se/bug/?i=17440 [93] = https://curl.se/bug/?i=17827 [94] = https://curl.se/bug/?i=18055 [95] = https://curl.se/bug/?i=18054 [96] = https://curl.se/bug/?i=18063 [97] = https://curl.se/bug/?i=18064 [98] = https://curl.se/bug/?i=18062 [99] = https://curl.se/bug/?i=18061 [100] = https://curl.se/bug/?i=18032 [101] = https://curl.se/bug/?i=17800 [102] = https://curl.se/bug/?i=18060 [103] = https://curl.se/bug/?i=18059 [104] = https://curl.se/bug/?i=17947 [105] = https://curl.se/bug/?i=18116 [106] = https://curl.se/bug/?i=18114 [107] = https://curl.se/bug/?i=18115 [108] = https://curl.se/bug/?i=18112 [109] = https://curl.se/bug/?i=18106 [110] = https://curl.se/bug/?i=18110 [111] = https://curl.se/bug/?i=18113 [112] = https://curl.se/bug/?i=18109 [113] = https://curl.se/bug/?i=18085 [114] = https://curl.se/bug/?i=18108 [117] = https://curl.se/bug/?i=18096 [118] = https://curl.se/bug/?i=18092 [119] = https://curl.se/bug/?i=18100 [120] = https://curl.se/bug/?i=18099 [121] = https://curl.se/bug/?i=18093 [122] = https://curl.se/bug/?i=18091 [123] = https://curl.se/bug/?i=18097 [124] = https://curl.se/bug/?i=18095 [125] = https://curl.se/bug/?i=18094 [126] = https://curl.se/bug/?i=17960 [127] = https://curl.se/bug/?i=16643