HISTORY.md (13459B)
1 <!-- 2 Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 3 4 SPDX-License-Identifier: curl 5 --> 6 7 How curl Became Like This 8 ========================= 9 10 Towards the end of 1996, Daniel Stenberg was spending time writing an IRC bot 11 for an Amiga related channel on EFnet. He then came up with the idea to make 12 currency-exchange calculations available to Internet Relay Chat (IRC) 13 users. All the necessary data were published on the Web; he just needed to 14 automate their retrieval. 15 16 1996 17 ---- 18 19 On November 11, 1996 the Brazilian developer Rafael Sagula wrote and released 20 HttpGet version 0.1. 21 22 Daniel extended this existing command-line open-source tool. After a few minor 23 adjustments, it did just what he needed. The first release with Daniel's 24 additions was 0.2, released on December 17, 1996. Daniel quickly became the 25 new maintainer of the project. 26 27 1997 28 ---- 29 30 HttpGet 0.3 was released in January 1997 and now it accepted HTTP URLs on the 31 command line. 32 33 HttpGet 1.0 was released on April 8 1997 with brand new HTTP proxy support. 34 35 We soon found and fixed support for getting currencies over GOPHER. Once FTP 36 download support was added, the name of the project was changed and urlget 2.0 37 was released in August 1997. The http-only days were already passed. 38 39 Version 2.2 was released on August 14 1997 and introduced support to build for 40 and run on Windows and Solaris. 41 42 November 24 1997: Version 3.1 added FTP upload support. 43 44 Version 3.5 added support for HTTP POST. 45 46 1998 47 ---- 48 49 February 4: urlget 3.10 50 51 February 9: urlget 3.11 52 53 March 14: urlget 3.12 added proxy authentication. 54 55 The project slowly grew bigger. With upload capabilities, the name was once 56 again misleading and a second name change was made. On March 20, 1998 curl 4 57 was released. (The version numbering from the previous names was kept.) 58 59 (Unrelated to this project a company called Curl Corporation registered a US 60 trademark on the name "CURL" on May 18 1998. That company had then already 61 registered the curl.com domain back in November of the previous year. All this 62 was revealed to us much later.) 63 64 SSL support was added, powered by the SSLeay library. 65 66 August: first announcement of curl on freshmeat.net. 67 68 October: with the curl 4.9 release and the introduction of cookie support, 69 curl was no longer released under the GPL license. Now we are at 4000 lines of 70 code, we switched over to the MPL license to restrict the effects of 71 "copyleft". 72 73 November: configure script and reported successful compiles on several 74 major operating systems. The never-quite-understood -F option was added and 75 curl could now simulate quite a lot of a browser. TELNET support was added. 76 77 curl 5 was released in December 1998 and introduced the first ever curl man 78 page. People started making Linux RPM packages out of it. 79 80 1999 81 ---- 82 83 January: DICT support added. 84 85 OpenSSL took over and SSLeay was abandoned. 86 87 May: first Debian package. 88 89 August: LDAP:// and FILE:// support added. The curl website gets 1300 visits 90 weekly. Moved site to curl.haxx.nu. 91 92 September: Released curl 6.0. 15000 lines of code. 93 94 December 28: added the project on Sourceforge and started using its services 95 for managing the project. 96 97 2000 98 ---- 99 100 Spring: major internal overhaul to provide a suitable library interface. 101 The first non-beta release was named 7.1 and arrived in August. This offered 102 the easy interface and turned out to be the beginning of actually getting 103 other software and programs to be based on and powered by libcurl. Almost 104 20000 lines of code. 105 106 June: the curl site moves to "curl.haxx.se" 107 108 August, the curl website gets 4000 visits weekly. 109 110 The PHP guys adopted libcurl already the same month, when the first ever third 111 party libcurl binding showed up. CURL has been a supported module in PHP since 112 the release of PHP 4.0.2. This would soon get followers. More than 16 113 different bindings exist at the time of this writing. 114 115 September: kerberos4 support was added. 116 117 November: started the work on a test suite for curl. It was later re-written 118 from scratch again. The libcurl major SONAME number was set to 1. 119 120 2001 121 ---- 122 123 January: Daniel released curl 7.5.2 under a new license again: MIT (or 124 MPL). The MIT license is extremely liberal and can be combined with GPL 125 in other projects. This would finally put an end to the "complaints" from 126 people involved in GPLed projects that previously were prohibited from using 127 libcurl while it was released under MPL only. (Due to the fact that MPL is 128 deemed "GPL incompatible".) 129 130 March 22: curl supports HTTP 1.1 starting with the release of 7.7. This 131 also introduced libcurl's ability to do persistent connections. 24000 lines of 132 code. The libcurl major SONAME number was bumped to 2 due to this overhaul. 133 The first experimental ftps:// support was added. 134 135 August: The curl website gets 8000 visits weekly. Curl Corporation contacted 136 Daniel to discuss "the name issue". After Daniel's reply, they have never 137 since got back in touch again. 138 139 September: libcurl 7.9 introduces cookie jar and `curl_formadd()`. During the 140 forthcoming 7.9.x releases, we introduced the multi interface slowly and 141 without many whistles. 142 143 September 25: curl (7.7.2) is bundled in Mac OS X (10.1) for the first time. It was 144 already becoming more and more of a standard utility of Linux distributions 145 and a regular in the BSD ports collections. 146 147 2002 148 ---- 149 150 June: the curl website gets 13000 visits weekly. curl and libcurl is 151 35000 lines of code. Reported successful compiles on more than 40 combinations 152 of CPUs and operating systems. 153 154 To estimate the number of users of the curl tool or libcurl library is next to 155 impossible. Around 5000 downloaded packages each week from the main site gives 156 a hint, but the packages are mirrored extensively, bundled with numerous OS 157 distributions and otherwise retrieved as part of other software. 158 159 October 1: with the release of curl 7.10 it is released under the MIT license 160 only. 161 162 Starting with 7.10, curl verifies SSL server certificates by default. 163 164 2003 165 ---- 166 167 January: Started working on the distributed curl tests. The autobuilds. 168 169 February: the curl site averages at 20000 visits weekly. At any given moment, 170 there is an average of 3 people browsing the website. 171 172 Multiple new authentication schemes are supported: Digest (May), NTLM (June) 173 and Negotiate (June). 174 175 November: curl 7.10.8 is released. 45000 lines of code. ~55000 unique visitors 176 to the website. Five official web mirrors. 177 178 December: full-fledged SSL for FTP is supported. 179 180 2004 181 ---- 182 183 January: curl 7.11.0 introduced large file support. 184 185 June: curl 7.12.0 introduced IDN support. 10 official web mirrors. 186 187 This release bumped the major SONAME to 3 due to the removal of the 188 `curl_formparse()` function 189 190 August: curl and libcurl 7.12.1 191 192 Public curl release number: 82 193 Releases counted from the beginning: 109 194 Available command line options: 96 195 Available curl_easy_setopt() options: 120 196 Number of public functions in libcurl: 36 197 Amount of public website mirrors: 12 198 Number of known libcurl bindings: 26 199 200 2005 201 ---- 202 203 April: GnuTLS can now optionally be used for the secure layer when curl is 204 built. 205 206 April: Added the multi_socket() API 207 208 September: TFTP support was added. 209 210 More than 100,000 unique visitors of the curl website. 25 mirrors. 211 212 December: security vulnerability: libcurl URL Buffer Overflow 213 214 2006 215 ---- 216 217 January: We dropped support for Gopher. We found bugs in the implementation 218 that turned out to have been introduced years ago, so with the conclusion that 219 nobody had found out in all this time we removed it instead of fixing it. 220 221 March: security vulnerability: libcurl TFTP Packet Buffer Overflow 222 223 September: The major SONAME number for libcurl was bumped to 4 due to the 224 removal of ftp third party transfer support. 225 226 November: Added SCP and SFTP support 227 228 2007 229 ---- 230 231 February: Added support for the Mozilla NSS library to do the SSL/TLS stuff 232 233 July: security vulnerability: libcurl GnuTLS insufficient cert verification 234 235 2008 236 ---- 237 238 November: 239 240 Command line options: 128 241 curl_easy_setopt() options: 158 242 Public functions in libcurl: 58 243 Known libcurl bindings: 37 244 Contributors: 683 245 246 145,000 unique visitors. >100 GB downloaded. 247 248 2009 249 ---- 250 251 March: security vulnerability: libcurl Arbitrary File Access 252 253 April: added CMake support 254 255 August: security vulnerability: libcurl embedded zero in cert name 256 257 December: Added support for IMAP, POP3 and SMTP 258 259 2010 260 ---- 261 262 January: Added support for RTSP 263 264 February: security vulnerability: libcurl data callback excessive length 265 266 March: The project switched over to use git (hosted by GitHub) instead of CVS 267 for source code control 268 269 May: Added support for RTMP 270 271 Added support for PolarSSL to do the SSL/TLS stuff 272 273 August: 274 275 Public curl releases: 117 276 Command line options: 138 277 curl_easy_setopt() options: 180 278 Public functions in libcurl: 58 279 Known libcurl bindings: 39 280 Contributors: 808 281 282 Gopher support added (re-added actually, see January 2006) 283 284 2011 285 ---- 286 287 February: added support for the axTLS backend 288 289 April: added the cyassl backend (later renamed to wolfSSL) 290 291 2012 292 ---- 293 294 July: Added support for Schannel (native Windows TLS backend) and Darwin SSL 295 (Native Mac OS X and iOS TLS backend). 296 297 Supports Metalink 298 299 October: SSH-agent support. 300 301 2013 302 ---- 303 304 February: Cleaned up internals to always uses the "multi" non-blocking 305 approach internally and only expose the blocking API with a wrapper. 306 307 September: First small steps on supporting HTTP/2 with nghttp2. 308 309 October: Removed krb4 support. 310 311 December: Happy eyeballs. 312 313 2014 314 ---- 315 316 March: first real release supporting HTTP/2 317 318 September: Website had 245,000 unique visitors and served 236GB data 319 320 SMB and SMBS support 321 322 2015 323 ---- 324 325 June: support for multiplexing with HTTP/2 326 327 August: support for HTTP/2 server push 328 329 December: Public Suffix List 330 331 2016 332 ---- 333 334 January: the curl tool defaults to HTTP/2 for HTTPS URLs 335 336 December: curl 7.52.0 introduced support for HTTPS-proxy 337 338 First TLS 1.3 support 339 340 2017 341 ---- 342 343 July: OSS-Fuzz started fuzzing libcurl 344 345 September: Added MultiSSL support 346 347 The website serves 3100 GB/month 348 349 Public curl releases: 169 350 Command line options: 211 351 curl_easy_setopt() options: 249 352 Public functions in libcurl: 74 353 Contributors: 1609 354 355 October: SSLKEYLOGFILE support, new MIME API 356 357 October: Daniel received the Polhem Prize for his work on curl 358 359 November: brotli 360 361 2018 362 ---- 363 364 January: new SSH backend powered by libssh 365 366 March: starting with the 1803 release of Windows 10, curl is shipped bundled 367 with Microsoft's operating system. 368 369 July: curl shows headers using bold type face 370 371 October: added DNS-over-HTTPS (DoH) and the URL API 372 373 MesaLink is a new supported TLS backend 374 375 libcurl now does HTTP/2 (and multiplexing) by default on HTTPS URLs 376 377 curl and libcurl are installed in an estimated 5 *billion* instances 378 world-wide. 379 380 October 31: curl and libcurl 7.62.0 381 382 Public curl releases: 177 383 Command line options: 219 384 curl_easy_setopt() options: 261 385 Public functions in libcurl: 80 386 Contributors: 1808 387 388 December: removed axTLS support 389 390 2019 391 ---- 392 393 March: added experimental alt-svc support 394 395 August: the first HTTP/3 requests with curl. 396 397 September: 7.66.0 is released and the tool offers parallel downloads 398 399 2020 400 ---- 401 402 curl and libcurl are installed in an estimated 10 *billion* instances 403 world-wide. 404 405 January: added BearSSL support 406 407 March: removed support for PolarSSL, added wolfSSH support 408 409 April: experimental MQTT support 410 411 August: zstd support 412 413 November: the website moves to curl.se. The website serves 10TB data monthly. 414 415 December: alt-svc support 416 417 2021 418 ---- 419 420 February 3: curl 7.75.0 ships with support for Hyper as an HTTP backend 421 422 March 31: curl 7.76.0 ships with support for Rustls 423 424 July: HSTS is supported 425 426 2022 427 ---- 428 429 March: added --json, removed mesalink support 430 431 Public curl releases: 206 432 Command line options: 245 433 curl_easy_setopt() options: 295 434 Public functions in libcurl: 86 435 Contributors: 2601 436 437 The curl.se website serves 16,500 GB/month over 462M requests, the 438 official docker image has been pulled 4,098,015,431 times. 439 440 October: initial WebSocket support 441 442 2023 443 ---- 444 445 March: remove support for curl_off_t < 8 bytes 446 447 March 31: we started working on a new command line tool for URL parsing and 448 manipulations: trurl. 449 450 May: added support for HTTP/2 over HTTPS proxy. Refuse to resolve .onion. 451 452 August: Dropped support for the NSS library 453 454 September: added "variable" support in the command line tool. Dropped support 455 for the gskit TLS library. 456 457 October: added support for IPFS via HTTP gateway 458 459 December: HTTP/3 support with ngtcp2 is no longer experimental 460 461 2024 462 ---- 463 464 January: switched to "curldown" for all documentation 465 466 April 24: the curl container has been pulled more than six billion times 467 468 May: experimental support for ECH, dropped NTLM_WB 469 470 August 9: we adopted the wcurl tool into the curl organization 471 472 September 11: --help [option] 473 474 November 6: TLS 1.3 early data, WebSocket is official 475 476 December 21: dropped hyper 477 478 2025 479 ---- 480 481 February 5: first 0RTT for QUIC, ssl session import/export 482 483 February: experimental HTTPS RR support 484 485 February 22: The website served 62.95 TB/month; 12.43 billion requests 486 The docker image has been pulled 6373501745 times.