RELEASE-NOTES 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. curl and libcurl 8.0.0
  2. Public curl releases: 215
  3. Command line options: 250
  4. curl_easy_setopt() options: 302
  5. Public functions in libcurl: 91
  6. Contributors: 2840
  7. This release includes the following changes:
  8. o build: remove support for curl_off_t < 8 bytes [19]
  9. This release includes the following bugfixes:
  10. o .cirrus.yml: Bump to FreeBSD 13.2 [9]
  11. o aws_sigv4: fall back to UNSIGNED-PAYLOAD for sign_as_s3 [112]
  12. o BINDINGS: add Fortran binding [33]
  13. o build: drop the use of XC_AMEND_DISTCLEAN [62]
  14. o build: fix stdint/inttypes detection with non-autotools [120]
  15. o cf-socket: fix handling of remote addr for accepted tcp sockets [17]
  16. o cf-socket: if socket is already connected, return CURLE_OK [69]
  17. o CI: don't run CI jobs if only another CI was changed [92]
  18. o CI: update ngtcp2 and nghttp2 for pytest [13]
  19. o cmake: delete unused HAVE__STRTOI64 [117]
  20. o cmake: fix enabling LDAPS on Windows [55]
  21. o cmake: skip CA-path/bundle auto-detection in cross-builds [57]
  22. o connect: fix time_connect and time_appconnect timer statistics [90]
  23. o cookie: don't load cookies again when flushing [91]
  24. o cookie: parse without sscanf()
  25. o curl: make -w's %{stderr} use the file set with --stderr [30]
  26. o curl_path: create the new path with dynbuf [99]
  27. o CURLOPT_PIPEWAIT: allow waited reuse also for subsequent connections [10]
  28. o CURLOPT_PROXY.3: curl+NSS does not handle HTTPS over unix domain socket [102]
  29. o CURLSHOPT_SHARE.3: HSTS sharing is not thread-safe [103]
  30. o DEPRECATE: the original legacy mingw version 1 [43]
  31. o doc: fix compiler warning in libcurl.m4 [82]
  32. o docs/cmdline-opts: mark all global options [6]
  33. o docs/SECURITY-PROCESS.md: updates [67]
  34. o docs: extend the URL API descriptions [85]
  35. o docs: note '--data-urlencode' option [7]
  36. o DYNBUF.md: note Curl_dyn_add* calls Curl_dyn_free on failure [70]
  37. o easy: remove infof() debug leftover from curl_easy_recv [44]
  38. o examples/http3.c: use CURL_HTTP_VERSION_3 [46]
  39. o ftp: active mode with SSL, add the filter [84]
  40. o ftp: add more conditions for connection reuse [74]
  41. o ftp: allocate the wildcard struct on demand [59]
  42. o ftp: make the EPSV response parser not use sscanf [25]
  43. o ftp: replace sscanf for MDTM 213 response parsing [23]
  44. o ftp: replace sscanf for PASV parsing [24]
  45. o gssapi: align global `gss_OID_desc` vars to silence ld warnings on macOS ventura [58]
  46. o headers: make curl_easy_header and nextheader return different buffers [77]
  47. o hostip: avoid sscanf and extra buffer copies [42]
  48. o http2: fix error handling during parallel operations [96]
  49. o http2: fix for http2-prior-knowledge when reusing connections [14]
  50. o http2: fix handling of RST and GOAWAY to recognize partial transfers [88]
  51. o http2: fix upload busy loop [71]
  52. o http: don't send 100-continue for short PUT requests [93]
  53. o http: fix unix domain socket use in https connects [28]
  54. o http: rewrite the status line parser without sscanf [29]
  55. o http_proxy: parse the status line without sscanf [16]
  56. o idn: return error if the conversion ends up with a blank host [45]
  57. o krb5: avoid sscanf for parsing [18]
  58. o lib1560: test parsing URLs with ridiculously large fields [60]
  59. o lib517: verify time stamps without leading zeroes plus some more
  60. o lib: silence clang/gcc -Wvla warnings in brotli headers [98]
  61. o lib: skip Curl_llist_destroy calls [108]
  62. o libcurl-errors.3: add the CURLHcode errors from curl_easy_header.3 [39]
  63. o libssh2: only set the memory callbacks when debugging [65]
  64. o Makefile.mk: delete redundant `HAVE_LDAP_SSL` macro [56]
  65. o Makefile.mk: fix -g option in debug mode [81]
  66. o mqtt: on send error, return error [40]
  67. o multi: make multi_perform ignore/unignore signals less often [116]
  68. o multi: remove PENDING + MSGSENT handles from the main linked list [105]
  69. o ngtcp2-gnutls.yml: bump to gnutls 3.8.0 [11]
  70. o ngtcp2: fix unwanted close of file descriptor 0 [26]
  71. o page-footer: add explanation for three missing exit codes [37]
  72. o parsedate: parse strings without using sscanf() [2]
  73. o parsedate: replace sscanf( for time stamp parsing [1]
  74. o quic/schannel: fix compiler warnings [36]
  75. o rand: use arc4random as fallback when available [48]
  76. o rate.d: single URLs make no sense in --rate example [38]
  77. o RELEASE-PROCEDURE.md: update coming release dates
  78. o rtsp: avoid sscanf for parsing [15]
  79. o runtests: use a hash table for server port numbers [51]
  80. o sectransp: fix compiler warning c89 mixed code/declaration [32]
  81. o sectransp: make read_cert() use a dynbuf when loading [72]
  82. o secure-transport: fix recv return code handling [114]
  83. o select: stop treating POLLRDBAND as an error [27]
  84. o setopt: move the CURLOPT_CHUNK_DATA pointer to the set struct [35]
  85. o socket: detect "dead" connections better, e.g. not fit for reuse [66]
  86. o src: silence wmain() warning for all build methods [95]
  87. o telnet: only accept option arguments in ascii [104]
  88. o telnet: parse NEW_ENVIRON without sscanf [20]
  89. o telnet: parse telnet options without sscanf [22]
  90. o telnet: parse the WS= argument without sscanf [21]
  91. o test1470: test socks proxy using unix sockets and connect to https [63]
  92. o test1960: verify CURL_SOCKOPT_ALREADY_CONNECTED [64]
  93. o test2600: detect when ALARM_TIMEOUT is in use and adjust [34]
  94. o tests/http: add pytest to GHA and improve tests [118]
  95. o tests: add `cookies` features [68]
  96. o tests: add timeout, SLOWDOWN and DELAY keywords to tests
  97. o tests: fix gnutls-serv check [53]
  98. o tests: fix MSVC unreachable code warnings in unit tests
  99. o tests: hack to build most unit tests under cmake [94]
  100. o tests: HTTP server fixups [3]
  101. o tests: keep cmake unit tests names in sync
  102. o tests: make CPPFLAGS common to all unit tests
  103. o tests: make first.c the same for both lib tests and unit tests [75]
  104. o tests: support for imaps/pop3s/smtps protocols [50]
  105. o tests: sync option lists in runtests.pl & its man page
  106. o tests: test secure mail protocols with explicit SSL requests [49]
  107. o tests: use AM_CPPFILES to modify flags in unit tests
  108. o tests: use dynamic ports numbers in pytest suite [89]
  109. o tool: dump headers even if file is write-only [52]
  110. o tool: improve --stderr handling [83]
  111. o tool_getparam: don't add a new node for just --no-remote-name [5]
  112. o tool_operate: avoid fclose(NULL) on bad header dump file [12]
  113. o tool_operate: propagate error codes for missing URL after --next [4]
  114. o tool_progress: shut off progress meter for --silent in parallel [8]
  115. o tool_writeout_json. fix the output for duplicate header names [76]
  116. o transfer: limit Windows SO_SNDBUF updates to once a second [73]
  117. o url: fix cookielist memleak when curl_easy_reset [106]
  118. o url: fix logic in connection reuse to deny reuse on "unclean" connections [86]
  119. o url: fix the SSH connection reuse check [101]
  120. o url: only reuse connections with same GSS delegation [97]
  121. o url: remove dummy protocol handler [100]
  122. o urlapi: '%' is illegal in host names [80]
  123. o urlapi: avoid mutating internals in getter routine [79]
  124. o urlapi: parse IPv6 literals without ENABLE_IPV6 [61]
  125. o urlapi: take const args in _dup and _get functions [78]
  126. o wildcard: remove files and move functions into ftplistparser.c
  127. o winbuild: fix makefile clean [31]
  128. o wolfssl: add quic/ngtcp2 detection in cmake, and fix builds [113]
  129. o wolfSSL: ressurect the BIO `io_result` [54]
  130. o ws: keep the socket non-blocking [41]
  131. o x509asn1.c: use correct format specifier for infof() call [47]
  132. o x509asn1: use plain %x, not %lx, when the arg is an int [87]
  133. This release includes the following known bugs:
  134. o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
  135. Planned upcoming removals include:
  136. o gskit
  137. o NSS
  138. o support for space-separated NOPROXY patterns
  139. See https://curl.se/dev/deprecate.html for details
  140. This release would not have looked like this without help, code, reports and
  141. advice from friends like these:
  142. Andy Alt, Balakrishnan Balasubramanian, Boris Okunskiy, Brad Spencer,
  143. Casey Bodley, Cristian Morales Vega, Dan Fandrich, Daniel Stenberg,
  144. Evgeny Grin (Karlson2k), finkjsc on github, Grisha Levit, Harry Sintonen,
  145. Hiroki Kurosawa, Ilmari Lauhakangas, JackBoosY on github, Jan Engelhardt,
  146. Jelle van der Waa, Jérémy Rabasco, Jerome St-Louis, Maciej Domanski,
  147. Marcel Raad, marski on github, Master Inspire, Matt Jolly,
  148. opensslonzos-github on github, Patrick Monnerat, Philip Heiduck,
  149. Philipp Engel, Ray Satiro, rcombs on github, rwmjones on github,
  150. SandakovMM on github, SendSonS on github, Sergey Fionov, Sergey Ryabinin,
  151. Sergio Mijatovic, Shankar Jadhavar, Stefan Eissing, u20221022 on github,
  152. Viktor Szakats, 積丹尼 Dan Jacobson
  153. (41 contributors)
  154. References to bug reports and discussions on issues:
  155. [1] = https://curl.se/bug/?i=10547
  156. [2] = https://curl.se/bug/?i=10547
  157. [3] = https://curl.se/bug/?i=10568
  158. [4] = https://curl.se/bug/?i=10558
  159. [5] = https://curl.se/bug/?i=10564
  160. [6] = https://curl.se/bug/?i=10566
  161. [7] = https://curl.se/bug/?i=10687
  162. [8] = https://curl.se/bug/?i=10573
  163. [9] = https://curl.se/bug/?i=10270
  164. [10] = https://curl.se/bug/?i=10456
  165. [11] = https://curl.se/bug/?i=10507
  166. [12] = https://curl.se/bug/?i=10570
  167. [13] = https://curl.se/bug/?i=10508
  168. [14] = https://curl.se/bug/?i=10634
  169. [15] = https://curl.se/bug/?i=10605
  170. [16] = https://curl.se/bug/?i=10602
  171. [17] = https://curl.se/bug/?i=10622
  172. [18] = https://curl.se/bug/?i=10599
  173. [19] = https://curl.se/bug/?i=10597
  174. [20] = https://curl.se/bug/?i=10596
  175. [21] = https://curl.se/bug/?i=10596
  176. [22] = https://curl.se/bug/?i=10596
  177. [23] = https://curl.se/bug/?i=10590
  178. [24] = https://curl.se/bug/?i=10590
  179. [25] = https://curl.se/bug/?i=10590
  180. [26] = https://curl.se/bug/?i=10593
  181. [27] = https://curl.se/bug/?i=10501
  182. [28] = https://curl.se/bug/?i=10633
  183. [29] = https://curl.se/bug/?i=10585
  184. [30] = https://curl.se/bug/?i=10491
  185. [31] = https://curl.se/bug/?i=10576
  186. [32] = https://curl.se/bug/?i=10574
  187. [33] = https://curl.se/bug/?i=10589
  188. [34] = https://curl.se/bug/?i=10513
  189. [35] = https://curl.se/bug/?i=10635
  190. [36] = https://curl.se/bug/?i=10603
  191. [37] = https://curl.se/bug/?i=10630
  192. [38] = https://curl.se/bug/?i=10638
  193. [39] = https://curl.se/bug/?i=10629
  194. [40] = https://curl.se/bug/?i=10623
  195. [41] = https://curl.se/bug/?i=10615
  196. [42] = https://curl.se/bug/?i=10601
  197. [43] = https://curl.se/bug/?i=10667
  198. [44] = https://curl.se/bug/?i=10628
  199. [45] = https://curl.se/bug/?i=10617
  200. [46] = https://curl.se/bug/?i=10619
  201. [47] = https://curl.se/bug/?i=10614
  202. [48] = https://curl.se/bug/?i=10672
  203. [49] = https://curl.se/bug/?i=10077
  204. [50] = https://curl.se/bug/?i=10077
  205. [51] = https://curl.se/bug/?i=10077
  206. [52] = https://curl.se/bug/?i=10675
  207. [53] = https://curl.se/bug/?i=10688
  208. [54] = https://curl.se/bug/?i=10716
  209. [55] = https://curl.se/bug/?i=6284
  210. [56] = https://curl.se/bug/?i=10681
  211. [57] = https://curl.se/bug/?i=6178
  212. [58] = https://curl.se/bug/?i=10718
  213. [59] = https://curl.se/bug/?i=10639
  214. [60] = https://curl.se/bug/?i=10665
  215. [61] = https://curl.se/bug/?i=10660
  216. [62] = https://curl.se/bug/?i=9843
  217. [63] = https://curl.se/bug/?i=10662
  218. [64] = https://curl.se/bug/?i=10651
  219. [65] = https://curl.se/bug/?i=10721
  220. [66] = https://curl.se/bug/?i=10646
  221. [67] = https://curl.se/bug/?i=10719
  222. [68] = https://curl.se/bug/?i=10713
  223. [69] = https://curl.se/bug/?i=10626
  224. [70] = https://curl.se/bug/?i=10645
  225. [71] = https://curl.se/bug/?i=10449
  226. [72] = https://curl.se/bug/?i=10632
  227. [73] = https://curl.se/bug/?i=10611
  228. [74] = https://curl.se/bug/?i=10730
  229. [75] = https://curl.se/bug/?i=10749
  230. [76] = https://curl.se/bug/?i=10704
  231. [77] = https://curl.se/bug/?i=10704
  232. [78] = https://curl.se/bug/?i=10708
  233. [79] = https://curl.se/bug/?i=10708
  234. [80] = https://curl.se/bug/?i=10711
  235. [81] = https://curl.se/bug/?i=10747
  236. [82] = https://curl.se/bug/?i=10710
  237. [83] = https://curl.se/bug/?i=10673
  238. [84] = https://curl.se/bug/?i=10666
  239. [85] = https://curl.se/bug/?i=10701
  240. [86] = https://curl.se/bug/?i=10690
  241. [87] = https://curl.se/bug/?i=10689
  242. [88] = https://curl.se/bug/?i=10693
  243. [89] = https://curl.se/bug/?i=10692
  244. [90] = https://curl.se/bug/?i=10670
  245. [91] = https://curl.se/bug/?i=10677
  246. [92] = https://curl.se/bug/?i=10742
  247. [93] = https://curl.se/bug/?i=10740
  248. [94] = https://curl.se/bug/?i=10722
  249. [95] = https://curl.se/bug/?i=7229
  250. [96] = https://curl.se/bug/?i=10715
  251. [97] = https://curl.se/bug/?i=10731
  252. [98] = https://curl.se/bug/?i=10738
  253. [99] = https://curl.se/bug/?i=10729
  254. [100] = https://curl.se/bug/?i=10727
  255. [101] = https://curl.se/bug/?i=10735
  256. [102] = https://curl.se/bug/?i=10723
  257. [103] = https://curl.se/bug/?i=10732
  258. [104] = https://curl.se/bug/?i=10728
  259. [105] = https://curl.se/bug/?i=10762
  260. [106] = https://curl.se/bug/?i=10694
  261. [108] = https://curl.se/bug/?i=10764
  262. [112] = https://curl.se/bug/?i=9995
  263. [113] = https://curl.se/bug/?i=10739
  264. [114] = https://curl.se/bug/?i=10717
  265. [116] = https://curl.se/bug/?i=10750
  266. [117] = https://curl.se/bug/?i=10756
  267. [118] = https://curl.se/bug/?i=10699
  268. [120] = https://curl.se/bug/?i=10745