1curl and libcurl 8.8.0 2 3 Public curl releases: 257 4 Command line options: 259 5 curl_easy_setopt() options: 305 6 Public functions in libcurl: 94 7 Contributors: 3155 8 9This release includes the following changes: 10 11 o curl_version_info: provide librtmp version [73] 12 o file: add support for directory listings [63] 13 o idn: add native AppleIDN (icucore) support for macOS/iOS [95] 14 o lib: add curl_multi_waitfds [34] 15 o mbedTLS: implement CURLOPT_SSL_CIPHER_LIST option [103] 16 o NTLM_WB: drop support [67] 17 o TLS: add support for ECH (Encrypted Client Hello) [109] 18 o urlapi: add CURLU_GET_EMPTY for empty queries and fragments [111] 19 20This release includes the following bugfixes: 21 22 o bearssl: fix compiler warnings [43] 23 o build: prefer `USE_IPV6` macro internally (was: `ENABLE_IPV6`) [85] 24 o build: remove MacOSX-Framework script [60] 25 o cd2nroff/manage: use UTC when SOURCE_DATE_EPOCH is set [36] 26 o cf-socket: remove references to l_ip, l_port [9] 27 o ci: add curl-for-win builds: Linux MUSL, macOS, Windows [68] 28 o cmake: add librtmp/rtmpdump option and detection [108] 29 o CMake: check fseeko after detecting HAVE_FILE_OFFSET_BITS [64] 30 o cmake: enable `-pedantic-errors` for clang when `CURL_WERROR=ON` [47] 31 o cmake: fix `CURL_WERROR=ON` for old CMake and use it in GHA/linux-old [48] 32 o cmake: fixup `DEPENDS` filename [51] 33 o cmake: forward `USE_LIBRTMP` option to C [59] 34 o cmake: generate misc manpages and install `mk-ca-bundle.pl` [24] 35 o cmake: speed up libcurl doc building again [15] 36 o cmake: tidy-up to use `WORKING_DIRECTORY` [23] 37 o cmake: use namespaced custom target names [80] 38 o cmdline-docs: fix make install with configure --disable-docs [1] 39 o configure: make --disable-docs imply --disable-manual [2] 40 o content_encoding: brotli and others, pass through 0-length writes [5] 41 o contrithanks: honor `CURLWWW` variable [69] 42 o curl-confopts.m4: define CARES_NO_DEPRECATED when c-ares is used [17] 43 o curl: make --help adapt to the terminal width [11] 44 o curl: use curl_getenv instead of the curlx_ version [20] 45 o Curl_creader_read: init two variables to avoid using them uninited [99] 46 o curl_global_trace.md: shorten the description [29] 47 o curl_sha512_256: do not use workaround for NetBSD when not needed [21] 48 o curl_sha512_256: fix detection of OpenSSL 1.1.1 or later [8] 49 o curl_url_get.md: clarify queries and fragments and CURLU_GET_EMPTY [105] 50 o CURLINFO_REQUEST_SIZE: fixed, add tests for transfer infos reported [52] 51 o cw-out: improved error handling [104] 52 o dist: `set -eu`, fix shellcheck, make reproducible and smaller tarballs [38] 53 o dist: add files missing from release tarball [53] 54 o dist: add reproducible dir entries to tarballs [56] 55 o dist: do not require Perl in `maketgz` [71] 56 o dist: remove the curl-config.1 from the tarball [28] 57 o dist: verify tarball reproducibility in CI [40] 58 o DISTROS: Cygwin updates [44] 59 o dllmain: Call OpenSSL thread cleanup for Windows and Cygwin [114] 60 o doc: pytest `--repeat` -> `--count` [58] 61 o docs/cmdline-opts: invoke managen using a relative path [30] 62 o docs/MAIL-ETIQUETTE: convert to markdown [12] 63 o docs: add CURLOPT_NOPROGRESS to CURLOPT_XFERINFOFUNCTION example [61] 64 o docs: clarify CURLOPT_MAXFILESIZE and CURLOPT_MAXFILESIZE_LARGE [74] 65 o file: remove useless assignment [89] 66 o ftp: fix socket leak on rare error [102] 67 o GHA: add shellcheck job and fix warnings, shell tidy-ups [70] 68 o GHA: add valgrind to a wolfSSL build [37] 69 o GHA: on macOS remove $HOME/.curlrc [50] 70 o gnutls: lazy init the trust settings [75] 71 o http/2, http/3: decouple stream state from easy handle [92] 72 o http2 + ngtcp2: pass CURLcode errors from callbacks [94] 73 o http2: emit RST when client write fails [65] 74 o http: acknowledge a returned error code [123] 75 o http: reject HTTP major version switch mid connection [100] 76 o http: with chunked POST forced, disable length check on read callback [31] 77 o http_aws_sigv4: remove useless assignment [88] 78 o idn: make Curl_idnconvert_hostname() use Curl_idn_decode() [16] 79 o INSTALL-CMAKE.md: explain `cmake -G <generator-name>` [32] 80 o lib: add trace support for client reads and writes [45] 81 o lib: merge `ENABLE_QUIC` C macro into `USE_HTTP3` [84] 82 o lib: silence warnings on comma misuse [91] 83 o lib: use `#error` instead of invalid syntax in `curl_setup_once.h` [49] 84 o lib: use multi instead of multi_easy for the active multi [41] 85 o libcurl-opts: mention pipelining less [33] 86 o libssh2: set length to 0 if strdup failed [6] 87 o m4: fix rustls pkg-config codepath [22] 88 o makefile: remove the sorting from the vc-ide action [42] 89 o maketgz: put docs/RELEASE-TOOL.md into the tarball [35] 90 o mbedtls: call mbedtls_ssl_setup() after RNG callback is set [66] 91 o mbedtls: cut off trailing newlines from debug logs [87] 92 o mbedtls: fix building with v3 in CMake Unity mode [107] 93 o misc: fix typos [62] 94 o mprintf: check fputc error rather than matching returned character [82] 95 o mqtt: when Curl_xfer_recv returns error, don't use nread [101] 96 o multi: introduce SETUP state for better timeouts [26] 97 o multi: remove the unused Curl_preconnect function [98] 98 o multi: timeout handles even without connection [81] 99 o openldap: create ldap URLs correctly for IPv6 addresses [19] 100 o openssl: do not set SSL_MODE_RELEASE_BUFFERS [10] 101 o OS400: fix shellcheck warnings in scripts [72] 102 o projects: drop MSVC project files for recent versions [79] 103 o quic: fixup duplicate static function name (for cmake unity) [77] 104 o quiche: expire all active transfers on connection close [116] 105 o RELEASE-PROCEDURE: mention an initial working build [7] 106 o request: make Curl_req_init return void [96] 107 o request: paused upload on completed download, assess connection [54] 108 o reuse: add copyright + license info to individual docs/*.md files [13] 109 o ROADMAP: remove completed entries, mention websocket 110 o rustls: remove incorrect SSLSUPP_TLS13_CIPHERSUITES flag [115] 111 o sendf: fix two typos in comments [90] 112 o sendf: useless assignment in cr_lc_read() [120] 113 o smtp: result of Curl_bufq_cread was not used [78] 114 o telnet: check return code from fileno() [112] 115 o tests/http: fix compiler warning [39] 116 o tests: add -q as first option when invoking curl for tests [97] 117 o tests: check caddy server version to match test expectations [106] 118 o tests: enable test 1117 for hyper [119] 119 o tests: fix feature case in test1481 [117] 120 o tls: fix SecureTransport + BearSSL cmake unity builds [113] 121 o tls: use shared init code for TCP+QUIC [57] 122 o tool_getparam: output warning for leading unicode quote character [14] 123 o tool_operate: don't truncate the etag save file by default [118] 124 o tool_operate: init vars unconditionally in post_per_transfer [124] 125 o tool_paramhlp: remove duplicate assign [121] 126 o tool_xattr: "guess" URL scheme if none is provided [3] 127 o tool_xattr: in debug builds, act normally if CURL_FAKE_XATTR is not set [4] 128 o transfer: remove useless assignment [122] 129 o url: do not URL decode proxy crendentials [55] 130 o url: fix use of an uninitialized variable [86] 131 o urlapi: allow setting port number zero [76] 132 o urlapi: fix relative redirects to fragment-only [83] 133 o urldata: remove fields not used depending on used features [46] 134 o vquic: use CURL_FORMAT_CURL_OFF_T for 64 bit printf output [18] 135 o winbuild: add ENABLE_WEBSOCKETS option [93] 136 o winbuild: use $(RC) correctly [27] 137 o wolfssl: plug memory leak in wolfssl_connect_step2() [25] 138 139This release includes the following known bugs: 140 141 o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html) 142 143Planned upcoming removals include: 144 145 o support for space-separated NOPROXY patterns 146 147 See https://curl.se/dev/deprecate.html for details 148 149This release would not have looked like this without help, code, reports and 150advice from friends like these: 151 152 Abdullah Alyan, blankie, Brian Inglis, Carlos Henrique Lima Melara, 153 Christian Schmitz, Chris Webb, Colin Leroy-Mira, Dagfinn Ilmari Mannsåker, 154 Dan Fandrich, Daniel J. H., Daniel McCarney, Daniel Stenberg, Dmitry Karpov, 155 Emanuele Torre, Evgeny Grin (Karlson2k), Fabian Keil, Gisle Vanem, Gusted, 156 hammlee96 on github, Harry Sintonen, Hongfei Li, Jan Macku, Jan Venekamp, 157 Jeff King, Jérôme Leclercq, Jiwoo Park, Jonatan Vela, Kailun Qin, 158 kalvdans on github, Keitagit-kun on github, Konstantin Kuzov, 159 kpcyrd on github, Laramie Leavitt, Marcel Raad, Matt Jolly, Michael Kaufmann, 160 Michał Antoniak, Patrick Monnerat, Paul Howarth, Pavel Kropachev, 161 Rahul Krishna M, RainRat, Ray Satiro, riastradh on github, Robert Moreton, 162 Sanjay Pujare, Sergey Bronnikov, Sergey Ogryzkov, Sergio Durigan Junior, 163 southernedge on github, Stefan Eissing, Stephen Farrell, Tal Regev, 164 Tobias Stoeckmann, Toon Claes, Viktor Szakats, zmcx16 on github 165 (57 contributors) 166 167References to bug reports and discussions on issues: 168 169 [1] = https://curl.se/bug/?i=13198 170 [2] = https://curl.se/bug/?i=13191 171 [3] = https://curl.se/bug/?i=13205 172 [4] = https://curl.se/bug/?i=13220 173 [5] = https://curl.se/bug/?i=13209 174 [6] = https://curl.se/bug/?i=13213 175 [7] = https://curl.se/bug/?i=13216 176 [8] = https://curl.se/bug/?i=13208 177 [9] = https://curl.se/bug/?i=13210 178 [10] = https://curl.se/bug/?i=13203 179 [11] = https://curl.se/bug/?i=13171 180 [12] = https://curl.se/bug/?i=13247 181 [13] = https://curl.se/bug/?i=13245 182 [14] = https://curl.se/bug/?i=13214 183 [15] = https://curl.se/bug/?i=13207 184 [16] = https://curl.se/bug/?i=13236 185 [17] = https://curl.se/bug/?i=13240 186 [18] = https://curl.se/bug/?i=13224 187 [19] = https://curl.se/bug/?i=13228 188 [20] = https://curl.se/bug/?i=13230 189 [21] = https://curl.se/bug/?i=13225 190 [22] = https://curl.se/bug/?i=13200 191 [23] = https://curl.se/bug/?i=13206 192 [24] = https://curl.se/bug/?i=13197 193 [25] = https://curl.se/bug/?i=13272 194 [26] = https://curl.se/bug/?i=13371 195 [27] = https://curl.se/bug/?i=13267 196 [28] = https://curl.se/bug/?i=13268 197 [29] = https://curl.se/bug/?i=13263 198 [30] = https://curl.se/bug/?i=13281 199 [31] = https://curl.se/bug/?i=13229 200 [32] = https://curl.se/bug/?i=13244 201 [33] = https://curl.se/bug/?i=13254 202 [34] = https://curl.se/bug/?i=13135 203 [35] = https://curl.se/bug/?i=13239 204 [36] = https://curl.se/bug/?i=13242 205 [37] = https://curl.se/bug/?i=13274 206 [38] = https://curl.se/bug/?i=13299 207 [39] = https://curl.se/bug/?i=13301 208 [40] = https://curl.se/bug/?i=13327 209 [41] = https://curl.se/bug/?i=12665 210 [42] = https://curl.se/bug/?i=13294 211 [43] = https://curl.se/bug/?i=13290 212 [44] = https://curl.se/bug/?i=13258 213 [45] = https://curl.se/bug/?i=13223 214 [46] = https://curl.se/bug/?i=13188 215 [47] = https://curl.se/bug/?i=13286 216 [48] = https://curl.se/bug/?i=13282 217 [49] = https://curl.se/bug/?i=13287 218 [50] = https://curl.se/bug/?i=13284 219 [51] = https://curl.se/bug/?i=13283 220 [52] = https://curl.se/bug/?i=13269 221 [53] = https://curl.se/bug/?i=13346 222 [54] = https://curl.se/bug/?i=13260 223 [55] = https://curl.se/bug/?i=13265 224 [56] = https://curl.se/bug/?i=13322 225 [57] = https://curl.se/bug/?i=13172 226 [58] = https://curl.se/bug/?i=13218 227 [59] = https://curl.se/bug/?i=13364 228 [60] = https://curl.se/bug/?i=13313 229 [61] = https://curl.se/bug/?i=13348 230 [62] = https://curl.se/bug/?i=13344 231 [63] = https://curl.se/bug/?i=13137 232 [64] = https://curl.se/bug/?i=13264 233 [65] = https://curl.se/bug/?i=13292 234 [66] = https://curl.se/bug/?i=13314 235 [67] = https://curl.se/bug/?i=13249 236 [68] = https://curl.se/bug/?i=13335 237 [69] = https://curl.se/bug/?i=13315 238 [70] = https://curl.se/bug/?i=13307 239 [71] = https://curl.se/bug/?i=13310 240 [72] = https://curl.se/bug/?i=13309 241 [73] = https://curl.se/bug/?i=13368 242 [74] = https://curl.se/bug/?i=13372 243 [75] = https://curl.se/bug/?i=13339 244 [76] = https://curl.se/bug/?i=13427 245 [77] = https://curl.se/bug/?i=13332 246 [78] = https://curl.se/bug/?i=13398 247 [79] = https://curl.se/bug/?i=13311 248 [80] = https://curl.se/bug/?i=13324 249 [81] = https://curl.se/bug/?i=13276 250 [82] = https://curl.se/bug/?i=13367 251 [83] = https://curl.se/bug/?i=13394 252 [84] = https://curl.se/bug/?i=13352 253 [85] = https://curl.se/bug/?i=13349 254 [86] = https://curl.se/bug/?i=13399 255 [87] = https://curl.se/bug/?i=13321 256 [88] = https://curl.se/bug/?i=13426 257 [89] = https://curl.se/bug/?i=13425 258 [90] = https://curl.se/bug/?i=13393 259 [91] = https://curl.se/bug/?i=13392 260 [92] = https://curl.se/bug/?i=13204 261 [93] = https://curl.se/bug/?i=13232 262 [94] = https://curl.se/bug/?i=13411 263 [95] = https://curl.se/bug/?i=13246 264 [96] = https://curl.se/bug/?i=13423 265 [97] = https://curl.se/bug/?i=13387 266 [98] = https://curl.se/bug/?i=13422 267 [99] = https://curl.se/bug/?i=13419 268 [100] = https://curl.se/bug/?i=13421 269 [101] = https://curl.se/bug/?i=13418 270 [102] = https://curl.se/bug/?i=13417 271 [103] = https://curl.se/bug/?i=13442 272 [104] = https://curl.se/bug/?i=13337 273 [105] = https://curl.se/bug/?i=13407 274 [106] = https://curl.se/bug/?i=13405 275 [107] = https://curl.se/bug/?i=13377 276 [108] = https://curl.se/bug/?i=13373 277 [109] = https://curl.se/bug/?i=11922 278 [111] = https://curl.se/bug/?i=13396 279 [112] = https://curl.se/bug/?i=13457 280 [113] = https://curl.se/bug/?i=13450 281 [114] = https://curl.se/bug/?i=12327 282 [115] = https://curl.se/bug/?i=13452 283 [116] = https://curl.se/bug/?i=13439 284 [117] = https://curl.se/bug/?i=13445 285 [118] = https://curl.se/bug/?i=13432 286 [119] = https://curl.se/bug/?i=13436 287 [120] = https://curl.se/bug/?i=13437 288 [121] = https://curl.se/bug/?i=13433 289 [122] = https://curl.se/bug/?i=13435 290 [123] = https://curl.se/bug/?i=13434 291 [124] = https://curl.se/bug/?i=13430 292