Please read the history bottom-up. Note that the history might list some features that were implemented in beta versions and removed later but are still mentioned here. This history is a log of the programmer so that he can look up what has been done/tried/modified. Things that were implemented and removed later are marked with [VOID]. Version 2.0 (29-Apr-23) - Change: Updated documentation - Change: Updated inbuilt CA certificates to the latest ones from Mozilla (January 10th, 2023) - New [macOS]: Added build for the macOS ARM64 platform which is supported since Hollywood 10 - New [Linux/x64]: Added separate build for OpenSSL 3 for use with more recent Linux distros - Fix: Memory access fault when SFTP authentification failed (reported by Petteri Valli) - Fix [Android]: curl's verbose output is now visible in LogCat - New [Android]: libssh2 is now supported on Android as well which makes it possible to use the SCP and SFTP protocols (among others) with hURL - Change [Amiga]: hURL uses the system's root CA certificates now (MOSSYS:Data/SSL/curl-ca-bundle.crt on MorphOS and AmiSSL:Certs on the other platforms) - New: Added easy:Upkeep() method to perform connection upkeep checks - New: Added support for curl's MIME interface; this supersedes the old form interface which is still supported by hURL; use easy:MIME() to create a new MIME object and then you can use the following methods to work with the MIME object: mime:AddPart(), mime:Easy(), mime:Free(), mimepart:Subparts(), mimepart:Data(), mimepart:FileData(), mimepart:Headers(), mimepart:Name(), mimepart:Filename(), mimepart:Type() mimepart:Encoder(), mimepart:Free(); after you have initialized your MIME object, you can pass it to #CURLOPT_MIMEPOST - New: Added support for curl's URL interface; you can use hurl.URL() to construct a URL object and then use the following methods to configure the URL object: url:SetFragment(), url:SetHost() url:SetOptions(), url:SetPassword(), url:SetPath(), url:SetPort(), url:SetQuery(), url:SetScheme(), url:SetURL(), url:SetUser(), url:SetZoneID(), url:GetFragment(), url:GetHost(), url:GetOptions(), url:GetPassword(), url:GetPath(), url:GetPort(), url:GetQuery(), url:GetScheme(), url:GetURL(), url:GetUser(), url:GetZoneID(), url:Dup(), url:Free(); after you have initialized your URL object you can pass it to #CURLOPT_CURLU - New: Added #CURLINFO_TOTAL_TIME_T, #CURLINFO_NAMELOOKUP_TIME_T, #CURLINFO_CONNECT_TIME_T, #CURLINFO_PRETRANSFER_TIME_T, #CURLINFO_STARTTRANSFER_TIME_T, #CURLINFO_REDIRECT_TIME_T, #CURLINFO_APPCONNECT_TIME_T, #CURLINFO_RETRY_AFTER, #CURLINFO_EFFECTIVE_METHOD, #CURLINFO_PROXY_ERROR, #CURLINFO_REFERER, #CURLINFO_CAINFO, #CURLINFO_CAPATH for use with easy:GetInfo() - New: Added support for #CURLMOPT_MAX_CONCURRENT_STREAMS for multi objects - New: Added support for #CURLOPT_SSH_COMPRESSION, #CURLOPT_TIMEVALUE_LARGE, #CURLOPT_MAXAGE_CONN, #CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, #CURLOPT_HAPROXYPROTOCOL, #CURLOPT_DNS_SHUFFLE_ADDRESSES, #CURLOPT_TLS13_CIPHERS, #CURLOPT_DISALLOW_USERNAME_IN_URL, #CURLOPT_DOH_URL, #CURLOPT_UPLOAD_BUFFERSIZE, #CURLOPT_UPKEEP_INTERVAL_MS, #CURLOPT_HTTP09_ALLOWED, #CURLOPT_ALTSVC_CTRL, #CURLOPT_ALTSVC, #CURLOPT_SASL_AUTHZID, #CURLOPT_MAIL_RCPT_ALLOWFAILS, #CURLOPT_SSLCERT_BLOB, #CURLOPT_SSLKEY_BLOB, #CURLOPT_PROXY_SSLCERT_BLOB, #CURLOPT_PROXY_SSLKEY_BLOB, #CURLOPT_ISSUERCERT_BLOB, #CURLOPT_PROXY_ISSUERCERT, #CURLOPT_PROXY_ISSUERCERT_BLOB, #CURLOPT_SSL_EC_CURVES, #CURLOPT_HSTS_CTRL, #CURLOPT_HSTS, #CURLOPT_AWS_SIGV4, #CURLOPT_DOH_SSL_VERIFYPEER, #CURLOPT_DOH_SSL_VERIFYHOST, #CURLOPT_DOH_SSL_VERIFYSTATUS, #CURLOPT_CAINFO_BLOB, #CURLOPT_PROXYINFO_CAINFO_BLOB, #CURLOPT_MAXLIFETIME_CONN, #CURLOPT_MIME_OPTIONS, #CURLOPT_PROTOCOLS_STR, #CURLOPT_REDIR_PROTOCOLS_STR, #CURLOPT_WS_OPTIONS, #CURLOPT_CA_CACHE_TIMEOUT, #CURLOPT_QUICK_EXIT, #CURLOPT_MIMEPOST, #CURLOPT_CURLU, #CURLOPT_RESOLVER_START_FUNCTION, #CURLOPT_TRAILERFUNCTION, #CURLOPT_HSTSREADFUNCTION, #CURLOPT_HSTSWRITEFUNCTION, #CURLOPT_PREREQFUNCTION, #CURLOPT_SSH_HOSTKEYFUNCTION; you can set/unset these options either using the generic easy:SetOpt() and easy:UnsetOpt() methods or using the specific methods like easy:SetOpt_SSH_Compression() or by passing the options in the argument table when creating easy handles using hurl.Easy() - New [AROS]: Added AROS version of hURL; this requires AmiSSL4 because AmiSSL5 isn't available on AROS yet - New [OS3/OS4]: hURL uses AmiSSL 5 instead of AmiSSL 4 now - New: Updated to curl 8.0.1 and libssh2 1.10.0 - Change [MorphOS]: hURL on MorphOS doesn't use AmiSSL any longer but MorphOS' native implementation of OpenSSL 3 (openssl3.library); this means that hURL requires MorphOS 3.16 or better now - Fix: DownloadFile()'s "PostType" tag wasn't supported by hURL (reported by Petteri Valli) - Fix: The "Encoded" tag of the DownloadFile() and UploadFile() commands wasn't handled correctly by hURL (reported by Petteri Valli) - Fix: The "Fail404" tag of DownloadFile() was ignored by hURL (reported by Anbjorn Myren) Version 1.2 (20-Nov-21) - Change: Updated documentation - Change: Updated inbuilt CA certificates to the latest ones from Mozilla (October 26th, 2021) - New: Added some examples for doing some common jobs using the lowlevel interface - New [x64-linux/arm-linux]: Added separate builds for OpenSSL 1.1.1 for use on newer Linux versions that don't come with OpenSSL 1.0.2 any longer (reported by Niels Schapke) - New [Doc]: Added examples for #CURLOPT_HTTPHEADER, #CURLOPT_READFUNCTION and #CURLOPT_WRITEFUNCTION (requested by Michael Rupp) - New: Added support for Hollywood 9.0's new custom protocol interface; this means that Hollywood's DownloadFile() and UploadFile() commands will now support for all protocols that hURL supports as well; this should make things much easier for beginners who are struggling to get started with using hURL's functions directly Version 1.1 (21-Dec-20) - Change: Updated documentation - Change: Amiga installer will now also copy the plugins for all platforms to Hollywood's linker plugins directory so that they can be easily linked to executables (suggested by kas1e) - Change: Updated inbuilt CA certificates to the latest ones from Mozilla (December 8th, 2020) - New: multi:InfoRead() returns a fourth value now; this return value will contain the easy handle that has previously been added to the multi handle (requested by Amile) - New: Added support for SFTP and SCP; although hURL 1.0 claimed those to be supported they didn't work because hURL was compiled without libssh2; hURL 1.1 now contains libssh2 so SFTP and SCP will work as well (reported by Petteri Valli) - Fix: All options of type CURLOPT_XXX_LARGE (e.g. CURLOPT_RESUME_FROM_LARGE) were broken on pretty much all platforms except 64-bit Windows (reported by Petteri Valli) - Fix [MorphOS]: Fixed hURL to be compatible with the 68k version of AmiSSL (reported by Juan Carlos Herran Martin and Petteri Valli) Version 1.0 (31-Mar-19) - First Release