Skip to content

v5.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Nov 14:02
· 59 commits to develop since this release

Breaking Change

  • The prebuilt binary is now built with libcurl 8.17.0. Every breaking change introduced by libcurl 8 is also a breaking change for this version.
    Version: libcurl/8.17.0 OpenSSL/3.5.2 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.1.1 libssh2/1.10.0 nghttp2/1.66.0 ngtcp2/1.17.0 nghttp3/1.12.0 OpenLDAP/2.6.9
    Protocols: dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp, ws, wss
    Features: AsynchDNS, IDN, IPv6, Largefile, NTLM, SSL, libz, brotli, TLS-SRP, HTTP2, UnixSockets, HTTPS-proxy, alt-svc
    
  • Minimum supported Electron version is now Electron v38.0.0 (moving forward prebuilt binaries will only be available for the latest 2 versions of Electron).
  • Mininum supported libcurl version is now libcurl 7.81.0.
  • Windows 32-bit support is now dropped.
  • Minimum supported versions:
    • Node.js >= v22.20.0 (which bundles OpenSSL 3.5.2).
    • Electron >= v38.0.0.
    • libcurl >= v7.81.0.
    • Ubuntu >= v22.04.
    • Alpine >= 3.21
    • C++ compilers supporting c++20
  • The FileInfo object properties are now all in lowercase, to follow the libcurl struct more closely.
  • Errors thrown by the addon are now instances of one of the following classes:
    • CurlEasyError
    • CurlMultiError
    • CurlSharedError
      These classes extends the CurlError class. Previously the addon used to throw only native Javascript errors, such as Error, TypeError, etc.
      The curly related errors also inherit from the CurlError class, and do not have a isCurlError property anymore.
      Any caught error thrown from user callbacks will be added as the cause property of the error.
  • Every Easy handle is now initialized with default CA certificates from Node.js's tls module, by using the result of the getCACertificates function. This is done using CURLOPT_CAINFO_BLOB. This is a breaking change if you were passing custom CA certificates before using CAINFO, as CURLOPT_CAINFO_BLOB takes priority over it. If that is the case, you can avoid the default behavior by calling setOpt("CAINFO_BLOB", null) on the Easy handle. The TLS certificate is loaded into memory only once for each JavaScript context.
  • HSTSREADFUNCTION callback now receives an object with the maxHostLengthBytes property, which is the maximum length of the host name that can be returned by the callback.
  • The minimum macOS version is now Sonoma (13)
  • Curl.globalCleanup is a no-op now. The addon will automatically call curl_global_cleanup when the process exits. This method will be removed in a future major version.
  • Curl.globalInit is a no-op now. The addon will automatically call curl_global_init when the process starts. This method will be removed in a future major version.

Fixed

  • CurlHttpVersion.V3 not being set to the proper value (was not set to 30)

Added