Vendor the existing url 2.5.8 release and align file parsing with WHATWG host inheritance, drive-letter handling, and empty path segments. Keep the dependency version and resource access policy unchanged.
Retain upstream test data and licenses, remove 39 fixed expected failures, and add parser, DOM/URL, and URL-policy regressions. Document the patch and pinned upstream revision in MOLI-PATCHES.md.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17,615 passed, 13 skipped); upstream all-features unit/WPT/doctests.
CLI and CDP WPT agree across 50 cases: 132 additional passing subtests, no new failures, and the file anchor case now passes 138/138. CDP smoke passes 42/43 groups; Puppeteer cannot start because node is missing, unchanged from baseline.
Publish typed invalidation flags under the environment lock and wake isolate owners only after releasing it. Bound page and worker notification work while preserving command FIFO, teardown safety, and observation ordering.
Remove stale wrapper-era dependencies and terminology, and add mailbox race and CDP burst regressions.
Remove the Date/Intl wrappers, custom date parser and per-Page replay state. Keep exclusive locale/timezone ownership in a process controller and refresh existing Page and Worker isolates through generation-bound notifications and observation boundaries, including nested Inspector pauses.
Release claims on session/target/context retirement, retain native coercion and locale matching, and cover lifecycle restoration with Rust, BiDi and process-isolated CDP regressions.
Move Fontconfig matching, substitution policy, and the Fontique lookup cache into moli-system-fonts. Keep CSS family adaptation in moli-layout, migrate tests and fixtures, and retain the Skia notice in source comments.
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.
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.
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.
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)
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.