Disable a debug option
[platform/upstream/curl.git] / RELEASE-NOTES
1 curl and libcurl 8.5.0
2
3  Public curl releases:         253
4  Command line options:         258
5  curl_easy_setopt() options:   303
6  Public functions in libcurl:  93
7  Contributors:                 3039
8
9 This release includes the following changes:
10
11  o gnutls: support CURLSSLOPT_NATIVE_CA [31]
12  o HTTP3: ngtcp2 builds are no longer experimental [77]
13
14 This release includes the following bugfixes:
15
16  o appveyor: make VS2008-built curl tool runnable [93]
17  o asyn-thread: use pipe instead of socketpair for IPC when available [4]
18  o autotools: accept linker flags via `CURL_LDFLAGS_{LIB,BIN}` [128]
19  o autotools: avoid passing `LDFLAGS` twice to libcurl [127]
20  o autotools: delete LCC compiler support bits [137]
21  o autotools: fix/improve gcc and Apple clang version detection [136]
22  o autotools: stop setting `-std=gnu89` with `--enable-warnings` [135]
23  o autotools: update references to deleted `crypt-auth` option [46]
24  o BINDINGS: add V binding [54]
25  o build: add `src/.checksrc` to source tarball [1]
26  o build: add more picky warnings and fix them [172]
27  o build: always revert `#pragma GCC diagnostic` after use [143]
28  o build: delete `HAVE_STDINT_H` and `HAVE_INTTYPES_H` [107]
29  o build: delete support bits for obsolete Windows compilers [106]
30  o build: fix 'threadsafe' feature detection for older gcc [19]
31  o build: fix builds that disable protocols but not digest auth [174]
32  o build: fix compiler warning with auths disabled [85]
33  o build: fix libssh2 + `CURL_DISABLE_DIGEST_AUTH` + `CURL_DISABLE_AWS` [120]
34  o build: picky warning updates [125]
35  o build: require Windows XP or newer [86]
36  o cfilter: provide call to tell connection to forget a socket [65]
37  o checksrc.pl: support #line instructions
38  o CI: add autotools, out-of-tree, debug build to distro check job [14]
39  o CI: ignore test 286 on Appveyor gcc 9 build [6]
40  o cmake: add `CURL_DISABLE_BINDLOCAL` option [146]
41  o cmake: add test for `DISABLE` options, add `CURL_DISABLE_HEADERS_API` [138]
42  o cmake: dedupe Windows system libs [114]
43  o cmake: fix `HAVE_H_ERRNO_ASSIGNABLE` detection [2]
44  o cmake: fix CURL_DISABLE_GETOPTIONS [12]
45  o cmake: fix multiple include of CURL package [96]
46  o cmake: fix OpenSSL quic detection in quiche builds [56]
47  o cmake: option to disable install & drop `curlu` target when unused [72]
48  o cmake: pre-fill rest of detection values for Windows [50]
49  o cmake: replace `check_library_exists_concat()` [23]
50  o cmake: speed up threads setup for Windows [68]
51  o cmake: speed up zstd detection [69]
52  o config-win32: set `HAVE_SNPRINTF` for mingw-w64 [123]
53  o configure: better --disable-http [80]
54  o configure: check for the fseeko declaration too [55]
55  o conncache: use the closure handle when disconnecting surplus connections [173]
56  o content_encoding: make Curl_all_content_encodings allocless [101]
57  o cookie: lowercase the domain names before PSL checks [160]
58  o curl.h: delete Symbian OS references [162]
59  o curl.h: on FreeBSD include sys/param.h instead of osreldate.h [21]
60  o curl.rc: switch out the copyright symbol for plain ASCII [167]
61  o curl: improved IPFS and IPNS URL support [87]
62  o curl_easy_duphandle.3: clarify how HSTS and alt-svc are duped [99]
63  o Curl_http_body: cleanup properly when Curl_getformdata errors [152]
64  o curl_setup: disallow Windows IPv6 builds missing getaddrinfo [57]
65  o curl_sspi: support more revocation error names in error messages [95]
66  o CURLINFO_PRETRANSFER_TIME_T.3: fix time explanation [181]
67  o CURLMOPT_MAX_CONCURRENT_STREAMS: make sure the set value is within range [165]
68  o CURLOPT_CAINFO_BLOB.3: explain what CURL_BLOB_COPY does [113]
69  o CURLOPT_WRITEFUNCTION.3: clarify libcurl returns for CURL_WRITEFUNC_ERROR [45]
70  o CURPOST_POSTFIELDS.3: add CURLOPT_COPYPOSTFIELDS in SEE ALSO
71  o docs/example/keepalive.c: show TCP keep-alive options [73]
72  o docs/example/localport.c: show off CURLOPT_LOCALPORT [83]
73  o docs/examples/interface.c: show CURLOPT_INTERFACE use [84]
74  o docs/libcurl: fix three minor man page format mistakes [26]
75  o docs/libcurl: SYNSOPSIS cleanup [150]
76  o docs: add supported version for the json write-out [92]
77  o docs: clarify that curl passes on input unfiltered [47]
78  o docs: fix function typo in curl_easy_option_next.3 [36]
79  o docs: KNOWN_BUGS cleanup
80  o docs: make all examples in all libcurl man pages compile [175]
81  o docs: preserve the modification date when copying the prebuilt man page [89]
82  o docs: remove bold from some man page SYNOPSIS sections [90]
83  o docs: use SOURCE_DATE_EPOCH for generated manpages [16]
84  o doh: provide better return code for responses w/o addresses [133]
85  o doh: use PIPEWAIT when HTTP/2 is attempted [63]
86  o duphandle: also free 'outcurl->cookies' in error path [122]
87  o duphandle: make dupset() not return with pointers to old alloced data [109]
88  o duphandle: use strdup to clone *COPYPOSTFIELDS if size is not set [132]
89  o easy: in duphandle, init the cookies for the new handle [131]
90  o easy: remove duplicate wolfSSH init call [37]
91  o easy_lock: add a pthread_mutex_t fallback [13]
92  o examples/rtsp-options.c: add [157]
93  o fopen: create new file using old file's mode [153]
94  o fopen: create short(er) temporary file name [155]
95  o getenv: PlayStation doesn't have getenv() [41]
96  o GHA: move mod_h2 version in CI to v2.0.25 [43]
97  o hostip: show the list of IPs when resolving is done [35]
98  o hostip: silence compiler warning `-Wparentheses-equality` [62]
99  o hsts: skip single-dot hostname [67]
100  o HTTP/2, HTTP/3: handle detach of onoing transfers [134]
101  o http2: header conversion tightening [33]
102  o http2: provide an error callback and failf the message [53]
103  o http2: safer invocation of populate_binsettings [8]
104  o http: allow longer HTTP/2 request method names [112]
105  o http: avoid Expect: 100-continue if Upgrade: is used [15]
106  o http: consider resume with CURLOPT_FAILONERRROR and 416 to be fine [81]
107  o http: fix `-Wunused-parameter` with no auth and no proxy [149]
108  o http: fix `-Wunused-variable` compiler warning [115]
109  o http: fix empty-body warning [76]
110  o http_aws_sigv4: canonicalise valueless query params [88]
111  o hyper: temporarily remove HTTP/2 support [139]
112  o INSTALL: update list of ports and CPU archs
113  o IPFS: fix IPFS_PATH and file parsing [119]
114  o keylog: disable if unused [145]
115  o lib: add and use Curl_strndup() [97]
116  o lib: apache style infof and trace macros/functions [71]
117  o lib: fix gcc warning in printf call [7]
118  o libcurl-errors.3: sync with current public headers [156]
119  o libcurl-thread.3: simplify the TLS section [79]
120  o Makefile.am: drop vc10, vc11 and vc12 projects from dist [103]
121  o Makefile.mk: fix `-rtmp` option for non-Windows
122  o mime: store "form escape" as a single bit [170]
123  o misc: fix -Walloc-size warnings [118]
124  o msh3: error when built with CURL_DISABLE_SOCKETPAIR set [61]
125  o multi: during ratelimit multi_getsock should return no sockets [182]
126  o multi: use pipe instead of socketpair to *wakeup() [18]
127  o ngtcp2: fix races in stream handling [178]
128  o ngtcp2: ignore errors on unknown streams [158]
129  o ntlm_wb: use pipe instead of socketpair when possible [44]
130  o openldap: move the alloc of ldapconninfo to *connect() [29]
131  o openldap: set the callback argument in oldap_do [30]
132  o openssl: avoid BN_num_bits() NULL pointer derefs [9]
133  o openssl: fix building with v3 `no-deprecated` + add CI test [161]
134  o openssl: fix infof() to avoid compiler warning for %s with null [70]
135  o openssl: identify the "quictls" backend correctly [82]
136  o openssl: include SIG and KEM algorithms in verbose [52]
137  o openssl: make CURLSSLOPT_NATIVE_CA import Windows intermediate CAs [58]
138  o openssl: two multi pointer checks should probably rather be asserts [91]
139  o openssl: when a session-ID is reused, skip OCSP stapling [142]
140  o page-footer: clarify exit code 25 [51]
141  o projects: add VC14.20 project files [104]
142  o pytest: use lower count in repeat tests [98]
143  o quic: make eyeballers connect retries stop at weird replies [140]
144  o quic: manage connection idle timeouts [5]
145  o quiche: use quiche_conn_peer_transport_params() [116]
146  o rand: fix build error with autotools + LibreSSL [111]
147  o resolve.d: drop a multi use-sentence [100]
148  o RTSP: improved RTP parser [32]
149  o rustls: implement connect_blocking [154]
150  o sasl: fix `-Wunused-function` compiler warning [124]
151  o schannel: add CA cache support for files and memory blobs [121]
152  o setopt: check CURLOPT_TFTP_BLKSIZE range on set [171]
153  o setopt: remove outdated cookie comment [64]
154  o setopt: remove superfluous use of ternary expressions [169]
155  o socks: better buffer size checks for socks4a user and hostname [20]
156  o socks: make SOCKS5 use the CURLOPT_IPRESOLVE choice [38]
157  o symbols-in-versions: the CLOSEPOLICY options are deprecated
158  o test1683: remove commented-out check alternatives
159  o test3103: add missing quotes around a test tag attribute
160  o test613: stop showing an error on missing output file
161  o tests/README: SOCKS tests are not using OpenSSH, it has its own server [48]
162  o tests/server: add more SOCKS5 handshake error checking [27]
163  o tests: Fix Windows test helper tool search & use it for handle64 [17]
164  o tidy-up: casing typos, delete unused Windows version aliases [144]
165  o tool: fix --capath when proxy support is disabled [28]
166  o tool: support bold headers in Windows [117]
167  o tool_cb_hdr: add an additional parsing check [129]
168  o tool_cb_prg: make the carriage return fit for wide progress bars [159]
169  o tool_cb_wrt: fix write output for very old Windows versions [24]
170  o tool_getparam: limit --rate to be smaller than number of ms [3]
171  o tool_operate: do not mix memory models [108]
172  o tool_operate: fix links in ipfs errors [22]
173  o tool_parsecfg: make warning output propose double-quoting [164]
174  o tool_urlglob: fix build for old gcc versions [25]
175  o tool_urlglob: make multiply() bail out on negative values [11]
176  o tool_writeout_json: fix JSON encoding of non-ascii bytes [179]
177  o transfer: abort pause send when connection is marked for closing [183]
178  o transfer: avoid calling the read callback again after EOF [130]
179  o transfer: only reset the FTP wildcard engine in CLEAR state [42]
180  o url: don't touch the multi handle when closing internal handles [40]
181  o url: find scheme with a "perfect hash" [141]
182  o url: fix `-Wzero-length-array` with no protocols [147]
183  o url: fix builds with `CURL_DISABLE_HTTP` [148]
184  o url: protocol handler lookup tidy-up [66]
185  o url: proxy ssl connection reuse fix [94]
186  o urlapi: avoid null deref if setting blank host to url encode [75]
187  o urlapi: skip appending NULL pointer query [74]
188  o urlapi: when URL encoding the fragment, pass in the right length [59]
189  o urldata: make maxconnects a 32 bit value [166]
190  o urldata: move async resolver state from easy handle to connectdata [34]
191  o urldata: move cookielist from UserDefined to UrlState [126]
192  o urldata: move hstslist from 'set' to 'state' [105]
193  o urldata: move the 'internal' boolean to the state struct [39]
194  o vssh: remove the #ifdef for Curl_ssh_init, use empty macro
195  o vtls: cleanup SSL config management [78]
196  o vtls: consistently use typedef names for OpenSSL structs [176]
197  o vtls: late clone of connection ssl config [60]
198  o vtls: use ALPN "http/1.1" for HTTP/1.x, including HTTP/1.0 [102]
199  o VULN-DISCLOSURE-POLICY: escape sequences are not a security flaw [110]
200  o windows: use built-in `_WIN32` macro to detect Windows [163]
201  o wolfssh: remove redundant static prototypes [168]
202  o wolfssl: add default case for wolfssl_connect_step1 switch [49]
203  o wolfssl: require WOLFSSL_SYS_CA_CERTS for loading system CA [10]
204
205 This release includes the following known bugs:
206
207  o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
208
209 Planned upcoming removals include:
210
211  o support for space-separated NOPROXY patterns
212
213  See https://curl.se/dev/deprecate.html for details
214
215 This release would not have looked like this without help, code, reports and
216 advice from friends like these:
217
218   12932 on github, Alex Bozarth, Alexey Larikov, Alex Klyubin, Ammar Faizi,
219   Andrew Kurushin, Anubhav Rai, boilingoden, calvin2021y on github,
220   Carlos Henrique Lima Melara, Casey Bodley, Charlie C, Dan Fandrich,
221   Daniel Jeliński, Daniel Stenberg, David Benjamin, David Suter, Dmitry Karpov,
222   eeverettrbx on github, Emanuele Torre, Enno Boland, enWILLYado on github,
223   Faraz Fallahi, Gisle Vanem, Goro FUJI, Graham Campbell, Harry Mallon,
224   Harry Sintonen, iconoclasthero, icy17 on github, Jacob Hoffman-Andrews,
225   Jan Alexander Steffens, Jeroen Ooms, Jiehong on github, Jiri Hruska,
226   Junho Choi, Kai Pastor, Kareem, Kartatz on Github, kirbyn17 on hackerone,
227   Lau, lkordos on github, Loïc Yhuel, LoRd_MuldeR, lRoccoon on github,
228   Maksymilian Arciemowicz, Manfred Schwarb, Marcel Raad, Marcin Rataj,
229   Mark Gaiser, Martin Schmatz, Michael Kaufmann, Michał Antoniak, Nico Rieck,
230   Niracler Li, ohyeaah on github, Ophir Lojkine, Paweł Wegner, Philip Heiduck,
231   Ray Satiro, rilysh, Robert Southee, Romain Geissler, Sam James,
232   Samuel Henrique, sd0 on hackerone, Smackd0wn, Sohom Datta, Stefan Eissing,
233   Steven Allen, Tim Hill, Torben Dury, Turiiya, Viktor Szakats,
234   yushicheng7788 on github, z2_, zhengqwe on github, 積丹尼 Dan Jacobson
235   (78 contributors)
236
237 References to bug reports and discussions on issues:
238
239  [1] = https://curl.se/bug/?i=12084
240  [2] = https://curl.se/bug/?i=12093
241  [3] = https://curl.se/bug/?i=12116
242  [4] = https://curl.se/bug/?i=12146
243  [5] = https://curl.se/bug/?i=12064
244  [6] = https://curl.se/bug/?i=12040
245  [7] = https://curl.se/bug/?i=12082
246  [8] = https://curl.se/bug/?i=12101
247  [9] = https://curl.se/bug/?i=12099
248  [10] = https://curl.se/bug/?i=12108
249  [11] = https://curl.se/bug/?i=12102
250  [12] = https://curl.se/bug/?i=12091
251  [13] = https://curl.se/bug/?i=12090
252  [14] = https://curl.se/bug/?i=12088
253  [15] = https://curl.se/bug/?i=12022
254  [16] = https://curl.se/bug/?i=12092
255  [17] = https://curl.se/bug/?i=12115
256  [18] = https://curl.se/bug/?i=12142
257  [19] = https://curl.se/bug/?i=12125
258  [20] = https://curl.se/bug/?i=12139
259  [21] = https://curl.se/bug/?i=12107
260  [22] = https://curl.se/bug/?i=12133
261  [23] = https://curl.se/bug/?i=11285
262  [24] = https://curl.se/bug/?i=12131
263  [25] = https://curl.se/bug/?i=12124
264  [26] = https://curl.se/bug/?i=12126
265  [27] = https://curl.se/bug/?i=12117
266  [28] = https://curl.se/bug/?i=12089
267  [29] = https://curl.se/bug/?i=12166
268  [30] = https://curl.se/bug/?i=12166
269  [31] = https://curl.se/bug/?i=12137
270  [32] = https://curl.se/bug/?i=12052
271  [33] = https://curl.se/bug/?i=12097
272  [34] = https://curl.se/bug/?i=12198
273  [35] = https://curl.se/bug/?i=12145
274  [36] = https://curl.se/bug/?i=12170
275  [37] = https://curl.se/bug/?i=12168
276  [38] = https://curl.se/bug/?i=11949
277  [39] = https://curl.se/bug/?i=12165
278  [40] = https://curl.se/bug/?i=12165
279  [41] = https://curl.se/bug/?i=12140
280  [42] = https://curl.se/bug/?i=11775
281  [43] = https://curl.se/bug/?i=12157
282  [44] = https://curl.se/bug/?i=12149
283  [45] = https://curl.se/bug/?i=12201
284  [46] = https://curl.se/bug/?i=12194
285  [47] = https://curl.se/bug/?i=12249
286  [48] = https://curl.se/bug/?i=12195
287  [49] = https://curl.se/bug/?i=12218
288  [50] = https://curl.se/bug/?i=12044
289  [51] = https://curl.se/bug/?i=12189
290  [52] = https://curl.se/bug/?i=12030
291  [53] = https://curl.se/bug/?i=12179
292  [54] = https://curl.se/bug/?i=12182
293  [55] = https://curl.se/bug/?i=12086
294  [56] = https://curl.se/bug/?i=12160
295  [57] = https://curl.se/bug/?i=12221
296  [58] = https://curl.se/bug/?i=12155
297  [59] = https://curl.se/bug/?i=12250
298  [60] = https://curl.se/bug/?i=12237
299  [61] = https://curl.se/bug/?i=12213
300  [62] = https://curl.se/bug/?i=12215
301  [63] = https://curl.se/bug/?i=12214
302  [64] = https://curl.se/bug/?i=12206
303  [65] = https://curl.se/bug/?i=12207
304  [66] = https://curl.se/bug/?i=12216
305  [67] = https://curl.se/bug/?i=12247
306  [68] = https://curl.se/bug/?i=12202
307  [69] = https://curl.se/bug/?i=12200
308  [70] = https://curl.se/bug/?i=12196
309  [71] = https://curl.se/bug/?i=12083
310  [72] = https://curl.se/bug/?i=12287
311  [73] = https://curl.se/bug/?i=12242
312  [74] = https://curl.se/bug/?i=12240
313  [75] = https://curl.se/bug/?i=12240
314  [76] = https://curl.se/bug/?i=12262
315  [77] = https://curl.se/bug/?i=12235
316  [78] = https://curl.se/bug/?i=12204
317  [79] = https://curl.se/bug/?i=12233
318  [80] = https://curl.se/bug/?i=12223
319  [81] = https://curl.se/bug/?i=10521
320  [82] = https://curl.se/bug/?i=12270
321  [83] = https://curl.se/bug/?i=12230
322  [84] = https://curl.se/bug/?i=12229
323  [85] = https://curl.se/bug/?i=12227
324  [86] = https://curl.se/bug/?i=12225
325  [87] = https://curl.se/bug/?i=12148
326  [88] = https://curl.se/bug/?i=8107
327  [89] = https://curl.se/bug/?i=12199
328  [90] = https://curl.se/bug/?i=12267
329  [91] = https://curl.se/bug/?i=12264
330  [92] = https://curl.se/bug/?i=12266
331  [93] = https://curl.se/bug/?i=12263
332  [94] = https://curl.se/bug/?i=12255
333  [95] = https://curl.se/bug/?i=12239
334  [96] = https://curl.se/bug/?i=11913
335  [97] = https://curl.se/bug/?i=12251
336  [98] = https://curl.se/bug/?i=12248
337  [99] = https://curl.se/bug/?i=12315
338  [100] = https://curl.se/bug/?i=12294
339  [101] = https://curl.se/bug/?i=12289
340  [102] = https://curl.se/bug/?i=12259
341  [103] = https://curl.se/bug/?i=12288
342  [104] = https://curl.se/bug/?i=12282
343  [105] = https://curl.se/bug/?i=12315
344  [106] = https://curl.se/bug/?i=12222
345  [107] = https://curl.se/bug/?i=12275
346  [108] = https://curl.se/bug/?i=12280
347  [109] = https://curl.se/bug/?i=12337
348  [110] = https://curl.se/bug/?i=12278
349  [111] = https://curl.se/bug/?i=12257
350  [112] = https://curl.se/bug/?i=12311
351  [113] = https://curl.se/bug/?i=12277
352  [114] = https://curl.se/bug/?i=12307
353  [115] = https://curl.se/bug/?i=12228
354  [116] = https://curl.se/bug/?i=12180
355  [117] = https://curl.se/bug/?i=12321
356  [118] = https://curl.se/bug/?i=12292
357  [119] = https://curl.se/bug/?i=12152
358  [120] = https://curl.se/bug/?i=12273
359  [121] = https://curl.se/bug/?i=12261
360  [122] = https://curl.se/bug/?i=12329
361  [123] = https://curl.se/bug/?i=12325
362  [124] = https://curl.se/bug/?i=12326
363  [125] = https://curl.se/bug/?i=12324
364  [126] = https://curl.se/bug/?i=12323
365  [127] = https://curl.se/bug/?i=12310
366  [128] = https://curl.se/bug/?i=12312
367  [129] = https://curl.se/bug/?i=12320
368  [130] = https://curl.se/mail/lib-2023-11/0017.html
369  [131] = https://curl.se/bug/?i=12318
370  [132] = https://curl.se/bug/?i=12317
371  [133] = https://curl.se/bug/?i=12365
372  [134] = https://curl.se/bug/?i=12356
373  [135] = https://curl.se/bug/?i=12346
374  [136] = https://curl.se/bug/?i=12362
375  [137] = https://curl.se/bug/?i=12357
376  [138] = https://curl.se/bug/?i=12353
377  [139] = https://curl.se/bug/?i=12191
378  [140] = https://curl.se/bug/?i=12400
379  [141] = https://curl.se/bug/?i=12347
380  [142] = https://curl.se/bug/?i=12399
381  [143] = https://curl.se/bug/?i=12352
382  [144] = https://curl.se/bug/?i=12351
383  [145] = https://curl.se/bug/?i=12350
384  [146] = https://curl.se/bug/?i=12345
385  [147] = https://curl.se/bug/?i=12344
386  [148] = https://curl.se/bug/?i=12343
387  [149] = https://curl.se/bug/?i=12338
388  [150] = https://curl.se/bug/?i=12402
389  [152] = https://curl.se/bug/?i=12410
390  [153] = https://curl.se/bug/?i=12299
391  [154] = https://curl.se/bug/?i=11647
392  [155] = https://curl.se/bug/?i=12388
393  [156] = https://curl.se/bug/?i=12424
394  [157] = https://curl.se/bug/?i=12452
395  [158] = https://curl.se/bug/?i=12449
396  [159] = https://curl.se/bug/?i=12407
397  [160] = https://curl.se/bug/?i=12387
398  [161] = https://curl.se/bug/?i=12384
399  [162] = https://curl.se/bug/?i=12378
400  [163] = https://curl.se/bug/?i=12376
401  [164] = https://curl.se/bug/?i=12409
402  [165] = https://curl.se/bug/?i=12382
403  [166] = https://curl.se/bug/?i=12375
404  [167] = https://curl.se/bug/?i=12403
405  [168] = https://curl.se/bug/?i=12381
406  [169] = https://curl.se/bug/?i=12374
407  [170] = https://curl.se/bug/?i=12374
408  [171] = https://curl.se/bug/?i=12374
409  [172] = https://curl.se/bug/?i=12331
410  [173] = https://curl.se/bug/?i=12367
411  [174] = https://curl.se/bug/?i=12440
412  [175] = https://curl.se/bug/?i=12448
413  [176] = https://curl.se/bug/?i=12439
414  [178] = https://curl.se/bug/?i=12435
415  [179] = https://curl.se/bug/?i=12434
416  [181] = https://curl.se/bug/?i=12431
417  [182] = https://curl.se/bug/?i=12430
418  [183] = https://curl.se/bug/?i=12428