quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

FEATURES.md (6163B)


      1 <!--
      2 Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
      3 
      4 SPDX-License-Identifier: curl
      5 -->
      6 
      7 # Features -- what curl can do
      8 
      9 ## curl tool
     10 
     11  - config file support
     12  - multiple URLs in a single command line
     13  - range "globbing" support: [0-13], {one,two,three}
     14  - multiple file upload on a single command line
     15  - redirect stderr
     16  - parallel transfers
     17 
     18 ## libcurl
     19 
     20  - URL RFC 3986 syntax
     21  - custom maximum download time
     22  - custom lowest download speed acceptable
     23  - custom output result after completion
     24  - guesses protocol from hostname unless specified
     25  - supports .netrc
     26  - progress bar with time statistics while downloading
     27  - standard proxy environment variables support
     28  - have run on 101 operating systems and 28 CPU architectures
     29  - selectable network interface for outgoing traffic
     30  - IPv6 support on Unix and Windows
     31  - happy eyeballs dual-stack IPv4 + IPv6 connects
     32  - persistent connections
     33  - SOCKS 4 + 5 support, with or without local name resolving
     34  - *pre-proxy* support, for *proxy chaining*
     35  - supports username and password in proxy environment variables
     36  - operations through HTTP proxy "tunnel" (using CONNECT)
     37  - replaceable memory functions (malloc, free, realloc, etc)
     38  - asynchronous name resolving
     39  - both a push and a pull style interface
     40  - international domain names (IDN)
     41  - transfer rate limiting
     42  - stable API and ABI
     43  - TCP keep alive
     44  - TCP Fast Open
     45  - DNS cache (that can be shared between transfers)
     46  - non-blocking single-threaded parallel transfers
     47  - Unix domain sockets to server or proxy
     48  - DNS-over-HTTPS
     49  - uses non-blocking name resolves
     50  - selectable name resolver backend
     51 
     52 ## URL API
     53 
     54  - parses RFC 3986 URLs
     55  - generates URLs from individual components
     56  - manages "redirects"
     57 
     58 ## Header API
     59 
     60  - easy access to HTTP response headers, from all contexts
     61  - named headers
     62  - iterate over headers
     63 
     64 ## TLS
     65 
     66  - selectable TLS backend(s)
     67  - TLS False Start
     68  - TLS version control
     69  - TLS session resumption
     70  - key pinning
     71  - mutual authentication
     72  - Use dedicated CA cert bundle
     73  - Use OS-provided CA store
     74  - separate TLS options for HTTPS proxy
     75 
     76 ## HTTP
     77 
     78  - HTTP/0.9 responses are optionally accepted
     79  - HTTP/1.0
     80  - HTTP/1.1
     81  - HTTP/2, including multiplexing and server push
     82  - GET
     83  - PUT
     84  - HEAD
     85  - POST
     86  - multipart formpost (RFC 1867-style)
     87  - authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO)
     88    to server and proxy
     89  - resume transfers
     90  - follow redirects
     91  - maximum amount of redirects to follow
     92  - custom HTTP request
     93  - cookie get/send fully parsed
     94  - reads/writes the Netscape cookie file format
     95  - custom headers (replace/remove internally generated headers)
     96  - custom user-agent string
     97  - custom referrer string
     98  - range
     99  - proxy authentication
    100  - time conditions
    101  - via HTTP proxy, HTTPS proxy or SOCKS proxy
    102  - HTTP/2 or HTTP/1.1 to HTTPS proxy
    103  - retrieve file modification date
    104  - Content-Encoding support for deflate, gzip, brotli and zstd
    105  - "Transfer-Encoding: chunked" support in uploads
    106  - HSTS
    107  - alt-svc
    108  - ETags
    109  - HTTP/1.1 trailers, both sending and getting
    110 
    111 ## HTTPS
    112 
    113  - HTTP/3
    114  - using client certificates
    115  - verify server certificate
    116  - via HTTP proxy, HTTPS proxy or SOCKS proxy
    117  - select desired encryption
    118  - select usage of a specific TLS version
    119  - ECH
    120 
    121 ## FTP
    122 
    123  - download
    124  - authentication
    125  - Kerberos 5
    126  - active/passive using PORT, EPRT, PASV or EPSV
    127  - single file size information (compare to HTTP HEAD)
    128  - 'type=' URL support
    129  - directory listing
    130  - directory listing names-only
    131  - upload
    132  - upload append
    133  - upload via http-proxy as HTTP PUT
    134  - download resume
    135  - upload resume
    136  - custom ftp commands (before and/or after the transfer)
    137  - simple "range" support
    138  - via HTTP proxy, HTTPS proxy or SOCKS proxy
    139  - all operations can be tunneled through proxy
    140  - customizable to retrieve file modification date
    141  - no directory depth limit
    142 
    143 ## FTPS
    144 
    145  - implicit `ftps://` support that use SSL on both connections
    146  - explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain `ftp://`
    147    connection to use SSL for both or one of the connections
    148 
    149 ## SSH (both SCP and SFTP)
    150 
    151  - selectable SSH backend
    152  - known hosts support
    153  - public key fingerprinting
    154  - both password and public key auth
    155 
    156 ## SFTP
    157 
    158  - both password and public key auth
    159  - with custom commands sent before/after the transfer
    160  - directory listing
    161 
    162 ## TFTP
    163 
    164  - download
    165  - upload
    166 
    167 ## TELNET
    168 
    169  - connection negotiation
    170  - custom telnet options
    171  - stdin/stdout I/O
    172 
    173 ## LDAP
    174 
    175  - full LDAP URL support
    176 
    177 ## DICT
    178 
    179  - extended DICT URL support
    180 
    181 ## FILE
    182 
    183  - URL support
    184  - upload
    185  - resume
    186 
    187 ## SMB
    188 
    189  - SMBv1 over TCP and SSL
    190  - download
    191  - upload
    192  - authentication with NTLMv1
    193 
    194 ## SMTP
    195 
    196  - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM, Kerberos 5 and
    197    External
    198  - send emails
    199  - mail from support
    200  - mail size support
    201  - mail auth support for trusted server-to-server relaying
    202  - multiple recipients
    203  - via http-proxy
    204 
    205 ## SMTPS
    206 
    207  - implicit `smtps://` support
    208  - explicit "STARTTLS" usage to "upgrade" plain `smtp://` connections to use SSL
    209  - via http-proxy
    210 
    211 ## POP3
    212 
    213  - authentication: Clear Text, APOP and SASL
    214  - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM,
    215    Kerberos 5 and External
    216  - list emails
    217  - retrieve emails
    218  - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via
    219    custom requests
    220  - via http-proxy
    221 
    222 ## POP3S
    223 
    224  - implicit `pop3s://` support
    225  - explicit `STLS` usage to "upgrade" plain `pop3://` connections to use SSL
    226  - via http-proxy
    227 
    228 ## IMAP
    229 
    230  - authentication: Clear Text and SASL
    231  - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM,
    232    Kerberos 5 and External
    233  - list the folders of a mailbox
    234  - select a mailbox with support for verifying the `UIDVALIDITY`
    235  - fetch emails with support for specifying the UID and SECTION
    236  - upload emails via the append command
    237  - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS,
    238    STORE, COPY and UID via custom requests
    239  - via http-proxy
    240 
    241 ## IMAPS
    242 
    243  - implicit `imaps://` support
    244  - explicit "STARTTLS" usage to "upgrade" plain `imap://` connections to use SSL
    245  - via http-proxy
    246 
    247 ## MQTT
    248 
    249  - Subscribe to and publish topics using URL scheme `mqtt://broker/topic`