                 Changes in version 8.1.0 (2026-10-14)                  

    o   Win/MacOS: update to libcurl 8.14.20261014 (mainly CVE backports)

    o   Sanitize sensitive URLs from the call embedded in libcurl error conditions
	  so that it is no longer exposed via traceback()/sys.calls() (#454)

                 Changes in version 8.0.0 (2026-08-25)                  

    o   Package now exports constants for ENUM and bitmask values so we no longer
	  need to lookup symbols manually. See ?curl_options

    o   Fix -Wdiscarded-qualifiers warning on gcc-16

                 Changes in version 7.1.0 (2026-04-22)                  

    o   Everything now works out of the box under emscripten (webR) by automatically
	  bootstrapping a ws gateway.

    o   Increase max size of string returned by ie_proxy_info() to 65536

    o   Fix a unit test for libcurl 8.20

                 Changes in version 7.0.0 (2025-08-19)                  

    o   Major cleanup: packge now requires libcurl >= 7.73. Removed all conditioning
	  and fallbacks for older libcurl versions (#413).

    o   Removed the fallback ADA parser and unconditinoally use the curl URL parser.

    o   Removed the legacy type-checking code as we can unconditionally use the easy-
	  option API.

    o   Support option('netrc') to match base R >= 4.6.0.

    o   Setting any value in curl_modify_url() to NA or "" will now unset it.

                 Changes in version 6.4.0 (2025-06-22)                  

    o   Vendor a static libcurl on RHEL/CentOS/Rocky 7 and 8 because stock version is
	  too old now to support most functionality.

    o   curl_modify_url() and curl_parse_url() now force uppercase percentage codes
	  for url-encoding to match curl_escape()

    o   Error messages are now printed with a linebreak in between.

    o   Better documentation for handle_setform() and handle_getdata()

                 Changes in version 6.3.0 (2025-06-06)                  

    o   New function curl_modify_url()

    o   MacOS/Windows: update to libcurl 8.14.1

    o   MacOS: our static build of libcurl now links to the MacOS native LibreSSL
	  and nghttp in order to use the same keychain certificates as native curl.

                 Changes in version 6.2.3 (2025-05-24)                  

    o   Non blocking connections now wait for 10ms before returning no data to prevent
	  busy waiting when readBin is called in a loop. See #399

    o   Fix a flaky unit test

                 Changes in version 6.2.2 (2025-03-24)                  

    o   Fix a unit test for libcurl 8.13.0

    o   Cleanup build

                 Changes in version 6.2.1 (2025-02-19)                  

    o   Workaround for change of behavior in libcurl 8.12.0

    o   The multi-run fail callback argument now has a curl-error class

    o   Fixed a slowness in curl_echo() due to threading problem in httpuv

                 Changes in version 6.2.0 (2025-01-23)                  

    o   MacOS: we have temporarily switched to a static build of libcurl 8.11.1 until
	  apple updates their very buggy libcurl (#376)

    o   Fix LTO error for R_multi_setopt

    o   Fix parsing of #fragment links in curl_parse() (#366)

                 Changes in version 6.1.0 (2025-01-06)                  

    o   Fix a rchk bug

    o   Enable CURLOPT_PIPEWAIT by default to prefer multiplex when possible

    o   Enable setting max_streams in multi_set(), default to 10

    o   Allow open(curl::curl()) to be interrupted

    o   Interrupting a download no longer causes an error (#365)

                 Changes in version 6.0.1 (2024-11-14)                  

    o   Fix a build issue with libcurl 8.11.0

    o   Support multi_fdset() for connection objects (#355)

                 Changes in version 6.0.0 (2024-11-05)                  

    o   New curl_parse_url() function to expose curl URL parsing interface.

    o   Errors now have classes and more detailed messages

    o   Do not use shared connection pool for FTP requests (works around bug in
	  libcurl < 8.8.0)

    o   Properly clean handle when open() fails for a curl() connection

    o   Parameter 'timeout' renamed to 'multi-timeout' in multi_download()

    o   Default behavior is now to error if a download is stalled for 600 seconds

    o   The MacOS binary packages now require at least libcurl 7.80 which is included
	  with all current MacOS versions (13+) as well as recent patch releases for
	  legacy MacOS versions (11.7 and 12.7).

    o   Windows: update to libcurl 8.10.1

                 Changes in version 5.2.3 (2024-09-20)                  

    o   Remove some CMD check verbosity per new CRAN rules

    o   New maintainer email address

                 Changes in version 5.2.2 (2024-08-26)                  

    o   Disable a compression test for libcurl 8.7.1 which has a bug for deflate

    o   Change a unit test to work around firewall problems on CRANs WinBuilder

                 Changes in version 5.2.1 (2024-03-01)                  

    o   In handle_setheader(), setting a header to a non-empty whitespace string will
	  now send a blank header. Using an empty string will still remove the header
	  altogether (this has not changed).

    o   Internally simplify handle_setheader() as a wrapper for handle_setopt(httpheader)

    o   Fix an issue where curl_fetch_stream() might not return all bytes received
	  by the C layer if the server closed the connection mid-response.

    o   No longer enable CURLOPT_UNRESTRICTED_AUTH by default

    o   Fix code to build with -DR_NO_REMAP (add all the Rf_ prefixes)

                 Changes in version 5.2.0 (2023-12-08)                  

    o   The CURL_CA_BUNDLE envvar is now also used on non-Windows.

    o   curl_echo() now uses a random available port to run httpuv

    o   Add workaround for slowness in curl_echo() on Linux

    o   Fix a few printf format warnings

                 Changes in version 5.1.0 (2023-10-02)                  

    o   Windows: update to libcurl 8.3.0 + nghttp2 2-1.56 + openssl 3.1.2.

                 Changes in version 5.0.2 (2023-08-14)                  

    o   Fix a unit test for behavioral change in libcurl 8.0.0

    o   Support seekfunction callback

                 Changes in version 5.0.1 (2023-06-07)                  

    o   Setting verbose=TRUE now prints to R's stderr instead of the process, such that
	  it works better with some GUIs.

    o   multi_download() now sets mtime for downloaded files from server

    o   form_file() now supports setting an alternate file name (#290)

    o   Fix for multi_download() when downloading 0byte files

    o   Use a self hosted httpbin test server

                 Changes in version 5.0.0 (2023-01-12)                  

    o   New function multi_download() which supports concurrent downloads and resuming
	  download for large files, while giving detailed progress information.

    o   Windows: updated libcurl to 7.84.0 + nghttp2

    o   Windows: default to CURLSSLOPT_NATIVE_CA when using openssl unless an ennvar
	  with CURL_CA_BUNDLE is set.

    o   Use the new optiontype API for type checking if available (libcurl 7.73.0)

                 Changes in version 4.3.3 (2022-10-06)                  

    o   Add support for setting ssl_ctx_function callbacks

    o   Normalize curlopt_postfields to curlopt_copypostfields to transfer ownership
	  of the input data to libcurl.

    o   Fix strict-prototype errors

                 Changes in version 4.3.2 (2021-06-23)                  

    o   Windows: update binaries to openssl 1.1.1k and libssh2 1.9.0

    o   Windows: fix build for experimental ucrt toolchains

                 Changes in version 4.3.1 (2021-04-30)                  

    o   Make tests pass if 'httpuv' is not available (BDR)

    o   Some cleanup for Windows compilers

                  Changes in version 4.3 (2019-12-02)                   

    o   No longer enable HTTP/2 by default on libcurl < 7.62.0 because some old libcurl
	  versions have annoying HTTP/2 bugs which randomly cause requests to fail. Note
	  that libcurl 7.62 and up always enable HTTP/2 when possible, this doesn't change.

    o   Add paragraph to intro vignette that explain ENUM options, which are a common
	  source of bugs. Specifically explain CURLOPT_HTTP_VERSION.

    o   curl::has_internet() now checks that result of nslookup is actually correct.
	  This should detect offline networks with fake internal DNS.

    o   curl::send_mail() now supports TLS connections, by specifying the smtps://
	  protocol in the smtp_server argument. The use_ssl argument actually controls
	  whether STARTTLS is enabled; the function documentation has been updated to
	  clarify that, and the default for use_ssl has been changed to "try" (=TRUE).

    o   Fix build for gcc 10 (-fno-common) requested by CRAN.

                  Changes in version 4.2 (2019-09-24)                   

    o   Fix for old versions of libcurl (build was broken in 4.1 on RHEL / CentOS).

    o   Add hostname to timeout errors (#190)

                  Changes in version 4.1 (2019-09-16)                   

    o   Fixed typechecking code for new internal macro names in libcurl 7.66

    o   Rewrite typechecking to work better with clang and old libcurl (#192)

    o   has_internet() now checks for connectivity via a proxy server if one is detected

    o   Windows: respect the CURL_SSL_BACKEND variable for people that want to use OpenSSL.

    o   Windows: respect CURL_CA_BUNDLE if (and only if) CURL_SSL_BACKEND == openssl

    o   curl_download now writes to a temporary file, which is renamed to the destfile
	  upon success. This prevents corrupt files when a download fails or is interrupted.

    o   Automatically set forbid_reuse = TRUE in curl_echo() handles

    o   Update symbol table to 7.66.0

                  Changes in version 4.0 (2019-07-22)                   

    o   Stricter type checking for handle options based on <curl/typecheck-gcc.h> macros

    o   curl_symbols is now a function instead of a static table to allow easy filtering

    o   curl_fetch_memory now over-allocates also on unix to avoid many realloc calls

    o   Re-enable cookie unit test which should be fixed in curl 7.64.0

    o   Fix encoding of paths for downloading and uploading files (@jennybc, #183)

    o   Fix LTO declaration warning for R_get_proxy_for_url

    o   Better support for setting slist (string vector) options such as mail_rcpt

    o   New send_mail() function to send emails with the libcurl smtp client

    o   Add function curl_upload() to upload file to FTP or SCP server

    o   Windows: upgrade to libcurl 7.64.1

    o   Update symbol data to curl 7.64.1

                  Changes in version 3.3 (2019-01-10)                   

    o   The 'data' callback from multi_add() gains a 'final' parameter

    o   The 'data' callback from multi_add() can be given a file path to stream to files

    o   New internal efficient file_writer type used when 'data' callback is a file path

    o   Progress / Xfer callback functions are now explicitly protected (#157)

    o   Tweak some unit tests to give less false positives

    o   curl_echo() has been changed to return better structured output

    o   Added curl_fetch_echo() as a wrapper for curl_echo()

    o   Response for curl_fetch_memory() gains a 'type' field with the content-type

    o   Fix a unit test for OpenSSL 1.1.1

    o   Better default progress function if no progresfun or xferinfofun is set

    o   Skip unit tests if no internet is available

    o   Fix rchk and valgrind warnings from CRAN

    o   Updated symbol table up with curl 7.64.0

    o   Use native routine registration and visibility

                  Changes in version 3.2 (2018-03-28)                   

    o   Windows: Update libcurl to 7.59.0

    o   Update curl_symbols dataset to 7.59.0

    o   Fix an IDN unit test (malmö.se has messed up their SSL cert)

    o   Add unit test for multi_fdset

    o   Add backport of trimws for R 3.1

                  Changes in version 3.1 (2017-12-12)                   

    o   Fix potential memory bug in curl() when doubling the buffer is insufficient.

    o   Windows: update to libcurl 7.56.1, restore support for libssh2.

    o   Added unit test for curl_echo() to post large multipart data.

    o   Fix IDN unit test error "string has forbidden bi-directional properties"

                  Changes in version 3.0 (2017-10-06)                   

    o   MAJOR CHANGE ON WINDOWS: On Windows 7 / 2008-R2 and up we switch from OpenSSL to native Windows SSL
	  (secure channel). Therefore curl now uses certificates from the windows certificate manager.
	  This enables users on corporate/government networks to connect through enterprise proxies and such.
	  On Windows Vista/2008 and older (including CRAN) we still use OpenSSL to guarantee TLS 1.1/1.2 support.
	Other changes:

    o   Windows: updated libcurl to v7.56.0 with dual SSL and native IDN/SSPI

    o   multi_add() and curl_fetch_multi() gain an optional 'data' callback parameter

    o   New function multi_fdset() returns the file descriptors of a multi pool

    o   Add CURLOPT_PROXYAUTH = CURLAUTH_ANY to default handle settings

                 Changes in version 2.8.1 (2017-07-21)                  

    o   Windows: switch back to OpenSSL instead of SecureChannel because Windows 2008 (CRAN) does not
	  support TLS 1.1 and TLS 1.2 which is required for many servers now.

                         Changes in version 2.8                         

    o   Windows: EXPERIMENTAL: on R 3.5+ curl now uses SecureChannel instead of OpenSSL for https.

    o   Windows: updated libcurl to v7.54.1 with native windows IDN. Dropped nghttp2 and rtmp support.

    o   Windows: nslookup() now uses IdnToAscii() for non-ascii domains

    o   Add IDN unit tests on supported platforms

    o   Error messages from libcurl include more detail when available (via CURLOPT_ERRORBUFFER)

    o   Set a default CURLOPT_READFUNCTION because libcurls default can cause R to freeze

    o   Fix a bug for empty forms and/or empty form-fields (+ added unit tests for this)

    o   The 'multi_run()' function gains a parameter 'poll' to return immediately when a request completes.

    o   Disable 'Expect: 100-continue' for POST requests (deprecated in libcurl)

    o   Fix two rchk PROTECT warnings (thanks to Tomas Kalibera)

                  Changes in version 2.7 (2017-06-26)                   

    o   New function parse_headers_list() to parse response headers into named list

    o   nslookup() gains a parameter 'multi' to return multiple matches

    o   Automatically set 'POSTFIELDSIZE_LARGE' when setting 'POSTFIELDS' or 'COPYPOSTFIELDS' to raw vector

    o   Do not crash when passing invalid objects as handles

    o   Workaround for empty forms, i.e. calling handle_setform() with no arguments

                  Changes in version 2.6 (2017-04-27)                   

    o   nslookup() gains a parameter ipv4_only = TRUE (fixes unit test on Mavericks)

                  Changes in version 2.5 (2017-04-14)                   

    o   Add curl_echo() function for easy testing

    o   Add support for curlopt_xferinfofunction, used in curl_echo()

    o   Automatically set curlopt_noprogress = 0 when setting one of the progress functions

    o   Automatically use XFERINFOFUNCTION vs PROGRESSFUNCTION depending on libcurl version

    o   Default User-Agent is now: options("HTTPUserAgent")

    o   Requests will now abort if progress/xferinfo callback raises an error

    o   Open a connection with mode 'f' to skip stop_for_status() during open()

                  Changes in version 2.4 (2017-03-24)                   

    o   Windows: update libcurl to 7.53.1 with libssl 1.0.2k

    o   New form_data() function to POST form with string/raw values with custom conten-type

    o   Fix busy waiting for curl_fetch_stream()

    o   Tweaks for open(con, blocking = FALSE)

    o   Switch memcpy() to memmove() to please valgrind

    o   Assert that curl() connection is only opened in read mode

                  Changes in version 2.3 (2016-11-24)                   

    o   All interruptable handles now use a global pool to share connections. Fixes #79.

    o   Enable interruptable interface by default, even in non-interactive mode.

    o   Update libcurl on Windows to 7.51.0

    o   Unit tests now try serveral httpbin mirrors in case one goes down

    o   Support open(con, blocking = FALSE) and isIncomplete() for curl() connections

    o   Switch curl_fetch_stream to non-blocking implementation

                  Changes in version 2.2 (2016-10-21)                   

    o   Fixed bug in multi that did not actually enable or disable multiplexing.

    o   Switch unit tests to HTTP/2 server to get HTTP/2 testing coverage

    o   Fix big endian build on GLIBC systems (tnx Aurelien Jarno and Andreas Tille)

                  Changes in version 2.1 (2016-09-22)                   

    o   If libcurl >= 7.47 and was built --with-nghttp2, automatically enable HTTP/2
	  on HTTPS connections (matches behavior of 'curl' cmd util)

    o   Upgrade to libcurl 7.50.3 (--with-nghttp2) on Windows (Adds HTTP/2 support)

    o   Fix a unit test that would fail on fast servers

                  Changes in version 2.0 (2016-09-17)                   

    o   New multi interface for concurrent async requests!

    o   Updated vignette with simple multi examples

    o   Export handle_data() to get handle state

                  Changes in version 1.2 (2016-08-13)                   

    o   Fix for getaddrinfo GNU extension on some unix platforms

                  Changes in version 1.1 (2016-07-26)                   

    o   Fix ASAN warning in curl.c (reference after free)

                  Changes in version 1.0 (2016-07-24)                   

    o   Fix for FreeBSD

    o   Simplify handle refCount system

    o   Better handle locking to prevent using/modifying open handles

    o   Make unit tests always close connection to prevent 'unused connection' warnings

    o   Add support for interruptions in curl_download()

                 Changes in version 0.9.7 (2016-04-10)                  

    o   The non-blocking download method is now only used in interactive mode

    o   Use options(curl_interrupt = TRUE) to force nonblocking in non-interactive mode

    o   Updated libcurl on windows to 7.47.1. This should fix IPv6 problems.

    o   Update the curl_symbols table to 7.48

                 Changes in version 0.9.6 (2016-02-17)                  

    o   Use non-blocking code in curl_fetch_memory to support user interruptions.

    o   Configure script no longer assumes bash so it works on OpenBSD.

    o   Fix for Snow Leopard CRAN build server.

    o   Added has_internet() function.

                 Changes in version 0.9.5 (2016-01-23)                  

    o   Added nslookup() as cross-platform alternative to nsl()

                 Changes in version 0.9.4 (2015-11-20)                  

    o   Move the creation of the option table to ./R/options.R

    o   The curl_options() function gains an argument to filter by name

    o   Properly invoke winhttp.def file in Makevars.win (required for new toolchain)

                 Changes in version 0.9.3 (2015-08-25)                  

    o   Refactor configure script to use pkg-config

    o   Use the preprocessor to extract CURLOPT symbols during install

    o   Don't use setInternet2() in R > 3.2.2

                 Changes in version 0.9.2 (2015-08-08)                  

    o   Optimization for windows to make realloc in curl_fetch_memory faster

    o   Updated the curl_symbols table to 7.43

    o   Updated the static libraries on Windows:
	   * libcurl 7.43.0
	   * openssl 1.0.2d
	   * libssh2 1.6.0
	   * libiconv 1.14-5
	   * libidn 1.31-1

    o   New functions for Windows: ie_proxy_info and ie_get_proxy_for_url

                 Changes in version 0.9.1 (2015-07-04)                  

    o   Convert url argument to utf8 strings in escape/unescape

    o   Endian fix for BSD systems

    o   Add support for setting curlopt_xxx_large options

                  Changes in version 0.9 (2015-06-19)                   

    o   Fix for very old versions of libcurl (RHEL 5)

    o   Do not convert paths to UTF-8 (only URLs)

    o   Improve error message for unknown options

                  Changes in version 0.8 (2015-06-06)                   

    o   Fix for curl() character reader to invert byte-order on big endian architectures.

                  Changes in version 0.7 (2015-05-22)                   

    o   Rename the C function 'fetch' to 'fetchdata' because of Solaris conflict.

    o   Move warning about missing CA bundle on Windows to onAttach.

                  Changes in version 0.6 (2015-05-19)                   

    o   Validation of SSL certificates is now enabled by default if a bundle is available.

    o   Major rewrite to support configurable and reusable handles

    o   Added new_handle, handle_setopt, handle_setheaders, handle_setform, handle_reset, etc.

    o   Added curl_fetch interfaces for httr

    o   Add ie_proxy_settings to get system proxy configuration on windows

                  Changes in version 0.5 (2015-02-01)                   

    o   Check for CURLM_CALL_MULTI_PERFORM to support very old versions of libcurl

                  Changes in version 0.4 (2015-01-08)                   

    o   Fixed a memory bug that could cause R to crash

    o   Add curl_escape, curl_unescape

    o   Add curl_version and curl_options

                  Changes in version 0.3 (2014-12-01)                   

    o   Add curl_download function

    o   More efficient use of realloc

    o   Fix for older versions of libcurl (e.g. Snow Leopard)

    o   Add support for user interrupts while downloading (ESC or CTRL+C)

    o   Fixed bug that caused GC to corrupt connection object

    o   Refactoring and cleanup

                  Changes in version 0.2 (2014-11-20)                   

    o   add support for recycling connections

                         Changes in version 0.1                         

    o   initial release
