curl and libcurl is a tool for transferring files using URL syntax. It supports HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP, POP3, IMAP, SMTP, RTSP, RTMP, and FILE, as well as HTTP-post, HTTP-put, cookies, FTP upload, resumed transfers, passwords, port numbers, SSL certificates, Kerberos, and proxies. It is powered by libcurl, the client-side URL transfer library. There are bindings to libcurl for about 40 languages and environments.
Homepage
Download
Recent Releases
8.11.112 Dec 2024 18:25
minor bugfix:
8.11.1 8.11.1 8.11.1 changes only .
:
.
build: ECH to always enable HTTPS RR.
build: MSVC UWP builds.
build: omit certain deps from `libcurl.pc` unless found via `pkg-config`.
build: use `_fseeki64()` on Windows, drop detections.
cmake: do not echo most inherited `LDFLAGS` to config files.
cmake: drop cmake args list from `buildinfo.txt`.
cmake: include `wolfssl/options.h` first.
cmake: remove legacy unused IMMEDIATE keyword.
cmake: restore cmake args list in `buildinfo.txt`.
cmake: set `CURL_STATICLIB` for static lib when `SHARE_LIB_OBJECT=OFF`.
cmake: sync GSS config code with other deps.
cmake: typo in comment.
cmake: work around `ios.toolchain.cmake` breaking feature-detections.
cmakelint: to check root `CMakeLists.txt`.
cmdline/ech.md: formatting cleanups.
configure: add MEs for disabled pkg-config references.
configure: do not echo most inherited `LDFLAGS` to config files.
configure: replace ` #` shell syntax.
cookie: treat cookie name case sensitively.
curl-rustls.m4: keep existing `CPPFLAGS`/`LDFLAGS` when detected.
curl.h: mark two error codes as obsolete.
curl: --continue-at is mutually exclusive with --no-clobber.
curl: --continue-at is mutually exclusive with --range.
curl: --continue-at is mutually exclusive with --remove-on-error.
curl: --test-duphandle in debuilds runs quot;duphandled quot;.
curl: do more command line parsing in sub functions.
curl: rename struct var to AIX build.
curl: use realtime in trace timestamps.
curl_multi_socket_all.md: soften the deprecation warning.
CURLOPT_PREREQFUNCTION.md: add result code on failure.
digest: produce a shorter cnonce in Digest headers.
DISTROS: update Alt Linux links.
dmaketgz: use --no-cache when building docker image.
docs: bring back ALTSVC.md and HSTS.md.
docs: document default `User-Agent`.
docs: suggest --ssl-reqd instead of --ftp-ssl.
duphandle: also init netrc.
ECH: enable support for the AWS-LC backend.
hostip: don apos;t use the resolver for FQDN loca
8.10.124 Nov 2024 15:05
minor bugfix:
8.10.1 8.10.1 8.10.1 changes only .
:
.
autotools: `--with-ca-embed` build rule.
cmake: ensure `CURL_USE_OPENSSL`/`USE_OPENSSL_QUIC` are set in sync.
cmake: MSH3 to appear on the feature list.
connect: store connection info when really done.
CURLMOPT_TIMERFUNCTION.md: emphasize that only a single timer should run.
FTP: partly revert eeb7c1280742f5c8fa48a4340fc1e1a1a2c7075a.
http2: when uploading data from stdin, eos forwarding.
http: make max-filesize check not count ignored bodies.
lib: AF_INET6 use outside of USE_IPV6.
libcurl-docs: CURLINFO_LOCAL_ work for QUIC as well as TCP.
multi: check that the multi handle is valid in curl_multi_assign.
QUIC: on connect, keep on trying on draining server.
request: correctly reset the eos_sent flag.
runtests: accecpt apos;quictls apos; as OpenSSL compatible.
rustls: minor logic in default cipher selection.
rustls: rustls-ffi 0.14.0 update.
rustls: support strong CSRNG data.
setopt: remove superfluous use of ternary expressions.
singleuse: drop `Curl_memrchr()` for no-HTTP builds.
test537: cap the rlimit max this test runs.
tests: tweak lock file handling and timers.
tool_cb_wrt: use quot;curl_response quot; if no file name in URL.
transfer: sendrecv() without interim poll.
vtls: `Curl_ssl_conn_config_match` doc param.
.
.
.
8.10.023 Nov 2024 22:45
major bugfix:
8.10.0 8.10.0 8.10.0 changes only .
Changes:
.
autotools: add `--enable-windows-unicode` option.
curl: --help option displays documentation for given cmdline option.
curl: add --skip-existing.
curl: for -O, use quot;default quot; as filename when the URL has none.
curl: make --rate accept quot;number of units quot;.
curl: make --show-headers the same as --include.
curl: support --dump-header to direct to stderr.
curl: support embedding a CA bundle and --dump-ca-embed.
curl: support repeated use of the verbose option; -vv etc.
curl: use libuv for parallel transfers with --test-event.
getinfo: add CURLINFO_POSTTRANSFER_TIME_T.
mbedtls: add CURLOPT_TLS13_CIPHERS support.
rustls: add support for setting TLS version and ciphers.
vtls: stop offering alpn http/1.1 for http2-prior-knowledge.
wolfssl: add CURLOPT_TLS13_CIPHERS support.
wolfssl: add support for ssl cert blob / ssl key blob options.
.
:
.
asyn-thread: stop using GetAddrInfoExW on Windows.
autotools: MS-DOS builds.
autotools: typo in tests/data target.
aws_sigv4: canon order for headers with same pre.
bearssl: setting tls version.
bearssl: improve shutdown handling.
BINDINGS: add zig binding.
build: add `iphlpapi` lib for libssh on Windows.
build: add `poll()` detection for cross-builds.
build: add options to disable SHA-512/256 hash algo.
build: check OS-native IDN first, then libidn2.
build: delete unused `REQUIRE_LIB_DEPS`.
build: drop unused `NROFF` reference.
build: drop unused feature-detection code for Apple `poll()`.
build: generate `buildinfo.txt` for test logs.
build: improve compiler version detection portability.
build: make `CURL_FORMAT_CURL_OFF_T U ` work with mingw-w64 lt;=7.0.0.
build: silence C4232 MSVC warnings in vcpkg ngtcp2 builds.
build: use -Wno-format-overflow.
buildconf.bat: tool_hugehelp.c generation.
cf-socket: pollset for listening.
cf-socket: prevent KEEPALIVE_FACTOR being set to 1000 for Windows.
cfilters: send flush.
CHANGES:
8.11.022 Nov 2024 15:30
minor bugfix:
8.9.102 Sep 2024 15:05
minor bugfix:
8.9.1 8.9.1 8.9.1 only .
:
.
cmake: detect `libssh` via `pkg-config`.
cmake: detect `nettle` when building with GnuTLS.
cmake: drop `if(PKG_CONFIG_FOUND)` guard for `pkg_check_modules()`.
configure: limit `__builtin_available` test to Darwin.
connect: connection shutdown for event based processing.
contrithanks.sh: use -F with -v to match lines as strings.
curl: more defensive socket code for --ip-tos.
CURLOPT_SSL_CTX_FUNCTION.md: mention CA caching.
CURLSHOPT_SHARE.md: mention sessions/cookies as not thread-safe.
example/multi-uv: remove the use of globals.
ftpserver.pl: make POP3 LIST serve content from the test file.
GHA/windows: increase timeout for vcpkg build step.
lib: survive some NULL input args.
macos: Apple SDK workaround for non-macOS targets.
misc: cleanup after removing years from copyright.
os400: build cli manual..
os400: workaround an IBM ASCII run-time library .
RELEASE-PROCEDURE.md: remove the initial build step.
runtests: fold timing details with GHA, sync `-r` tflags.
tests: provide FTP directory contents in the test file.
tidy-up: URL updates.
TODO: thread-safe sharing.
transfer: speed limiting for 32bit systems.
vtls: avoid forward declaration in MultiSSL builds.
wolfSSL: allow wolfSSL apos;s implementation of kyber to be used.
wolfssl: avoid calling get_cached_x509_store if store is uncachable.
wolfssl: CA store share .
x509asn1: unittests and for gtime2str.
.
.
.
8.9.013 Aug 2024 06:25
major bugfix:
8.9.0 8.9.0 8.9.0 only .
Changes:
.
curl: add --ip-tos (IP Type of Service / Traffic Class).
curl: add --mptcp.
curl: add --vlan-priority.
curl: add -w apos; num_retries apos;.
gnutls: support CA caching.
mbedtls: support CURLOPT_CERTINFO.
noproxy: patterns need to be comma separated.
socket: support binding to interface *AND IP.
tcpkeepalive: add CURLOPT_TCP_KEEPCNT and --keepalive-cnt.
urlapi: add CURLU_NO_GUESS_SCHEME.
wolfssl: support CA caching.
.
:
.
(lib)curl.rc: set deflag also for `CURLDE` and `UNITTESTS`.
asyn-thread: avoid using GetAddrInfoExW with impersonation.
aws-sigv4: url encode the canonical path.
BINDINGS: update java link to one that exists.
build: add De, TrackMemory, ECH to feature list.
build: add more supported attributes to the IAR compiler.
build: llvm 16 or older + Xcode 15 or newer, and gcc.
build: llvm 17 and older + macOS SDK 14.4 and newer.
build: sync warning options between autotools, cmake compilers.
build: tidy up `__builtin_available` feature checks (Apple).
build: untangle `CURLDE` and `DEBUILD` macros.
build: use `#error` instead of invalid syntax.
cd2nroff: convert two warnings to errors.
cd2nroff: use an empty quot;## quot; to signal end of.IP sequence.
cf-socket: improve SO_SNDBUF update for Winsock.
cf-socket: optimize curlx_nonblock() and check its return error.
cf-socket: remove obsolete recvbuf.
cf-socket: remove two quot;useless quot; assignments.
cfilters: make Curl_conn_connect always assign apos;done apos;.
cmake: add CURL_USE_GSASL option with detection + CI test.
cmake: allow `ENABLE_CURLDE=OFF` with `ENABLE_DE=ON`.
cmake: allow SOVERSION override with `CURL_LIBCURL_SOVERSION`.
cmake: alpha-sort feature list.
cmake: always build unit tests with the `testdeps` target.
cmake: bring `curl-config.cmake` r to `FindCURL`.
cmake: create `configurehelp.pm` like autotools does.
cmake: delete unused `HAVE_LIBSSH2`, `HAVE_LIBSOCKET` macros.
cmake: detect `libidn2` also via
8.8.023 May 2024 15:45
major bugfix:
.
8.8.0.
Changes:
.
curl_version_info: provide librtmp version.
file: add support for directory listings.
idn: add native AppleIDN (icucore) support for macOS/iOS.
lib: add curl_multi_waitfds.
mbedTLS: implement CURLOPT_SSL_CIPHER_LIST option.
NTLM_WB: drop support.
TLS: add support for ECH (Encrypted Client Hello).
urlapi: add CURLU_GET_EMPTY for empty queries and fragments.
.
:
.
appveyor: drop unnecessary `--clean-first` cmake option.
appveyor: guard against crash-build with VS2008.
appveyor: make gcc 6 mingw64 job build-only.
asyn-thread: curl_global_cleanup crash in Windows.
asyn-thread: Curl_thread_create result check.
autotools: delete unused functions.
autotools: `HAVE_IOCTLSOCKET_FIONBIO` test for gcc 14.
autotools: only probe for SGI MIPS compilers on IRIX.
bearssl: compiler warnings.
bearssl: use common code for cipher suite lookup.
bufq: remove duplicate word in comment.
-BOUNTY.md: clarify the third party situation.
build: prefer `USE_IPV6` macro internally (was: `ENABLE_IPV6`).
build: remove MacOSX-Framework script.
cd2nroff/manage: use UTC when SOURCE_DATE_EPOCH is set.
cf-https-connect: use timeouts as unsigned ints.
cf-socket: don apos;t try getting local IP without socket.
cf-socket: remove references to l_ip, l_port.
ci: add curl-for-win builds: Linux MUSL, macOS, Windows.
cmake: add `BUILD_EXAMPLES` option to build examples.
cmake: add librtmp/rtmpdump option and detection.
cmake: check fseeko after detecting HAVE_FILE_OFFSET_BITS.
cmake: do not pass linker flags to the static library tool.
cmake: enable `-pedantic-errors` for clang when `CURL_WERROR=ON`.
cmake: FindNGHTTP2 add static lib name to find_library call.
cmake: `CURL_WERROR=ON` for old CMake and use it in GHA/linux-old.
cmake: `HAVE_IOCTLSOCKET_FIONBIO` test with gcc 14.
cmake: up `DEPENDS` filename.
cmake: forward `USE_LIBRTMP` option to C.
cmake: generate misc manpages and install `mk-ca-bundle.pl`.
cmake: initialize `BUILD_TESTING` befor
8.7.129 Mar 2024 01:45
minor bugfix:
.
8.7.1.
:
.
empty tool_hugehelp.c file.
.
.
.
8.6.001 Feb 2024 21:25
major bugfix:
.
8.6.0.
Changes:
.
add CURLE_TOO_LARGE.
add CURLINFO_QUEUE_TIME_T.
add CURLOPT_SERVER_RESPONSE_TIMEOUT_MS: add.
asyn-thread: use GetAddrInfoExW on gt;= Windows 8.
configure: make libpsl detection failure cause error.
docs/cmdline: change to.md for cmdline docs.
docs: introduce quot;curldown quot; for libcurl man page format.
runtests: support -gl. Like -g but for lldb..
.
:
.
altsvc: free apos;as apos; when returning error.
appveyor: replace PowerShell with bash + parallel autotools.
appveyor: switch to out-of-tree builds.
asyn-ares: with modern c-ares, use its default timeout.
build: delete unused `HAVE_ GSSHEIMDAL,GSSMIT,HEIMDAL `.
build: delete/replace clang warning pragmas.
build: enable missing OpenSSF-recommended warnings, with .
build: `-Wconversion`/`-Wsign-conversion` warnings.
build: Windows ADDRESS_FAMILY detection.
build: more `-Wformat` .
build: remove redundant `CURL_PULL_*` settings.
cf-h1-proxy: no CURLOPT_USERAGENT in CONNECT with hyper.
cf-socket: show errno in tcpkeepalive error messages.
CI/distcheck: run full tests.
cmake: add option to disable building docs.
cmake: generation for system name iOS.
cmake: typo.
cmake: freshen up docs/INSTALL.cmake.
cmake: prefill/cache `HAVE_STRUCT_SOCKADDR_STORAGE`.
cmake: rework options to enable curl and libcurl docs.
cmake: when USE_MANUAL=YES, build the curl.1 man page.
cmdline-opts/write-out.d: remove spurious double quotes.
cmdline-opts: update availability for the *-ca-native options.
cmdline/gen: the sorting of the man page options.
configure: add libngtcp2_crypto_boringssl detection.
configure: no default int compile error in ipv6 detection.
configure: when enabling QUIC, check that TLS supports QUIC.
connect: remove margin from eyeballer alloc.
content_encoding: change return code to typedef apos;ed enum.
cookie.d: document use of empty string to enable cookie engine.
cookie: avoid fopen with empty file name.
curl.h: CURLOPT_DNS_SERVERS is only availab
8.5.009 Jan 2024 01:22
major bugfix:
7.65.027 May 2019 19:31
major bugfix:
7.63.005 Feb 2019 16:58
major bugfix:
7.40.009 Jan 2015 06:45
major feature:
http_digest: Added support for Windows SSPI based authentication.
version info: Added Kerberos V5 to the supported features.
Makefile: Added VC targets for WinIDN.
config-win32: Introduce build targets for VS2012+.
SSL: Add PEM format support for public key pinning.
smtp: Added support for the conversion of Unix newlines during mail send.
smb: Added initial support for the SMB/CIFS protocol.
Added support for HTTP over unix domain sockets, via
CURLOPT_UNIX_SOCKET_PATH and --unix-socket.
SASL: Added support for GSS-API based Kerberos V5 authentication .
7.38.011 Sep 2014 16:44
minor feature:
Various bug and two security fixes for cookie leaks were applied.
CURLE_HTTP2 is a new error code.
CURLAUTH_NEGOTIATE is a new auth define.
CURL_VERSION_GSSAPI is a new capability bit.
No longer use fbopenssl for anything.
schannel: use CryptGenRandom for random numbers.
axtls: define curlssl_random using axTLS's PRNG.
cyassl: use RNG_GenerateBlock to generate a good random number.
findprotocol: show unsupported protocol within quotes.
version: detect and show LibreSSL.
version: detect and show BoringSSL.
imap/pop3/smtp: Kerberos (SASL GSSAPI) authentication via Windows SSPI.
http2: requires nghttp2 0.6.0 or later.
7.37.121 Jul 2014 21:13
minor feature:
bits.close: introduce connection close tracking. darwinssl: Add support for --cacert. polarssl: add ALPN support. docs: Added new option man pages.