curl and libcurl 8.13.0 Public curl releases: 266 Command line options: 267 curl_easy_setopt() options: 306 Public functions in libcurl: 96 Contributors: 3354 This release includes the following changes: o curl: add write-out variable 'tls_earlydata' [79] o rustls: add support for CERTINFO [106] o tool_getparam: make --url support a file with URLs [104] o var: add a '64dec' function that can base64 decode a string [78] o wolfssl: tls early data support [50] This release includes the following bugfixes: o addrinfo: add curl macro to avoid redefining foreign symbols [29] o asyn-thread: avoid the separate 'struct resdata' alloc [20] o asyn-thread: avoid the separate curl_mutex_t alloc [6] o asyn-thread: do not allocate thread_data separately [21] o asyn-thread: remove 'status' from struct Curl_async [36] o build: add Windows CE / CeGCC support, with CI jobs [87] o build: drop unused `getpart` tool [107] o build: enable -Wjump-misses-init for GCC 4.5+ [62] o build: fix compiler warnings in feature detections [39] o build: set `HAVE_WRITABLE_ARGV` for Apple cross-builds [8] o build: silence bogus `-Wconversion` warnings with gcc 5.1-5.4 [68] o c-ares: error out for unsupported versions, drop unused macros [85] o ca-native.md: sync with CURLSSLOPT_NATIVE_CA [72] o cf-socket: deduplicate Windows Vista detection [11] o client writer: handle pause before deocding [61] o cmake: `SHARE_LIB_OBJECT=ON` requires CMake 3.12 or newer [46] o cmake: add pre-fill for Unix, enable in GHA/macos, verify pre-fills [42] o cmake: allow empty `IMPORT_LIB_SUFFIX`, add suffix collision detection [41] o cmake: avoid `-Wnonnull` warning in `HAVE_FSETXATTR_5` detection [81] o cmake: disable HTTPS-proxy as a feature if proxy is disabled [77] o cmake: drop `CURL_DISABLE_TESTS` option [94] o cmake: drop `HAVE_IN_ADDR_T` from pre-fill too o cmake: drop two stray TLS feature checks for wolfSSL [9] o cmake: fix `HAVE_ATOMIC`/`HAVE_STDATOMIC` pre-fill for clang-cl [28] o cmake: fix ECH detection in custom-patched OpenSSL [32] o cmake: hide empty `MINGW64_VERSION` output for mingw32ce [114] o cmake: mention 'insecure' in the debug build warning [15] o cmake: misc tidy-ups [38] o cmake: pre-fill known type sizes for Windows OSes [100] o cmake: restrict static CRT builds to static curl exe, test in CI [113] o cmake: sync cutoff version with autotools for picky option `-ftree-vrp` [99] o cmake: sync OpenSSL(-fork) feature checks with `./configure` [49] o CODE_STYLE: readability and banned functions [35] o configure: silence compiler warnings in feature checks, drop duplicates [86] o configure: use `curl_cv_apple` variable [40] o conn: fix connection reuse when SSL is optional [54] o contributors.sh: lowercase 'github' for consistency [52] o contrithanks.sh: update docs/THANKS in place [119] o cookie: do prefix matching case-sensitively [82] o cookie: minor parser simplification [58] o cookie: simplify invalid_octets() [24] o curl.h: change some enums to defines with L suffix [84] o curl_msh3: remove verify bypass from DEBUGBUILDs [43] o curl_trc: fix build with CURL_DISABLE_VERBOSE_STRINGS [109] o CURLMOPT_SOCKETFUNCTION.md: add advice for socket callback invocation[69] o CURLOPT_HTTPHEADER.md: add comments to the example [90] o CURLOPT_HTTPHEADER.md: rephrases [108] o docs: add FD_ZERO to curl_multi_fdset example [19] o docs: bump `rustls` to 0.14.1 [111] o docs: correct argument names & URL redirection [4] o eventfd: allow use on all CPUs [93] o gnutls: fix connection state check on handshake [80] o hash: use single linked list for entries [57] o hostip: make CURLOPT_RESOLVE support replacing IPv6 addresses [47] o HTTP3.md: only speak about minimal versions [18] o http: convert parsers to strparse [48] o http: fix NTLM info message typo [22] o http: fix the auth check [88] o http: make the RTSP version check stricter [73] o http: negotiation and room for alt-svc/https rr to navigate [64] o http: version negotiation [45] o http_aws_sigv4: use strparse more for parsing [55] o https-rr: implementation improvements [44] o httpsrr: fix port detection [51] o httpsrr: fix the HTTPS-RR threaded-resolver build combo [67] o INSTALL-CMAKE.md: CMake usage updates [101] o INSTALL-CMAKE.md: mention `ZLIB_USE_STATIC_LIBS` [112] o lib: better optimized casecompare() and ncasecompare() [3] o lib: simplify more white space loops [60] o lib: strtoofft.h header cleanup [17] o lib: use Curl_str_* instead of strtok_r() [59] o lib: use Curl_str_number() for parsing decimal numbers [13] o libtest/libprereq.c: set CURLOPT_FOLLOWLOCATION with a long [89] o managen: correct the warning for un-escaped '<' and '>' [1] o msvc: drop support for VS2005 and older [96] o multi: event based rework [74] o openssl: check return value of X509_get0_pubkey [105] o openssl: drop support for old OpenSSL/LibreSSL versions [95] o openssl: remove bad `goto`s into other scope [63] o runtests: drop recognizing 'winssl' as Schannel [102] o runtests: drop ref to unused external function o runtests: recognize AWS-LC as OpenSSL [103] o runtests: support multi-target cmake, drop workarounds from CI [116] o schannel: deduplicate Windows Vista detection [98] o schannel: enable ALPN support under WINE 6.0+ [92] o schannel: enable ALPN with MinGW, fix ALPN for UWP builds [71] o schannel: guard ALPN init code to ALPN builds [91] o scripts/managen: fix option 'single' [31] o scripts/managen: fix parsing of markdown code sections [30] o setopt: remove unnecesary void pointer typecasts [76] o ssh: consider sftp quote commands case sensitive [33] o ssl session cache: add exportable flag [56] o strparse: make Curl_str_number() return error for no digits [14] o strparse: switch the API to work on 'const char *' [2] o strparse: switch to curl_off_t as base data type [7] o tests: fix enum/int confusion, fix autotools `CFLAGS` for `servers` [27] o tidy-up: align MSYS2/Cygwin codepaths, follow Cygwin `MAX_PID` bump [97] o tidy-up: delete, comment or scope C macros reported unused [16] o tidy-up: drop unused `CURL_INADDR_NONE` macro and `in_addr_t` type [26] o tidy-up: use `CURL_ARRAYSIZE()` [37] o timediff: fix comment for curlx_mstotv() [25] o timediff: remove unnecessary double typecast [53] o tool_getparam: clear sensitive arguments better [66] o tool_operate: fail SSH transfers without server auth [70] o urlapi: simplify junkscan [23] o variable.md: clarify 'trim' example [12] o windows: drop code and curl manifest targeting W2K and older [115] o wolfssh: retrieve the error using wolfSSH_get_error [5] o wolfssl: fix CA certificate multiple location import [34] o wolfssl: warn if CA native import option is ignored [65] o wolfssl: when using PQ KEM, use ML-KEM, not Kyber [10] 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 Support for the msh3 HTTP/3 backend o The winbuild build system o TLS libraries not supporting TLS 1.3 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: Anthony Hu, Dan Fandrich, Daniel Stenberg, dependabot[bot], Derek Huang, Dexter Gerig, Harry Sintonen, Jeremy Drake, John Bampton, Joseph Chen, kayrus on github, kriztalz, Laurențiu Nicola, lf- on github, Marcel Raad, Mark Phillips, qhill on github, Ray Satiro, renovate[bot], rmg-x on github, RubisetCie on github, Sergey, Stefan Eissing, Tianyi Song, Timo Tijhof, Viktor Szakats, Yedaya Katsman, Zenju on github (28 contributors) References to bug reports and discussions on issues: [1] = https://curl.se/bug/?i=16315 [2] = https://curl.se/bug/?i=16316 [3] = https://curl.se/bug/?i=16311 [4] = https://curl.se/bug/?i=16334 [5] = https://curl.se/bug/?i=16335 [6] = https://curl.se/bug/?i=16323 [7] = https://curl.se/bug/?i=16336 [8] = https://curl.se/bug/?i=16338 [9] = https://curl.se/bug/?i=16339 [10] = https://curl.se/bug/?i=16337 [11] = https://curl.se/bug/?i=16400 [12] = https://curl.se/bug/?i=16346 [13] = https://curl.se/bug/?i=16319 [14] = https://curl.se/bug/?i=16319 [15] = https://curl.se/bug/?i=16327 [16] = https://curl.se/bug/?i=16279 [17] = https://curl.se/bug/?i=16331 [18] = https://curl.se/bug/?i=16320 [19] = https://curl.se/bug/?i=16325 [20] = https://curl.se/bug/?i=16321 [21] = https://curl.se/bug/?i=16241 [22] = https://curl.se/bug/?i=16305 [23] = https://curl.se/bug/?i=16307 [24] = https://curl.se/bug/?i=16306 [25] = https://curl.se/bug/?i=16310 [26] = https://curl.se/bug/?i=16318 [27] = https://curl.se/bug/?i=16314 [28] = https://curl.se/bug/?i=16313 [29] = https://curl.se/bug/?i=16274 [30] = https://curl.se/bug/?i=16345 [31] = https://curl.se/bug/?i=16344 [32] = https://curl.se/bug/?i=16354 [33] = https://curl.se/bug/?i=16382 [34] = https://curl.se/bug/?i=16391 [35] = https://curl.se/bug/?i=16349 [36] = https://curl.se/bug/?i=16347 [37] = https://curl.se/bug/?i=16381 [38] = https://curl.se/bug/?i=16238 [39] = https://curl.se/bug/?i=16287 [40] = https://curl.se/bug/?i=16340 [41] = https://curl.se/bug/?i=16324 [42] = https://curl.se/bug/?i=15841 [43] = https://curl.se/bug/?i=16342 [44] = https://curl.se/bug/?i=16132 [45] = https://curl.se/bug/?i=16100 [46] = https://curl.se/bug/?i=16375 [47] = https://curl.se/bug/?i=16357 [48] = https://curl.se/bug/?i=16436 [49] = https://curl.se/bug/?i=16352 [50] = https://curl.se/bug/?i=16167 [51] = https://curl.se/bug/?i=16409 [52] = https://curl.se/bug/?i=16443 [53] = https://curl.se/bug/?i=16367 [54] = https://curl.se/bug/?i=16384 [55] = https://curl.se/bug/?i=16366 [56] = https://curl.se/bug/?i=16322 [57] = https://curl.se/bug/?i=16351 [58] = https://curl.se/bug/?i=16362 [59] = https://curl.se/bug/?i=16360 [60] = https://curl.se/bug/?i=16363 [61] = https://curl.se/bug/?i=16280 [62] = https://curl.se/bug/?i=16252 [63] = https://curl.se/bug/?i=16356 [64] = https://curl.se/bug/?i=16117 [65] = https://curl.se/bug/?i=16417 [66] = https://curl.se/bug/?i=16396 [67] = https://curl.se/bug/?i=16399 [68] = https://curl.se/bug/?i=16398 [69] = https://curl.se/bug/?i=16441 [70] = https://curl.se/bug/?i=16205 [71] = https://curl.se/bug/?i=16385 [72] = https://curl.se/bug/?i=16373 [73] = https://curl.se/bug/?i=16435 [74] = https://curl.se/bug/?i=16308 [76] = https://curl.se/bug/?i=16426 [77] = https://curl.se/bug/?i=16434 [78] = https://curl.se/bug/?i=16330 [79] = https://curl.se/bug/?i=15956 [80] = https://curl.se/bug/?i=16423 [81] = https://curl.se/bug/?i=16427 [82] = https://curl.se/bug/?i=16494 [84] = https://curl.se/bug/?i=16482 [85] = https://curl.se/bug/?i=16407 [86] = https://curl.se/bug/?i=16377 [87] = https://curl.se/bug/?i=15975 [88] = https://curl.se/bug/?i=16419 [89] = https://curl.se/bug/?i=16487 [90] = https://curl.se/bug/?i=16488 [91] = https://curl.se/bug/?i=16420 [92] = https://curl.se/bug/?i=16393 [93] = https://curl.se/bug/?i=16277 [94] = https://curl.se/bug/?i=16134 [95] = https://curl.se/bug/?i=16104 [96] = https://curl.se/bug/?i=16004 [97] = https://curl.se/bug/?i=16217 [98] = https://curl.se/bug/?i=16408 [99] = https://curl.se/bug/?i=16478 [100] = https://curl.se/bug/?i=16464 [101] = https://curl.se/bug/?i=16329 [102] = https://curl.se/bug/?i=16467 [103] = https://curl.se/bug/?i=16466 [104] = https://curl.se/bug/?i=16099 [105] = https://curl.se/bug/?i=16468 [106] = https://curl.se/bug/?i=16459 [107] = https://curl.se/bug/?i=16460 [108] = https://curl.se/bug/?i=16461 [109] = https://curl.se/bug/?i=16462 [111] = https://curl.se/bug/?i=16446 [112] = https://curl.se/bug/?i=16457 [113] = https://curl.se/bug/?i=16456 [114] = https://curl.se/bug/?i=16455 [115] = https://curl.se/bug/?i=16453 [116] = https://curl.se/bug/?i=16452 [119] = https://curl.se/bug/?i=16448