curl and libcurl 8.8.1 Public curl releases: 258 Command line options: 261 curl_easy_setopt() options: 305 Public functions in libcurl: 94 Contributors: 3187 This release includes the following changes: o curl: add --mptcp [29] o curl: support IP Type of Service / Traffic Class: --ip-tos [42] o gnutls: support CA caching [90] o noproxy: patterns need to be comma separated [75] o socket: support binding to interface *AND* IP [80] o urlapi: add CURLU_NO_GUESS_SCHEME [72] o wolfssl: support CA caching [73] This release includes the following bugfixes: o (lib)curl.rc: set debug flag also for `CURLDEBUG` and `UNITTESTS` [2] o asyn-thread: avoid using GetAddrInfoExW with impersonation [7] o autoconf: remove 'deeper' checks for `AC_CHECK_FUNCS` [23] o aws-sigv4: url encode the canonical path [55] o build: add more supported attributes to the IAR compiler [46] o build: untangle `CURLDEBUG` and `DEBUGBUILD` macros [9] o cd2nroff: use an empty "##" to signal end of .IP sequence [56] o cf-socket: improve SO_SNDBUF update for Winsock [27] o cfilters: make Curl_conn_connect always assign 'done' [60] o cmake: allow `ENABLE_CURLDEBUG=OFF` with `ENABLE_DEBUG=ON` [26] o cmake: always build unit tests with the `testdeps` target [20] o cmake: fix `-Wredundant-decls` in unity/mingw-w64 builds [15] o cmake: fix brotli lib order [3] o cmake: fix building in unity mode [4] o cmake: fix building with both md4 and md5 in unity mode [13] o cmake: fix test 1013 with websockets enabled and no TLS [47] o cmake: use `APPLE` instead of `CMAKE_SYSTEM_NAME` string [24] o cmake: whitespace, formatting/tidy-up in comments [25] o cmdline-opts/_PROTOCOLS.md: mention WS(S) [94] o cmdline-opts/ech.md: shorten the help text [93] o cmdline-opts/fail.md: expand and clarify [95] o cmdline-opts/interface.md: expand the documentation [66] o cmdline-opts: expand the parallel explanations [98] o cmdline: expand proxy option explanations [97] o configure: use `$EGREP` in place of `grep -E` [41] o curl-config: revert to backticks to support old target envs [88] o curl: make warnings and other messages aware of terminal width [58] o curl_multi_poll.md: expand the example with an custom file descriptor [21] o curl_url_set.md: libcurl only parses :// URLs [48] o DISTROS: add a link to the list archive [22] o docs/cmdline-opts: fix mail-auth example TLD typo [35] o docs/Makefile.am: make curl-config.1 install [14] o doh-insecure.md: expand [96] o examples/threaded-ssl: remove locking callback code [83] o examples: delete unused includes [10] o examples: fix compiling with MSVC [34] o get.d: clarify the explanation [32] o GHA: disable MQTT and WebSocket tests in Windows jobs [63] o GHA: disable TFTP tests in Windows jobs o GHA: enable tests 1139, 1177, 1477 on Windows [59] o GHA: unify http3 workflows into one [77] o gnutls: improve TLS shutdown [62] o http: write last header line late [44] o lib/v*: tidy up types and casts [64] o lib: fix gcc warning in certain debug builds [19] o lib: fix thread entry point to return `DWORD` on WinCE [85] o lib: prefer `var = time(NULL)` over `time(&var)` [52] o lib: tidy up types and casts [92] o libssh: remove CURLOPT_SSL_VERIFYHOST check [36] o managen: warn on excessively long help texts [87] o mbedtls: check version for cipher id [12] o mbedtls: send close-notify on close [11] o mbedtls: v3.6.0 workarounds [89] o multi: add multi->proto_hash, a key-value store for protocol data [37] o multi: fix multi_wait() timeout handling [51] o noproxy: test bad ipv6 net size first [82] o openssl/gnutls: rectify the TLS version checks for QUIC [61] o openssl: fix %-specifier in infof() call [57] o openSSL: fix hostname handling when using ECH [78] o openssl: stop duplicate ssl key logging for legacy OpenSSL [49] o pytest: add ftp upload tests [16] o request.md: language fix [70] o runtests: sort test IDs in summary lines [33] o sectransp: remove large cipher table [76] o sectransp: use common code for cipher suite lookup [54] o socket: change TCP keepalive from ms to seconds on DragonFly BSD [74] o socket: use SOCK_NONBLOCK to eliminate extra system call [86] o socketpair: add `eventfd` and use `SOCK_NONBLOCK` for `socketpair()` [81] o tcpkeepalive: support setting TCP keep-alive parameters on Solaris <11.4 [91] o test: add test1484, for HEAD with content [18] o test: add test1546, chunked not last transfer encoding [17] o tests: add pytest for --ciphers and --tls13-ciphers options [38] o tests: delete redundant `!MSDOS` guard [84] o tests: extend user/password parsing test1620 [40] o tests: log "Throwing away" messages before throwing away o tests: run with "--trace-config all" to provide even more info [6] o tests: test_17_ssl_use.py clarify mbedtls TLSv1.3 support [43] o tests: use exec when spawning nghttpx [45] o tidy-up: use consistent casing for Windows directories [28] o TODO: remove some old, clarify, add something [31] o tool_cb_hdr: return error for failed header writes [30] o tool_operate: avoid explicitly setting verifypeer to 1 [39] o transfer: conn close on paused upload [8] o transfer: remove curl_upload_refill_watermark, no longer used [50] o url: allow DoH transfers to override max connection limit [68] o vtls: deprioritize Secure Transport [71] o winbuild: fix PE version info debug flag [1] o winbuild: remove outdated WIN32 defines [5] o windows: fix UWP builds, add GHA job [79] o winsock: move SO_SNDBUF update into cf-socket [53] o x509asn1: add some common ECDSA OIDs [67] o x509asn1: fallback to dotted OID representation [69] This release includes the following known bugs: o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html) Planned upcoming removals include: o support for space-separated NOPROXY patterns See https://curl.se/dev/deprecate.html for details This release would not have looked like this without help, code, reports and advice from friends like these: Alejandro R. SedeƱo, Alexander Shtuchkin, Andy Pan, Ayesh Karunaratne, Bo Anderson, Christian Heusel, Christian Schmitz, Dan Fandrich, Daniel Gustafsson, Daniel Stenberg, dependabot[bot], Dorian Craps, edmcln on github, Eli Schwartz, Elliott Balsley, fds242 on github, Harry Sintonen, James Abbatiello, Jan Venekamp, Jonathan Matthews, Joseph Chen, Kai Pastor, kartatz, Keerthi Timmaraju, Lee Li, Luke Hamburg, Marcel Raad, Matthias Gatto, Matthieu Baerts, Matt Jolly, Olivier Bonaventure, Orgad Shaneh, Pavel Pavlov, pszlazak on github, Ray Satiro, renovate[bot], Sebastian Andersson, Sergey Bronnikov, Stefan Eissing, Stephen Farrell, Tatsuhiro Tsujikawa, Viktor Szakats, vvb2060 (43 contributors) References to bug reports and discussions on issues: [1] = https://curl.se/bug/?i=13739 [2] = https://curl.se/bug/?i=13730 [3] = https://curl.se/bug/?i=13761 [4] = https://curl.se/bug/?i=13751 [5] = https://curl.se/bug/?i=13739 [6] = https://curl.se/bug/?i=13791 [7] = https://curl.se/bug/?i=13612 [8] = https://curl.se/bug/?i=13740 [9] = https://curl.se/bug/?i=13718 [10] = https://curl.se/bug/?i=13785 [11] = https://curl.se/bug/?i=13745 [12] = https://curl.se/bug/?i=13749 [13] = https://curl.se/bug/?i=13737 [14] = https://curl.se/bug/?i=13741 [15] = https://curl.se/bug/?i=13705 [16] = https://curl.se/bug/?i=13734 [17] = https://curl.se/bug/?i=13736 [18] = https://curl.se/bug/?i=13735 [19] = https://curl.se/bug/?i=13800 [20] = https://curl.se/bug/?i=13698 [21] = https://curl.se/bug/?i=13842 [22] = https://curl.se/bug/?i=13843 [23] = https://bugs.gentoo.org/932827 [24] = https://curl.se/bug/?i=13713 [25] = https://curl.se/bug/?i=13711 [26] = https://curl.se/bug/?i=13792 [27] = https://curl.se/bug/?i=13827 [28] = https://curl.se/bug/?i=13832 [29] = https://curl.se/bug/?i=13278 [30] = https://curl.se/bug/?i=13836 [31] = https://curl.se/bug/?i=13788 [32] = https://curl.se/bug/?i=13706 [33] = https://curl.se/bug/?i=13774 [34] = https://curl.se/bug/?i=13771 [35] = https://curl.se/bug/?i=13784 [36] = https://curl.se/bug/?i=13767 [37] = https://curl.se/bug/?i=13345 [38] = https://curl.se/bug/?i=13530 [39] = https://curl.se/bug/?i=13704 [40] = https://curl.se/bug/?i=13756 [41] = https://curl.se/bug/?i=13780 [42] = https://curl.se/bug/?i=13606 [43] = https://curl.se/bug/?i=13779 [44] = https://curl.se/bug/?i=13752 [45] = https://curl.se/bug/?i=13772 [46] = https://curl.se/bug/?i=13744 [47] = https://curl.se/bug/?i=13769 [48] = https://curl.se/bug/?i=13821 [49] = https://curl.se/bug/?i=13683 [50] = https://curl.se/bug/?i=13764 [51] = https://curl.se/bug/?i=13782 [52] = https://curl.se/bug/?i=13815 [53] = https://curl.se/bug/?i=13763 [54] = https://curl.se/bug/?i=13521 [55] = https://curl.se/bug/?i=13754 [56] = https://curl.se/bug/?i=13803 [57] = https://curl.se/bug/?i=13816 [58] = https://curl.se/bug/?i=13804 [59] = https://curl.se/bug/?i=13817 [60] = https://curl.se/bug/?i=13884 [61] = https://curl.se/bug/?i=13799 [62] = https://curl.se/bug/?i=13790 [63] = https://curl.se/bug/?i=13860 [64] = https://curl.se/bug/?i=13622 [66] = https://curl.se/bug/?i=13882 [67] = https://curl.se/bug/?i=13857 [68] = https://curl.se/mail/lib-2024-06/0001.html [69] = https://curl.se/bug/?i=13845 [70] = https://curl.se/bug/?i=13854 [71] = https://curl.se/bug/?i=13547 [72] = https://curl.se/bug/?i=13616 [73] = https://curl.se/bug/?i=13786 [74] = https://curl.se/bug/?i=13847 [75] = https://curl.se/bug/?i=13789 [76] = https://curl.se/bug/?i=13823 [77] = https://curl.se/bug/?i=13841 [78] = https://curl.se/bug/?i=13818 [79] = https://curl.se/bug/?i=13870 [80] = https://curl.se/bug/?i=13719 [81] = https://curl.se/bug/?i=13874 [82] = https://curl.se/bug/?i=13902 [83] = https://curl.se/bug/?i=13851 [84] = https://curl.se/bug/?i=13878 [85] = https://curl.se/bug/?i=13877 [86] = https://curl.se/bug/?i=13855 [87] = https://curl.se/bug/?i=13895 [88] = https://curl.se/bug/?i=13871 [89] = https://curl.se/bug/?i=13653 [90] = https://curl.se/bug/?i=13795 [91] = https://curl.se/bug/?i=13864 [92] = https://curl.se/bug/?i=13862 [93] = https://curl.se/bug/?i=13894 [94] = https://curl.se/bug/?i=13891 [95] = https://curl.se/bug/?i=13890 [96] = https://curl.se/bug/?i=13889 [97] = https://curl.se/bug/?i=13887 [98] = https://curl.se/bug/?i=13886