tunnelfetch 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +22 -17
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -819,16 +819,21 @@ Workers Standard bills $5/month including 10 million requests and 30 million CPU
819
819
  $0.30 per additional million requests and $0.02 per additional million CPU milliseconds. Applying
820
820
  the measurements above, with the charge split out so it is clear what is yours to change:
821
821
 
822
- | Workload | CPU/request | 10M/mo, cold | 10M/mo, warmed | 1B/mo, cold | 1B/mo, warmed |
823
- | --- | --- | --- | --- | --- | --- |
824
- | Platform `fetch`, 16 KB — reference; it cannot use a proxy | 0.3 ms | $5.00 | $5.00 | $307.40 | $307.40 |
825
- | Platform `fetch`, 4 MB — same reference, measured | 3.2 ms | $5.04 | $5.04 | $365.40 | $365.40 |
826
- | Pooled connection, 16 KB pages | 3.1 ms | $5.90 | $5.24 | $451.20 | $385.20 |
827
- | New connection per request, 16 KB | 10.6 ms | $7.41 | $6.75 | $602.20 | $536.20 |
828
- | Pooled connection, 1 MB pages | 53.3 ms | $15.94 | $15.28 | $1455.20 | $1389.20 |
829
- | New connection per request, 1 MB | 60.8 ms | $17.45 | $16.79 | $1606.20 | $1540.20 |
830
- | Pooled connection, 4 MB pages | 118.3 ms | $28.94 | $28.28 | $2755.20 | $2689.20 |
831
- | New connection per request, 4 MB | 125.8 ms | $30.45 | $29.79 | $2906.20 | $2840.20 |
822
+ | Workload | CPU/request | 10M/mo | 1B/mo |
823
+ | --- | --- | --- | --- |
824
+ | Platform `fetch`, 16 KB — reference; it cannot use a proxy | 0.3 ms | $8.06 | $311.00 |
825
+ | Platform `fetch`, 4 MB — same reference, measured | 3.2 ms | $8.64 | $369.00 |
826
+ | Pooled connection, 16 KB pages | 3.5 ms | $8.70 | $375.00 |
827
+ | New connection per request, 16 KB | 13.5 ms | $10.70 | $575.00 |
828
+ | Pooled connection, 1 MB pages | 51.5 ms | $18.30 | $1,335.00 |
829
+ | New connection per request, 1 MB | 61.5 ms | $20.30 | $1,535.00 |
830
+ | Pooled connection, 4 MB pages | 104 ms | $28.80 | $2,385.00 |
831
+ | New connection per request, 4 MB | 114 ms | $30.80 | $2,585.00 |
832
+
833
+ These follow the CPU table above and nothing else. An earlier version of this section was computed
834
+ from a superseded set of measurements and was left behind when that table was replaced, so the
835
+ document quoted 118.3 ms and 104 ms for the same row in two places. Any figure here that does not
836
+ fall out of the table above is a bug in this README.
832
837
 
833
838
  The reference row is given at two sizes because the platform's own `fetch` is **not flat** — it
834
839
  scales at about 0.82 ms per decompressed MB, measured on a size ladder from one CDN so that only the
@@ -851,14 +856,14 @@ The rows above are the default identity: gzip on the wire, AES-256-GCM, x25519.
851
856
  bundles every change together, which is not much use for deciding. Priced one at a time against a
852
857
  pooled 1 MB workload at a billion requests a month, warmed:
853
858
 
854
- | Change from the baseline | CPU/request | 1B/mo, warmed | Δ | Paid when |
859
+ | Change from the baseline | CPU/request | 1B/mo | Δ | Paid when |
855
860
  | --- | --- | --- | --- | --- |
856
- | baseline — gzip, AES-256-GCM, x25519 | 53.3 ms | $1,389 | — | always |
857
- | origin serves `br` instead of gzip | 57.6 ms | $1,474 | **+$85** | the origin chooses `br` |
858
- | server selects ChaCha20-Poly1305 | 56.3 ms | $1,448 | **+$59** | the server picks it over AES |
859
- | origin serves `zstd` instead of gzip | 56.1 ms | $1,444 | **+$55** | the origin chooses `zstd` |
860
- | X25519MLKEM768, 1 request per connection | 61.0 ms | $1,542 | **+$153** | every handshake |
861
- | X25519MLKEM768, 20 requests per connection | 53.3 ms | $1,390 | **+$0.15** | the same handshake, amortised |
861
+ | baseline — gzip, AES-256-GCM, x25519 | 51.5 ms | $1,335 | — | always |
862
+ | origin serves `br` instead of gzip | 55.8 ms | $1,421 | **+$86** | the origin chooses `br` |
863
+ | server selects ChaCha20-Poly1305 | 54.5 ms | $1,395 | **+$60** | the server picks it over AES |
864
+ | origin serves `zstd` instead of gzip | 54.3 ms | $1,391 | **+$56** | the origin chooses `zstd` |
865
+ | X25519MLKEM768, 1 request per connection | 59.2 ms | $1,489 | **+$154** | every handshake |
866
+ | X25519MLKEM768, 20 requests per connection | 51.5 ms | $1,335 | **+$0.15** | the same handshake, amortised |
862
867
 
863
868
  The last two rows are the same 0.15 ms of ML-KEM, and the difference between them is entirely
864
869
  connection reuse — which is the point worth taking from this table. Post-quantum key exchange is
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tunnelfetch",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "A fetch-shaped HTTP client that can route through HTTP CONNECT / HTTPS / SOCKS5 proxies on runtimes with only raw TCP, such as Cloudflare Workers. Implements TLS in userland because the runtime cannot verify a tunnelled peer.",
5
5
  "keywords": [
6
6
  "fetch",