Commit Graph
77 Commits
Author SHA1 Message Date
ldm0 4b3b8993bb refactor(curl): share HTTP and WebSocket connection limits
Remove the separate WebSocket CURLSH connection cache so HTTP/1, HTTP/2 and WebSocket sockets compete for the existing host and total limits. Retain bounded session admission and message memory limits.

Pin the curl fork's connect-only eviction fix so quiet upgraded sockets remain owned until their connections close. Cover queueing, deadlines, cancellation, shutdown and HTTP/2 multiplexing under a full shared connection budget.
2026-09-11 01:47:10 +08:00
ldm0 4e63c1e8c6 test(curl): cover shared HTTP and WebSocket workloads 2026-09-11 01:47:10 +08:00
ldm0 150c01436a refactor(curl): drive HTTP and WebSocket on one owner 2026-09-11 01:47:10 +08:00
ldm0 d9ce1e216b chore(curl): add opt-in WebSocket owner diagnostics 2026-09-11 01:47:10 +08:00
ldm0 10b242f855 refactor(websocket): keep a single native frame in flight
Replace unused data/control send queues, admission semaphores and public
receipts with send_frame(). The browser session owns scheduling; a single
pending frame preserves partial writes and completes independently of
receive backpressure.

Reject overlapping submissions and retain submitted frames if their
waiting futures are dropped. Cover slot reuse, cancellation, transport
failure, partial writes and sends with a full receive queue.

Update curl-rust to 608f08d, which bounds native receive prefetch and fixes
the browser receive-backpressure regression exposed during validation.

Validation: cargo fmt --all; strict workspace/all-targets/all-features
Clippy; full nextest (17318 passed, 13 skipped). The unchanged browser
receive-backpressure test passed 40 stress iterations, and 561 related
tests passed all 3 stress iterations.
2026-09-10 14:37:03 +08:00
ldm0 7ed1ce8a93 feat(websocket): inherit browser TLS credentials 2026-09-10 14:37:03 +08:00
ldm0 c252a3367d fix(websocket): retain HTTP/1.0 upgrade connections 2026-09-10 14:37:03 +08:00
ldm0 49848795c4 test(websocket): cover browser lifecycle and transport backpressure 2026-09-10 14:37:03 +08:00
ldm0 391742c14b feat(websocket): use native curl transport 2026-09-10 14:37:03 +08:00
ldm0 7bc35983c1 feat(curl): add persistent websocket session runtime 2026-09-10 14:37:03 +08:00
ldm0 661526a6bd build: use lexmount curl-rust fork 2026-09-10 14:37:03 +08:00
ldm0 e194c2add8 refactor(html): centralize input type states
Extract an independently mergeable topic from wpt-misc-fix at
a70a96f9d1.

Source commits:
- 05e2cd5350

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-10 04:05:23 +08:00
ldm0 114508118a fix(fetch): honor credentials mode for TLS client identities 2026-09-09 19:44:04 +08:00
ldm0 17e8fa5cf9 refactor(html): extract window features parser 2026-09-09 17:58:17 +08:00
ldm0 e16cde5767 chore(release): update version to 1.1.5 2026-09-09 17:57:37 +08:00
ldm0 583fde024f refactor(compression): share the Brotli backend with curl
Replace brotli2 with brotlic so stream codecs and curl use the same
brotlic-sys 0.2.2 dependency. Remove the separate brotli-sys dependency
and preserve compression quality 5 and streaming finish handling.

Validation: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings.
Tests were skipped as requested.
2026-09-09 04:01:49 +08:00
ldm0 9e668c97e1 feat(compression): support Brotli streams with brotli2
Use the safe brotli2 streaming API. Preserve staged output, backpressure,
truncation and trailing-data errors, with coverage for Window, Worker,
empty and chunked input, large flush output, and codec reclamation.

Declare fastrand as a test dependency so the large-output regression test
also builds when this change is applied directly on main.

Validation on the independent branch: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings;
cargo nextest run --no-fail-fast (17215 passed, 13 skipped).
Python benchmark harness: 480 tests passed.

(cherry picked from commit d178f16726)
2026-09-09 01:53:03 +08:00
ldm0 40f9b0bee9 chore(release): update version to 1.1.4 2026-09-08 20:48:56 +08:00
ldm0 560dbaf743 fix(streams): implement native compression and decompression transforms 2026-09-08 17:58:01 +08:00
ldm0 358f4e11bb fix(renderer): release retired renderer I/O drivers
Require Tokio 1.53.1 so dropping worker wake receivers releases their registered wakers even while browser-context senders remain live. This frees stopped renderer I/O drivers instead of retaining an eventpoll/eventfd pair per closed target.

Cover deferred services, live services, and deferred-to-live initialization while preserving a live peer receiver.
2026-09-08 17:14:54 +08:00
ldm0 a05b346c5b fix(canvas): correct arc geometry and bound angle normalization 2026-09-06 04:18:23 +08:00
ldm0 9464837d57 chore(release): bump version to 1.1.3 2026-09-05 19:17:56 +08:00
ldm0 2c7a46352d perf(dom): compact named index strings 2026-09-05 00:51:49 +08:00
ldm0 8c34e035d3 Preserve raw bodies in fetch JSON output 2026-09-04 15:54:47 +08:00
ldm0 0da0f1cc47 fix(cssom): decode escaped property rule names 2026-09-04 04:21:19 +08:00
ldm0 1908b8b4ea perf(response): defer redundant body text copies 2026-09-04 02:08:02 +08:00
ldm0 1f41f19455 chore(release): bump version to 1.1.2 2026-09-04 01:15:56 +08:00
ldm0 62d2289b8c fix(v8): avoid embedding duplicate ICU data 2026-09-03 15:17:48 +08:00
ldm0 017c53de8c build(v8): migrate Moli to V8 15.2 2026-09-03 15:17:48 +08:00
ldm0 f59af15895 chore(release): bump version to 1.1.1 2026-09-01 17:58:43 +08:00
ldm0 b79476012f chore(release): bump version to 1.1.0 2026-09-01 04:58:38 +08:00
ldm0 c1204434f7 fix(layout): implement automatic table column sizing 2026-08-31 11:59:59 +08:00
ldm0 5547cb593d perf(site): compile public suffix rules into static trie 2026-08-31 03:59:56 +08:00
ldm0 b09fee1df2 feat(layout): expose resolved Grid tracks 2026-08-30 05:41:30 +08:00
ldm0 ba24bc7abe fix(layout): preserve calc lengths in intrinsic margins 2026-08-29 19:11:35 +08:00
ldm0 9720a46768 perf(style): narrow conservative invalidation fallback 2026-08-28 15:18:42 +08:00
ldm0 e5f4ef1f5f Resolve used aspect ratios at layout boundaries 2026-08-28 04:41:52 +08:00
ldm0 9cef93dc59 fix(css): honor document color schemes 2026-08-27 19:57:05 +08:00
ldm0 5e173f3a5a refactor(encoding): extract legacy charset detector 2026-08-27 17:53:51 +08:00
ldm0 23acc9d739 feat(encoding): detect unlabeled legacy HTML like Blink 2026-08-27 17:53:51 +08:00
ldm0 155d6321e5 fix(tls): use curl AWS-LC root probe 2026-08-27 02:04:51 +08:00
ldm0 1f97225733 build(crypto): replace vendored OpenSSL with AWS-LC 2026-08-27 02:04:51 +08:00
ldm0 a815619f32 refactor(webcrypto): move curve448 primitives to RustCrypto 2026-08-27 02:04:51 +08:00
ldm0 d7ce6655ff refactor(content-type): centralize parsing semantics 2026-08-26 20:28:00 +08:00
ldm0 63cf8b53d5 chore(release): bump version to 1.0.6 2026-08-26 20:11:52 +08:00
ldm0 30ae322561 chore(release): bump version to 1.0.5 2026-08-26 04:56:48 +08:00
Athul Nambiar eeb2ae6179 fix(headers): respect quoted strings when splitting header parameters 2026-08-26 03:47:19 +08:00
ldm0 9c49d2140b deps(websocket): unify webpki-roots on 1.x
Stripped moli: 123,520,056 -> 123,515,960 bytes (-4,096 bytes, -0.0033%).
2026-08-26 03:29:25 +08:00
ldm0 fce58f7468 deps(layout): upgrade parley to 0.11.1
Stripped moli: 124,163,128 -> 123,520,056 bytes (-643,072 bytes, -0.52%).
2026-08-26 03:29:25 +08:00
ldm0 36a19dea95 dep: remove unused dependencies 2026-08-26 03:29:25 +08:00