xref: /curl/RELEASE-NOTES (revision ac7670b1)
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