| curl and libcurl 8.8.0 |
| |
| Public curl releases: 257 |
| Command line options: 259 |
| curl_easy_setopt() options: 305 |
| Public functions in libcurl: 94 |
| Contributors: 3159 |
| |
| This release includes the following changes: |
| |
| o curl_version_info: provide librtmp version [73] |
| o file: add support for directory listings [63] |
| o idn: add native AppleIDN (icucore) support for macOS/iOS [95] |
| o lib: add curl_multi_waitfds [34] |
| o mbedTLS: implement CURLOPT_SSL_CIPHER_LIST option [103] |
| o NTLM_WB: drop support [67] |
| o TLS: add support for ECH (Encrypted Client Hello) [109] |
| o urlapi: add CURLU_GET_EMPTY for empty queries and fragments [111] |
| |
| This release includes the following bugfixes: |
| |
| o bearssl: fix compiler warnings [43] |
| o build: prefer `USE_IPV6` macro internally (was: `ENABLE_IPV6`) [85] |
| o build: remove MacOSX-Framework script [60] |
| o cd2nroff/manage: use UTC when SOURCE_DATE_EPOCH is set [36] |
| o cf-socket: remove references to l_ip, l_port [9] |
| o ci: add curl-for-win builds: Linux MUSL, macOS, Windows [68] |
| o cmake: add `BUILD_EXAMPLES` option to build examples [128] |
| o cmake: add librtmp/rtmpdump option and detection [108] |
| o CMake: check fseeko after detecting HAVE_FILE_OFFSET_BITS [64] |
| o cmake: enable `-pedantic-errors` for clang when `CURL_WERROR=ON` [47] |
| o cmake: FindNGHTTP2 add static lib name to find_library call [141] |
| o cmake: fix `CURL_WERROR=ON` for old CMake and use it in GHA/linux-old [48] |
| o cmake: fixup `DEPENDS` filename [51] |
| o cmake: forward `USE_LIBRTMP` option to C [59] |
| o cmake: generate misc manpages and install `mk-ca-bundle.pl` [24] |
| o cmake: speed up libcurl doc building again [15] |
| o cmake: tidy-up to use `WORKING_DIRECTORY` [23] |
| o cmake: use namespaced custom target names [80] |
| o cmdline-docs: fix make install with configure --disable-docs [1] |
| o configure: make --disable-docs imply --disable-manual [2] |
| o content_encoding: brotli and others, pass through 0-length writes [5] |
| o content_encoding: ignore duplicate chunked encoding [137] |
| o contrithanks: honor `CURLWWW` variable [69] |
| o curl-confopts.m4: define CARES_NO_DEPRECATED when c-ares is used [17] |
| o curl: make --help adapt to the terminal width [11] |
| o curl: use curl_getenv instead of the curlx_ version [20] |
| o Curl_creader_read: init two variables to avoid using them uninited [99] |
| o curl_getdate.md: document two-digit year handling [127] |
| o curl_global_trace.md: shorten the description [29] |
| o curl_setup.h: detect 'inline' support [133] |
| o curl_sha512_256: do not use workaround for NetBSD when not needed [21] |
| o curl_sha512_256: fix detection of OpenSSL 1.1.1 or later [8] |
| o curl_url_get.md: clarify queries and fragments and CURLU_GET_EMPTY [105] |
| o CURLINFO_REQUEST_SIZE: fixed, add tests for transfer infos reported [52] |
| o cw-out: improved error handling [104] |
| o dist: `set -eu`, fix shellcheck, make reproducible and smaller tarballs [38] |
| o dist: add files missing from release tarball [53] |
| o dist: add reproducible dir entries to tarballs [56] |
| o dist: do not require Perl in `maketgz` [71] |
| o dist: remove the curl-config.1 from the tarball [28] |
| o dist: verify tarball reproducibility in CI [40] |
| o DISTROS: add patch and issues link for curl-for-win [110] |
| o DISTROS: Cygwin updates [44] |
| o dllmain: Call OpenSSL thread cleanup for Windows and Cygwin [114] |
| o doc: pytest `--repeat` -> `--count` [58] |
| o docs/cmdline-opts: invoke managen using a relative path [30] |
| o docs/MAIL-ETIQUETTE: convert to markdown [12] |
| o docs: add CURLOPT_NOPROGRESS to CURLOPT_XFERINFOFUNCTION example [61] |
| o docs: clarify CURLOPT_MAXFILESIZE and CURLOPT_MAXFILESIZE_LARGE [74] |
| o file: remove useless assignment [89] |
| o ftp: fix socket leak on rare error [102] |
| o GHA: add shellcheck job and fix warnings, shell tidy-ups [70] |
| o GHA: add valgrind to a wolfSSL build [37] |
| o GHA: on macOS remove $HOME/.curlrc [50] |
| o gnutls: lazy init the trust settings [75] |
| o http/2, http/3: decouple stream state from easy handle [92] |
| o http2 + ngtcp2: pass CURLcode errors from callbacks [94] |
| o http2: emit RST when client write fails [65] |
| o http3: quiche+ngtcp2 improvements [129] |
| o http: acknowledge a returned error code [123] |
| o http: reject HTTP major version switch mid connection [100] |
| o http: with chunked POST forced, disable length check on read callback [31] |
| o http_aws_sigv4: remove useless assignment [88] |
| o idn: make Curl_idnconvert_hostname() use Curl_idn_decode() [16] |
| o INSTALL-CMAKE.md: explain `cmake -G <generator-name>` [32] |
| o lib: add trace support for client reads and writes [45] |
| o lib: merge `ENABLE_QUIC` C macro into `USE_HTTP3` [84] |
| o lib: silence `-Wsign-conversion` in base64, strcase, mprintf [139] |
| o lib: silence warnings on comma misuse [91] |
| o lib: use `#error` instead of invalid syntax in `curl_setup_once.h` [49] |
| o lib: use multi instead of multi_easy for the active multi [41] |
| o libcurl-opts: mention pipelining less [33] |
| o libssh2: set length to 0 if strdup failed [6] |
| o m4: fix rustls pkg-config codepath [22] |
| o makefile: remove the sorting from the vc-ide action [42] |
| o maketgz: put docs/RELEASE-TOOL.md into the tarball [35] |
| o mbedtls: call mbedtls_ssl_setup() after RNG callback is set [66] |
| o mbedtls: cut off trailing newlines from debug logs [87] |
| o mbedtls: fix building with v3 in CMake Unity mode [107] |
| o mime: avoid using access() [125] |
| o misc: fix typos [62] |
| o mprintf: check fputc error rather than matching returned character [82] |
| o mqtt: when Curl_xfer_recv returns error, don't use nread [101] |
| o multi: avoid memory-leak risk [134] |
| o multi: introduce SETUP state for better timeouts [26] |
| o multi: multi_wait improvements [131] |
| o multi: remove the unused Curl_preconnect function [98] |
| o multi: timeout handles even without connection [81] |
| o openldap: create ldap URLs correctly for IPv6 addresses [19] |
| o openssl: do not set SSL_MODE_RELEASE_BUFFERS [10] |
| o OS400: fix shellcheck warnings in scripts [72] |
| o projects: drop MSVC project files for recent versions [79] |
| o quic: fixup duplicate static function name (for cmake unity) [77] |
| o quiche: expire all active transfers on connection close [116] |
| o RELEASE-PROCEDURE: mention an initial working build [7] |
| o request: make Curl_req_init return void [96] |
| o request: paused upload on completed download, assess connection [54] |
| o reuse: add copyright + license info to individual docs/*.md files [13] |
| o ROADMAP: remove completed entries, mention websocket |
| o rustls: remove incorrect SSLSUPP_TLS13_CIPHERSUITES flag [115] |
| o sendf: fix two typos in comments [90] |
| o sendf: useless assignment in cr_lc_read() [120] |
| o smtp: result of Curl_bufq_cread was not used [78] |
| o telnet: check return code from fileno() [112] |
| o tests/http: fix compiler warning [39] |
| o tests: add -q as first option when invoking curl for tests [97] |
| o tests: check caddy server version to match test expectations [106] |
| o tests: enable test 1117 for hyper [119] |
| o tests: fix feature case in test1481 [117] |
| o tls: fix SecureTransport + BearSSL cmake unity builds [113] |
| o tls: use shared init code for TCP+QUIC [57] |
| o tool: move tool_ftruncate64 to tool_util.c [138] |
| o tool_getparam: output warning for leading unicode quote character [14] |
| o tool_operate: don't truncate the etag save file by default [118] |
| o tool_operate: init vars unconditionally in post_per_transfer [124] |
| o tool_paramhlp: remove duplicate assign [121] |
| o tool_xattr: "guess" URL scheme if none is provided [3] |
| o tool_xattr: in debug builds, act normally if CURL_FAKE_XATTR is not set [4] |
| o transfer: remove useless assignment [122] |
| o url: do not URL decode proxy crendentials [55] |
| o url: fix use of an uninitialized variable [86] |
| o urlapi: allow setting port number zero [76] |
| o urlapi: fix relative redirects to fragment-only [83] |
| o urldata: remove fields not used depending on used features [46] |
| o vquic: use CURL_FORMAT_CURL_OFF_T for 64 bit printf output [18] |
| o vtls: TLS session storage overhaul [130] |
| o winbuild: add ENABLE_WEBSOCKETS option [93] |
| o winbuild: use $(RC) correctly [27] |
| o wolfssl: plug memory leak in wolfssl_connect_step2() [25] |
| |
| 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: |
| |
| Abdullah Alyan, blankie, Brian Inglis, Carlos Henrique Lima Melara, |
| Christian Schmitz, Chris Webb, Colin Leroy-Mira, Dagfinn Ilmari Mannsåker, |
| Dan Fandrich, Daniel J. H., Daniel McCarney, Daniel Stenberg, Dmitry Karpov, |
| Emanuele Torre, Evgeny Grin (Karlson2k), Fabian Keil, fuzzard, Gisle Vanem, |
| Gusted, hammlee96 on github, Harry Sintonen, Hongfei Li, Jan Macku, |
| Jan Venekamp, Jeff King, Jérôme Leclercq, Jiwoo Park, |
| Johann Sebastian Schicho, Jonatan Vela, Kailun Qin, kalvdans on github, |
| Keitagit-kun on github, Konstantin Kuzov, kpcyrd on github, Laramie Leavitt, |
| Marcel Raad, Matt Jolly, Mel Zuser, Michael Kaufmann, Michał Antoniak, |
| Patrick Monnerat, Paul Gilmartin, Paul Howarth, Pavel Kropachev, |
| Philip Heiduck, Rahul Krishna M, RainRat, Ray Satiro, riastradh on github, |
| Robert Moreton, Sanjay Pujare, Sergey Bronnikov, Sergey Ogryzkov, |
| Sergio Durigan Junior, southernedge on github, Stefan Eissing, |
| Stephen Farrell, Tal Regev, Tobias Stoeckmann, Toon Claes, Viktor Szakats, |
| zmcx16 on github |
| (62 contributors) |
| |
| References to bug reports and discussions on issues: |
| |
| [1] = https://curl.se/bug/?i=13198 |
| [2] = https://curl.se/bug/?i=13191 |
| [3] = https://curl.se/bug/?i=13205 |
| [4] = https://curl.se/bug/?i=13220 |
| [5] = https://curl.se/bug/?i=13209 |
| [6] = https://curl.se/bug/?i=13213 |
| [7] = https://curl.se/bug/?i=13216 |
| [8] = https://curl.se/bug/?i=13208 |
| [9] = https://curl.se/bug/?i=13210 |
| [10] = https://curl.se/bug/?i=13203 |
| [11] = https://curl.se/bug/?i=13171 |
| [12] = https://curl.se/bug/?i=13247 |
| [13] = https://curl.se/bug/?i=13245 |
| [14] = https://curl.se/bug/?i=13214 |
| [15] = https://curl.se/bug/?i=13207 |
| [16] = https://curl.se/bug/?i=13236 |
| [17] = https://curl.se/bug/?i=13240 |
| [18] = https://curl.se/bug/?i=13224 |
| [19] = https://curl.se/bug/?i=13228 |
| [20] = https://curl.se/bug/?i=13230 |
| [21] = https://curl.se/bug/?i=13225 |
| [22] = https://curl.se/bug/?i=13200 |
| [23] = https://curl.se/bug/?i=13206 |
| [24] = https://curl.se/bug/?i=13197 |
| [25] = https://curl.se/bug/?i=13272 |
| [26] = https://curl.se/bug/?i=13371 |
| [27] = https://curl.se/bug/?i=13267 |
| [28] = https://curl.se/bug/?i=13268 |
| [29] = https://curl.se/bug/?i=13263 |
| [30] = https://curl.se/bug/?i=13281 |
| [31] = https://curl.se/bug/?i=13229 |
| [32] = https://curl.se/bug/?i=13244 |
| [33] = https://curl.se/bug/?i=13254 |
| [34] = https://curl.se/bug/?i=13135 |
| [35] = https://curl.se/bug/?i=13239 |
| [36] = https://curl.se/bug/?i=13242 |
| [37] = https://curl.se/bug/?i=13274 |
| [38] = https://curl.se/bug/?i=13299 |
| [39] = https://curl.se/bug/?i=13301 |
| [40] = https://curl.se/bug/?i=13327 |
| [41] = https://curl.se/bug/?i=12665 |
| [42] = https://curl.se/bug/?i=13294 |
| [43] = https://curl.se/bug/?i=13290 |
| [44] = https://curl.se/bug/?i=13258 |
| [45] = https://curl.se/bug/?i=13223 |
| [46] = https://curl.se/bug/?i=13188 |
| [47] = https://curl.se/bug/?i=13286 |
| [48] = https://curl.se/bug/?i=13282 |
| [49] = https://curl.se/bug/?i=13287 |
| [50] = https://curl.se/bug/?i=13284 |
| [51] = https://curl.se/bug/?i=13283 |
| [52] = https://curl.se/bug/?i=13269 |
| [53] = https://curl.se/bug/?i=13346 |
| [54] = https://curl.se/bug/?i=13260 |
| [55] = https://curl.se/bug/?i=13265 |
| [56] = https://curl.se/bug/?i=13322 |
| [57] = https://curl.se/bug/?i=13172 |
| [58] = https://curl.se/bug/?i=13218 |
| [59] = https://curl.se/bug/?i=13364 |
| [60] = https://curl.se/bug/?i=13313 |
| [61] = https://curl.se/bug/?i=13348 |
| [62] = https://curl.se/bug/?i=13344 |
| [63] = https://curl.se/bug/?i=13137 |
| [64] = https://curl.se/bug/?i=13264 |
| [65] = https://curl.se/bug/?i=13292 |
| [66] = https://curl.se/bug/?i=13314 |
| [67] = https://curl.se/bug/?i=13249 |
| [68] = https://curl.se/bug/?i=13335 |
| [69] = https://curl.se/bug/?i=13315 |
| [70] = https://curl.se/bug/?i=13307 |
| [71] = https://curl.se/bug/?i=13310 |
| [72] = https://curl.se/bug/?i=13309 |
| [73] = https://curl.se/bug/?i=13368 |
| [74] = https://curl.se/bug/?i=13372 |
| [75] = https://curl.se/bug/?i=13339 |
| [76] = https://curl.se/bug/?i=13427 |
| [77] = https://curl.se/bug/?i=13332 |
| [78] = https://curl.se/bug/?i=13398 |
| [79] = https://curl.se/bug/?i=13311 |
| [80] = https://curl.se/bug/?i=13324 |
| [81] = https://curl.se/bug/?i=13276 |
| [82] = https://curl.se/bug/?i=13367 |
| [83] = https://curl.se/bug/?i=13394 |
| [84] = https://curl.se/bug/?i=13352 |
| [85] = https://curl.se/bug/?i=13349 |
| [86] = https://curl.se/bug/?i=13399 |
| [87] = https://curl.se/bug/?i=13321 |
| [88] = https://curl.se/bug/?i=13426 |
| [89] = https://curl.se/bug/?i=13425 |
| [90] = https://curl.se/bug/?i=13393 |
| [91] = https://curl.se/bug/?i=13392 |
| [92] = https://curl.se/bug/?i=13204 |
| [93] = https://curl.se/bug/?i=13232 |
| [94] = https://curl.se/bug/?i=13411 |
| [95] = https://curl.se/bug/?i=13246 |
| [96] = https://curl.se/bug/?i=13423 |
| [97] = https://curl.se/bug/?i=13387 |
| [98] = https://curl.se/bug/?i=13422 |
| [99] = https://curl.se/bug/?i=13419 |
| [100] = https://curl.se/bug/?i=13421 |
| [101] = https://curl.se/bug/?i=13418 |
| [102] = https://curl.se/bug/?i=13417 |
| [103] = https://curl.se/bug/?i=13442 |
| [104] = https://curl.se/bug/?i=13337 |
| [105] = https://curl.se/bug/?i=13407 |
| [106] = https://curl.se/bug/?i=13405 |
| [107] = https://curl.se/bug/?i=13377 |
| [108] = https://curl.se/bug/?i=13373 |
| [109] = https://curl.se/bug/?i=11922 |
| [110] = https://curl.se/bug/?i=13499 |
| [111] = https://curl.se/bug/?i=13396 |
| [112] = https://curl.se/bug/?i=13457 |
| [113] = https://curl.se/bug/?i=13450 |
| [114] = https://curl.se/bug/?i=12327 |
| [115] = https://curl.se/bug/?i=13452 |
| [116] = https://curl.se/bug/?i=13439 |
| [117] = https://curl.se/bug/?i=13445 |
| [118] = https://curl.se/bug/?i=13432 |
| [119] = https://curl.se/bug/?i=13436 |
| [120] = https://curl.se/bug/?i=13437 |
| [121] = https://curl.se/bug/?i=13433 |
| [122] = https://curl.se/bug/?i=13435 |
| [123] = https://curl.se/bug/?i=13434 |
| [124] = https://curl.se/bug/?i=13430 |
| [125] = https://curl.se/bug/?i=13497 |
| [127] = https://curl.se/bug/?i=13494 |
| [128] = https://curl.se/bug/?i=13491 |
| [129] = https://curl.se/bug/?i=13475 |
| [130] = https://curl.se/bug/?i=13386 |
| [131] = https://curl.se/bug/?i=13150 |
| [133] = https://curl.se/bug/?i=13355 |
| [134] = https://curl.se/bug/?i=13471 |
| [137] = https://curl.se/bug/?i=13451 |
| [138] = https://curl.se/bug/?i=13458 |
| [139] = https://curl.se/bug/?i=13467 |
| [141] = https://curl.se/bug/?i=13495 |