From 91c70867ff2a09247385f95ccf33ecac511581b3 Mon Sep 17 00:00:00 2001 From: streamkit-devin Date: Sat, 27 Jun 2026 09:09:50 +0000 Subject: [PATCH 1/5] feat(plugins): bump servo to 0.3.0 and add auth config for private pages Upgrade the native Servo web-renderer plugin from servo 0.1 to 0.3.0 and wire a new optional `auth` config through ServoConfig to WebView creation. - Custom request headers / bearer token attached to the initial navigation via the 0.3.0 UrlRequest/load_request API. - HTTP Basic/Digest answered non-interactively via the WebViewDelegate request_authentication hook. - Custom User-Agent applied to the process-global servo Preferences (affects all servo nodes). Auth is init-time only (not hot-swapped on UpdateConfig). Credentials are never logged and userinfo is stripped from logged URLs. Signed-off-by: streamkit-devin --- docs/public/registry/index.json | 8 +- plugins/native/servo/Cargo.lock | 2475 ++++++++-------------- plugins/native/servo/Cargo.toml | 8 +- plugins/native/servo/README.md | 42 +- plugins/native/servo/plugin.yml | 2 +- plugins/native/servo/src/config.rs | 241 ++- plugins/native/servo/src/servo_node.rs | 37 +- plugins/native/servo/src/servo_thread.rs | 71 +- 8 files changed, 1211 insertions(+), 1673 deletions(-) diff --git a/docs/public/registry/index.json b/docs/public/registry/index.json index 9cfa82b1a..9d64fd9a9 100644 --- a/docs/public/registry/index.json +++ b/docs/public/registry/index.json @@ -233,8 +233,14 @@ "id": "servo", "name": "Servo Web Renderer", "description": "Render web pages to RGBA8 video frames via the Servo web engine", - "latest": "0.1.0", + "latest": "0.2.0", "versions": [ + { + "version": "0.2.0", + "manifest_url": "https://streamkit.dev/registry/plugins/servo/0.2.0/manifest.json", + "signature_url": "https://streamkit.dev/registry/plugins/servo/0.2.0/manifest.minisig", + "published_at": "2026-06-27" + }, { "version": "0.1.0", "manifest_url": "https://streamkit.dev/registry/plugins/servo/0.1.0/manifest.json", diff --git a/plugins/native/servo/Cargo.lock b/plugins/native/servo/Cargo.lock index 74257d8d1..39cec7385 100644 --- a/plugins/native/servo/Cargo.lock +++ b/plugins/native/servo/Cargo.lock @@ -4,24 +4,15 @@ version = 4 [[package]] name = "accesskit" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5351dcebb14b579ccab05f288596b2ae097005be7ee50a7c3d4ca9d0d5a66f6a" +checksum = "d3b7f7f85a7e5f68090000ed7622545829afd484d210358702ae4cb97dd0c320" dependencies = [ "enumn", "serde", "uuid", ] -[[package]] -name = "accountable-refcell" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6afea9052e0b2d90e38572691d87194b2e5d8d6899b9b850b22aaab17e486252" -dependencies = [ - "backtrace", -] - [[package]] name = "addr2line" version = "0.25.1" @@ -129,9 +120,9 @@ checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" [[package]] name = "alloc-stdlib" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" dependencies = [ "alloc-no-stdlib", ] @@ -206,9 +197,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "app_units" @@ -277,12 +268,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -dependencies = [ - "serde", -] +checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" [[package]] name = "as-slice" @@ -293,20 +281,11 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "ash" -version = "0.38.0+1.3.281" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" -dependencies = [ - "libloading", -] - [[package]] name = "async-compression" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f9ee0f6e02ffd7ad5816e9464499fba7b3effd01123b515c41d1697c43dad1" +checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" dependencies = [ "compression-codecs", "compression-core", @@ -338,9 +317,9 @@ dependencies = [ [[package]] name = "async-tungstenite" -version = "0.34.0" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb26fbd2a93308b1c1b74ac4e494a11ac10db57c476882240573bdf961463520" +checksum = "8447f02eaa65412035e2d3eeaa3fc82bbb8d7137c84c5976b4af685136012ee9" dependencies = [ "atomic-waker", "futures-core", @@ -364,15 +343,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atomic_refcell" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c" +checksum = "21e4227379beff4205943696e6c3e0cd809bacdf3f0edd6e3dd153e2269571a4" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "av-scenechange" @@ -410,18 +389,18 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375082f007bd67184fb9c0374614b29f9aaa604ec301635f72338bb65386a53d" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" dependencies = [ "arrayvec", ] [[package]] name = "aws-lc-rs" -version = "1.16.3" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f" +checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" dependencies = [ "aws-lc-sys", "zeroize", @@ -429,9 +408,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.40.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7" +checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" dependencies = [ "cc", "cmake", @@ -460,18 +439,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -499,33 +466,18 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cexpr", "clang-sys", "itertools 0.13.0", "proc-macro2", "quote", "regex", - "rustc-hash 2.1.2", - "shlex", + "rustc-hash", + "shlex 1.3.0", "syn", ] -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bit_field" version = "0.10.3" @@ -540,9 +492,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -565,12 +517,6 @@ dependencies = [ "digest", ] -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - [[package]] name = "block-buffer" version = "0.10.4" @@ -600,9 +546,9 @@ dependencies = [ [[package]] name = "brotli" -version = "8.0.2" +version = "8.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -611,9 +557,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "5.0.0" +version = "5.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -638,15 +584,15 @@ dependencies = [ [[package]] name = "built" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" +checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "byte-slice-cast" @@ -688,9 +634,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" [[package]] name = "calendrical_calculations" @@ -713,22 +659,16 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.60" +version = "1.2.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" +checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" dependencies = [ "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cexpr" version = "0.6.0" @@ -796,9 +736,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -857,20 +797,11 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "codespan-reporting" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" -dependencies = [ - "unicode-width", -] - [[package]] name = "color" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18ef4657441fb193b65f34dc39b3781f0dfec23d3bd94d0eeb4e88cde421edb" +checksum = "2ec7c5eb7a16992b1904d76c517d170ab353b0e0b3d5a0c81a8a0cd1037893cf" dependencies = [ "bytemuck", ] @@ -899,9 +830,9 @@ dependencies = [ [[package]] name = "compression-codecs" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7b51a7d9c967fc26773061ba86150f19c50c0d65c887cb1fbe295fd16619b7" +checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" dependencies = [ "brotli", "compression-core", @@ -913,9 +844,9 @@ dependencies = [ [[package]] name = "compression-core" -version = "0.4.31" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" +checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" [[package]] name = "const-oid" @@ -929,8 +860,8 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d348c3856ad6a6b957d69dc8cf93e66fe9be5a7657fdd7028b1a56d2775e3fce" dependencies = [ - "base64 0.22.1", - "bitflags 2.11.1", + "base64", + "bitflags 2.13.0", "once_cell", "percent-encoding", "regex", @@ -993,7 +924,7 @@ checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", - "core-graphics-types 0.1.3", + "core-graphics-types", "foreign-types", "libc", ] @@ -1009,17 +940,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.11.1", - "core-foundation 0.10.1", - "libc", -] - [[package]] name = "core-text" version = "20.1.0" @@ -1124,9 +1044,9 @@ dependencies = [ [[package]] name = "cssparser" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +checksum = "8c9cdaae01d5ed7882b04d795e7f752f46ff52d2fa3b50a20d28c464510bba98" dependencies = [ "cssparser-macros", "dtoa-short", @@ -1138,9 +1058,9 @@ dependencies = [ [[package]] name = "cssparser-macros" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +checksum = "10a2a99df6e410a8ff4245aa2006499ea662245f967cc7c0a38c83ef8eb44dbf" dependencies = [ "quote", "syn", @@ -1217,9 +1137,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "data-url" @@ -1227,6 +1147,38 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" +[[package]] +name = "defmt" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +dependencies = [ + "defmt-parser", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.18", +] + [[package]] name = "der" version = "0.7.10" @@ -1256,7 +1208,6 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ - "powerfmt", "serde_core", ] @@ -1332,15 +1283,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", ] [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", @@ -1356,15 +1307,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "document-features" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" -dependencies = [ - "litrs", -] - [[package]] name = "dpi" version = "0.1.2" @@ -1428,9 +1370,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" @@ -1506,9 +1448,9 @@ dependencies = [ [[package]] name = "env_filter" -version = "1.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" +checksum = "900d271a03799a1ee8d1ca9b19893b48ca674a9284fefcfb85f05e74ed314217" dependencies = [ "log", "regex", @@ -1516,9 +1458,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.10" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" +checksum = "de671bd27a75a797dc9ae289ba1e77276e75e2026408aab65185384e2d5cd3f6" dependencies = [ "anstream", "anstyle", @@ -1625,23 +1567,9 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "fax" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" -dependencies = [ - "fax_derive", -] - -[[package]] -name = "fax_derive" -version = "0.2.0" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" [[package]] name = "fdeflate" @@ -1654,12 +1582,9 @@ dependencies = [ [[package]] name = "fearless_simd" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903" -dependencies = [ - "bytemuck", -] +checksum = "b97b65636e5b9ef369943878ac74335ba1c55c1cb6adbf1e2c293c624248d693" [[package]] name = "ff" @@ -1679,13 +1604,12 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" -version = "0.2.27" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" dependencies = [ "cfg-if", "libc", - "libredox", ] [[package]] @@ -1707,9 +1631,9 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.1.9" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" @@ -1739,11 +1663,17 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "font-types" -version = "0.10.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" +checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7" dependencies = [ "bytemuck", ] @@ -1754,7 +1684,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" dependencies = [ - "roxmltree", + "roxmltree 0.20.0", ] [[package]] @@ -1955,17 +1885,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -1974,7 +1893,7 @@ checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -1991,15 +1910,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", - "wasip2", - "wasip3", ] [[package]] @@ -2012,16 +1929,6 @@ dependencies = [ "polyval", ] -[[package]] -name = "gif" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" -dependencies = [ - "color_quant", - "weezl", -] - [[package]] name = "gif" version = "0.14.2" @@ -2058,6 +1965,23 @@ dependencies = [ "gl_generator", ] +[[package]] +name = "glifo" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d99fc21d493812643aae86d53b7bbd02f376434a90317e8a790bc209fdd6605e" +dependencies = [ + "bytemuck", + "foldhash 0.2.0", + "hashbrown 0.17.1", + "log", + "peniko", + "png", + "skrifa", + "smallvec", + "vello_common", +] + [[package]] name = "glob" version = "0.3.3" @@ -2066,9 +1990,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "glow" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5" dependencies = [ "js-sys", "slotmap", @@ -2078,78 +2002,18 @@ dependencies = [ [[package]] name = "glslopt" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba4741358604ca0848c27ecc069d68e62e11cde81e38aac1da3c54b79ab5adf" +checksum = "a9c406272113953698f579ad93ec5e909eae0b5f84f6839238b185081d0df04d" dependencies = [ "cc", ] -[[package]] -name = "glutin_wgl_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" -dependencies = [ - "gl_generator", -] - -[[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.11.1", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.11.1", -] - -[[package]] -name = "gpu-allocator" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" -dependencies = [ - "log", - "presser", - "thiserror 1.0.69", - "windows 0.58.0", -] - -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.11.1", - "gpu-descriptor-types", - "hashbrown 0.15.5", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.11.1", -] - [[package]] name = "grid" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e2d4c0a8296178d8802098410ca05d86b17a10bb5ab559b3fb404c1f948220" +checksum = "b40ca9252762c466af32d0b1002e91e4e1bc5398f77455e55474deb466355ff5" [[package]] name = "group" @@ -2163,36 +2027,26 @@ dependencies = [ ] [[package]] -name = "h2" -version = "0.3.27" +name = "guillotiere" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +checksum = "6b17e70c989c36bad147b27a58d148c0741c51448aa5653436547323e524d0ab" dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", + "euclid", ] [[package]] name = "h2" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.4.0", + "http 1.4.2", "indexmap", "slab", "tokio", @@ -2208,7 +2062,6 @@ checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", - "num-traits", "zerocopy", ] @@ -2233,10 +2086,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", - "serde", + "foldhash 0.1.5", ] [[package]] @@ -2247,9 +2097,12 @@ checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "hashbrown" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash 0.2.0", +] [[package]] name = "hashlink" @@ -2260,52 +2113,28 @@ dependencies = [ "hashbrown 0.15.5", ] -[[package]] -name = "headers" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" -dependencies = [ - "base64 0.21.7", - "bytes", - "headers-core 0.2.0", - "http 0.2.12", - "httpdate", - "mime", - "sha1", -] - [[package]] name = "headers" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" dependencies = [ - "base64 0.22.1", + "base64", "bytes", - "headers-core 0.3.0", - "http 1.4.0", + "headers-core", + "http 1.4.2", "httpdate", "mime", "sha1", ] -[[package]] -name = "headers-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" -dependencies = [ - "http 0.2.12", -] - [[package]] name = "headers-core" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.4.0", + "http 1.4.2", ] [[package]] @@ -2326,12 +2155,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" -[[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - [[package]] name = "hkdf" version = "0.12.4" @@ -2373,25 +2196,14 @@ dependencies = [ [[package]] name = "http" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" dependencies = [ "bytes", "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -2399,7 +2211,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.4.0", + "http 1.4.2", ] [[package]] @@ -2410,8 +2222,8 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.4.0", - "http-body 1.0.1", + "http 1.4.2", + "http-body", "pin-project-lite", ] @@ -2447,41 +2259,17 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", - "h2 0.4.13", - "http 1.4.0", - "http-body 1.0.1", + "h2", + "http 1.4.2", + "http-body", "httparse", "itoa", "pin-project-lite", @@ -2496,8 +2284,8 @@ version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.4.0", - "hyper 1.9.0", + "http 1.4.2", + "hyper", "hyper-util", "log", "rustls", @@ -2513,18 +2301,18 @@ version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-channel", "futures-util", - "http 1.4.0", - "http-body 1.0.1", - "hyper 1.9.0", + "http 1.4.2", + "http-body", + "hyper", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.3", + "socket2", "tokio", "tower-service", "tracing", @@ -2675,7 +2463,7 @@ dependencies = [ "displaydoc", "potential_utf", "utf8_iter", - "yoke 0.8.2", + "yoke 0.8.3", "zerofrom", "zerovec 0.11.6", ] @@ -3000,7 +2788,7 @@ dependencies = [ "serde", "stable_deref_trait", "writeable 0.6.3", - "yoke 0.8.2", + "yoke 0.8.3", "zerofrom", "zerotrie 0.2.4", "zerovec 0.11.6", @@ -3095,12 +2883,6 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1adcf7b613a268af025bc2a2532b4b9ee294e6051c5c0832d8bff20ac0232e68" -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "ident_case" version = "1.0.1" @@ -3120,9 +2902,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer 2.2.0", "icu_properties 2.2.0", @@ -3138,17 +2920,17 @@ dependencies = [ "byteorder-lite", "color_quant", "exr", - "gif 0.14.2", + "gif", "image-webp", "moxcms", "num-traits", - "png 0.18.1", + "png", "ravif", "rayon", "rgb", "tiff", - "zune-core 0.5.1", - "zune-jpeg 0.5.15", + "zune-core", + "zune-jpeg", ] [[package]] @@ -3163,15 +2945,15 @@ dependencies = [ [[package]] name = "imagesize" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" +checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c" [[package]] name = "imgref" -version = "1.12.0" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" +checksum = "89194689a993ab15268672e99e7b0e19da2da3268ac682e8f02d29d4d1434cd7" [[package]] name = "imsz" @@ -3186,9 +2968,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.17.0", - "serde", - "serde_core", + "hashbrown 0.17.1", ] [[package]] @@ -3234,21 +3014,21 @@ dependencies = [ [[package]] name = "ipc-channel" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a441490012d80e9aea75fb27503df8e87e9557dcfc6fe4244dde86bfc12e94e3" +checksum = "347ef783e380784658248bdb0b87ca1293e3e3df3fc7dee061e129aa5f013d61" dependencies = [ "crossbeam-channel", "libc", "mio", "postcard", "rand 0.9.4", - "rustc-hash 2.1.2", + "rustc-hash", "serde_core", "tempfile", "thiserror 2.0.18", "uuid", - "windows 0.61.3", + "windows", ] [[package]] @@ -3289,10 +3069,11 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.23" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +checksum = "34f877a98676d2fb664698d74cc6a51ce6c484ce8c770f05d0108ec9090aeb46" dependencies = [ + "defmt", "jiff-static", "log", "portable-atomic", @@ -3302,9 +3083,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.23" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +checksum = "0666b5ab5ecaca213fc2a85b8c0083d9004e84ee2d5f9a7e0017aaf50986f25f" dependencies = [ "proc-macro2", "quote", @@ -3313,27 +3094,32 @@ dependencies = [ [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys 0.3.1", + "jni-macros", + "jni-sys", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror 2.0.18", "walkdir", - "windows-sys 0.45.0", + "windows-link 0.2.1", ] [[package]] -name = "jni-sys" -version = "0.3.1" +name = "jni-macros" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" dependencies = [ - "jni-sys 0.4.1", + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", ] [[package]] @@ -3367,11 +3153,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.95" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -3400,22 +3187,11 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "serde", "unicode-segmentation", ] -[[package]] -name = "khronos-egl" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" -dependencies = [ - "libc", - "libloading", - "pkg-config", -] - [[package]] name = "khronos_api" version = "3.1.0" @@ -3424,23 +3200,13 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kurbo" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62" -dependencies = [ - "arrayvec", - "euclid", - "smallvec", -] - -[[package]] -name = "kurbo" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce9729cc38c18d86123ab736fd2e7151763ba226ac2490ec092d1dd148825e32" +checksum = "4b60dfc32f652b926df6192e55525b16d186c69d47876c3ead4da5cc9f8450e2" dependencies = [ "arrayvec", "euclid", + "polycool", "serde", "smallvec", ] @@ -3454,12 +3220,6 @@ dependencies = [ "spin", ] -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "lebe" version = "0.5.3" @@ -3468,15 +3228,15 @@ checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" [[package]] name = "libc" -version = "0.2.185" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libfuzzer-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" dependencies = [ "arbitrary", "cc", @@ -3498,18 +3258,6 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" -[[package]] -name = "libredox" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" -dependencies = [ - "bitflags 2.11.1", - "libc", - "plain", - "redox_syscall 0.7.4", -] - [[package]] name = "libsqlite3-sys" version = "0.35.0" @@ -3523,9 +3271,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.28" +version = "1.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc3a226e576f50782b3305c5ccf458698f92798987f551c6a02efe8276721e22" +checksum = "85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9" dependencies = [ "cc", "libc", @@ -3557,12 +3305,6 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" -[[package]] -name = "litrs" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" - [[package]] name = "lock_api" version = "0.4.14" @@ -3575,9 +3317,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "loop9" @@ -3637,55 +3379,25 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" [[package]] name = "memmap2" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] -[[package]] -name = "metal" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" -dependencies = [ - "bitflags 2.11.1", - "block", - "core-graphics-types 0.2.0", - "foreign-types", - "log", - "objc", - "paste", -] - [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "mime-multipart-hyper1" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc819448803ee517eb413276ca59613c2850a95c4fdcd87ec82c5a6ce6cdab1a" -dependencies = [ - "buf-read-ext", - "http 1.4.0", - "httparse", - "log", - "mime", - "tempfile", - "textnonce", -] - [[package]] name = "mime_guess" version = "2.0.5" @@ -3714,12 +3426,12 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.61.2", ] @@ -3773,9 +3485,9 @@ dependencies = [ [[package]] name = "mozjs" -version = "0.15.7" +version = "0.15.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226edc79aa3f990a61330d4011471910273f6ee6bbfd0dcb93b18f5a03505f6b" +checksum = "6ae3dcd73fd1aa7ab08c33c128d27243d07574874338b902872802c2b1d4b7d4" dependencies = [ "bindgen", "cc", @@ -3788,9 +3500,9 @@ dependencies = [ [[package]] name = "mozjs_sys" -version = "0.140.8-2" +version = "140.10.1-0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b50224a02c96e1e703f7d055377431333dfc5cd3a09ccf03f8a2c8a156c7af8" +checksum = "bf708f34816a335a5c019451a3776196d2c66eb7d4d950c04d4b781821e8feff" dependencies = [ "bindgen", "cc", @@ -3804,47 +3516,6 @@ dependencies = [ "walkdir", ] -[[package]] -name = "naga" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916cbc7cb27db60be930a4e2da243cf4bc39569195f22fd8ee419cd31d5b662c" -dependencies = [ - "arrayvec", - "bit-set", - "bitflags 2.11.1", - "cfg-if", - "cfg_aliases", - "codespan-reporting", - "half", - "hashbrown 0.15.5", - "hexf-parse", - "indexmap", - "libm", - "log", - "num-traits", - "once_cell", - "rustc-hash 1.1.0", - "spirv", - "thiserror 2.0.18", - "unicode-ident", -] - -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys 0.3.1", -] - [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -3853,9 +3524,9 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "no_std_io2" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b51ed7824b6e07d354605f4abb3d9d300350701299da96642ee084f5ce631550" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" dependencies = [ "memchr", ] @@ -3935,19 +3606,18 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.2.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-conv" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" [[package]] name = "num-derive" @@ -4044,7 +3714,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", "objc2-core-foundation", "objc2-core-graphics", @@ -4058,7 +3728,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2", "dispatch2", "libc", @@ -4071,7 +3741,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2", "dispatch2", "libc", @@ -4087,7 +3757,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2", "libc", "objc2", @@ -4101,7 +3771,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2-core-foundation", "objc2-core-graphics", ] @@ -4118,7 +3788,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", "objc2-core-foundation", ] @@ -4129,7 +3799,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "libc", "objc2", "objc2-core-foundation", @@ -4141,7 +3811,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", "objc2-foundation", ] @@ -4152,7 +3822,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2", "objc2-core-foundation", "objc2-foundation", @@ -4180,64 +3850,58 @@ dependencies = [ ] [[package]] -name = "once_cell" -version = "1.21.4" +name = "ohos-deviceinfo-sys" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +checksum = "ee8ebdc19fbffb06eead79d6ab628b05fa8514d5ac881540719d04469c772738" [[package]] -name = "once_cell_polyfill" -version = "1.70.2" +name = "ohos-media-sys" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +checksum = "6ffb75eb3dc3eefa0e4c9d641369b609091d77e395f1f56c9eaddead6e9330b6" +dependencies = [ + "ohos-sys-opaque-types", +] [[package]] -name = "opaque-debug" -version = "0.3.1" +name = "ohos-sys-opaque-types" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +checksum = "f0135000ddab1491bd02a60e855c02e71be855845ca354162c1e189dea79d015" [[package]] -name = "openssl-probe" -version = "0.2.1" +name = "ohos-window-sys" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +checksum = "2bd994e92b2c9daaa310068b45e3c3108d1a7c26a01daded0f3ddada692e688e" +dependencies = [ + "ohos-sys-opaque-types", +] [[package]] -name = "openxr" -version = "0.20.0" +name = "once_cell" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40adeaa3219baa4412a522742eeee152656763008a39c68a50fd3027fe37625e" -dependencies = [ - "libc", - "libloading", - "ndk-context", - "openxr-sys", -] +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] -name = "openxr-sys" -version = "0.12.0" +name = "once_cell_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b94052f57756896c60b504769568fc538808210e77190b69c69b467ee7eaaf" -dependencies = [ - "libc", -] +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] -name = "ordered-float" -version = "5.0.0" +name = "opaque-debug" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2c1f9f56e534ac6a9b8a4600bdf0f530fb393b5f393e7b4d03489c3cf0c3f01" -dependencies = [ - "num-traits", -] +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] -name = "ordermap" -version = "0.3.5" +name = "openssl-probe" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "p256" @@ -4295,7 +3959,7 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.18", + "redox_syscall", "smallvec", "windows-link 0.2.1", ] @@ -4356,13 +4020,13 @@ dependencies = [ [[package]] name = "peniko" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c76095c9a636173600478e0373218c7b955335048c2bcd12dc6a79657649d8" +checksum = "839c8299360d2e998bdb106dc0a6cd71dcc5f4df51df1b620361bf50e283cca6" dependencies = [ "bytemuck", "color", - "kurbo 0.12.0", + "kurbo", "linebender_resource_handle", "smallvec", ] @@ -4375,12 +4039,14 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "petgraph" -version = "0.4.13" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", - "ordermap", + "hashbrown 0.15.5", + "indexmap", + "serde", ] [[package]] @@ -4442,26 +4108,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" -[[package]] -name = "pin-project" -version = "1.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "pin-project-lite" version = "0.2.17" @@ -4496,12 +4142,6 @@ version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" -[[package]] -name = "plain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" - [[package]] name = "plane-split" version = "0.18.0" @@ -4513,26 +4153,13 @@ dependencies = [ "smallvec", ] -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - [[package]] name = "png" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "crc32fast", "fdeflate", "flate2", @@ -4550,6 +4177,15 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polycool" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50596ddc09eb5ad5f75cacd40209568e66df71baf86e1499a0e99c4cff12a5a6" +dependencies = [ + "arrayvec", +] + [[package]] name = "polyval" version = "0.6.2" @@ -4621,12 +4257,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" -[[package]] -name = "presser" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" - [[package]] name = "prettyplease" version = "0.2.37" @@ -4646,6 +4276,28 @@ dependencies = [ "elliptic-curve", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "proc-macro2" version = "1.0.106" @@ -4657,18 +4309,18 @@ dependencies = [ [[package]] name = "profiling" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" dependencies = [ "profiling-procmacros", ] [[package]] name = "profiling-procmacros" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" dependencies = [ "quote", "syn", @@ -4688,9 +4340,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick_cache" -version = "0.6.21" +version = "0.6.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a70b1b8b47e31d0498ecbc3c5470bb931399a8bfed1fd79d1717a61ce7f96e3" +checksum = "b9c6658afe513a3b484e3abfdaa0d03ef3c0bbf017542c178dd55f94eb3051f9" dependencies = [ "ahash", "equivalent", @@ -4699,9 +4351,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.45" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -4718,19 +4370,6 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.6" @@ -4752,16 +4391,6 @@ dependencies = [ "rand_core 0.9.5", ] -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - [[package]] name = "rand_chacha" version = "0.3.1" @@ -4782,15 +4411,6 @@ dependencies = [ "rand_core 0.9.5", ] -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - [[package]] name = "rand_core" version = "0.6.4" @@ -4809,21 +4429,6 @@ dependencies = [ "getrandom 0.3.4", ] -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "range-alloc" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" - [[package]] name = "rav1e" version = "0.8.1" @@ -4902,9 +4507,9 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.35.0" +version = "0.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" +checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" dependencies = [ "bytemuck", "font-types", @@ -4916,16 +4521,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.1", -] - -[[package]] -name = "redox_syscall" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" -dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -4950,9 +4546,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" dependencies = [ "aho-corasick", "memchr", @@ -4982,17 +4578,17 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "resvg" -version = "0.45.1" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" +checksum = "9be183ad6a216aa96f33e4c8033b0988b8b3ea6fd2359d19af5bac4643fd8e81" dependencies = [ - "gif 0.13.3", + "gif", "image-webp", "log", "pico-args", @@ -5000,7 +4596,7 @@ dependencies = [ "svgtypes", "tiny-skia", "usvg", - "zune-jpeg 0.4.21", + "zune-jpeg", ] [[package]] @@ -5042,8 +4638,8 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" dependencies = [ - "base64 0.22.1", - "bitflags 2.11.1", + "base64", + "bitflags 2.13.0", "serde", "serde_derive", "unicode-ident", @@ -5055,6 +4651,15 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" +[[package]] +name = "roxmltree" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1964b10c76125c36f8afe190065a4bf9a87bf324842c05701330bba9f1cacbb" +dependencies = [ + "memchr", +] + [[package]] name = "rsa" version = "0.9.10" @@ -5083,7 +4688,7 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -5097,12 +4702,6 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.2" @@ -5124,7 +4723,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys", @@ -5133,9 +4732,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.38" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "aws-lc-rs", "log", @@ -5148,9 +4747,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -5160,18 +4759,18 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" dependencies = [ "zeroize", ] [[package]] name = "rustls-platform-verifier" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", @@ -5196,9 +4795,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.12" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8279bb85272c9f10811ae6a6c547ff594d6a7f3c6c6b02ee9726d1d0dcfcdd06" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "aws-lc-rs", "ring", @@ -5218,7 +4817,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "core_maths", "log", @@ -5230,12 +4829,6 @@ dependencies = [ "unicode-script", ] -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - [[package]] name = "same-file" version = "1.0.6" @@ -5279,12 +4872,6 @@ dependencies = [ "syn", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -5303,9 +4890,9 @@ dependencies = [ [[package]] name = "sea-query-derive" -version = "1.0.0-rc.12" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d88ad44b6ad9788c8b9476b6b91f94c7461d1e19d39cd8ea37838b1e6ff5aa8" +checksum = "a0b0f466921cdd3cf4b89d5c3ac2173dba89a873ab395b123a645de181ec7537" dependencies = [ "darling", "heck 0.4.1", @@ -5345,7 +4932,7 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -5364,11 +4951,11 @@ dependencies = [ [[package]] name = "selectors" -version = "0.36.1" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +checksum = "8adfa1c298912827b8a28b223b3b874357397ae706e6190acd9bf28cee99114d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cssparser", "derive_more", "log", @@ -5376,7 +4963,7 @@ dependencies = [ "phf", "phf_codegen", "precomputed-hash", - "rustc-hash 2.1.2", + "rustc-hash", "servo_arc", "smallvec", "to_shmem", @@ -5442,9 +5029,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "indexmap", "itoa", @@ -5455,39 +5042,37 @@ dependencies = [ ] [[package]] -name = "serde_urlencoded" -version = "0.7.1" +name = "serde_spanned" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", + "serde_core", ] [[package]] name = "servo" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0070e405abc520d91ff75db643bca36f9d13e99b9b3448c6bcc154769d4a75fe" +checksum = "586b1f633dabd1ceb0b1d92965f526dbb8c418fc277fccb79bd506170900f8ff" dependencies = [ "accesskit", "arboard", - "bitflags 2.11.1", + "bitflags 2.13.0", "cookie 0.18.1", "crossbeam-channel", "dpi", "env_logger", "euclid", "gaol", + "http 1.4.2", "image", "ipc-channel", "keyboard-types", "log", "mozangle", "parking_lot", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "servo-background-hang-monitor", "servo-base", @@ -5505,6 +5090,7 @@ dependencies = [ "servo-layout-api", "servo-media", "servo-media-dummy", + "servo-media-ohos", "servo-media-thread", "servo-net", "servo-net-traits", @@ -5518,9 +5104,8 @@ dependencies = [ "servo-storage-traits", "servo-tracing", "servo-url", + "servo-wakelock", "servo-webgl", - "servo-webgpu", - "servo-webxr", "stylo", "stylo_traits", "surfman", @@ -5532,9 +5117,9 @@ dependencies = [ [[package]] name = "servo-allocator" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d8013ec6b49e7fc3c93d82550ab944536dc843a1cfd3d32691f5030854871af" +checksum = "03bfd7bec9005b23eef713662d8835b2fe388d2737bb73ddefabdf96111341a4" dependencies = [ "libc", "tikv-jemalloc-sys", @@ -5544,15 +5129,15 @@ dependencies = [ [[package]] name = "servo-background-hang-monitor" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc008a0ae4a818390b09e67b0b113a17259666c8594372565186b8485a3dad13" +checksum = "e103f18bbbf5cf445c93f5ffd3ff3e679708481cc11a288730cc7e651fafde30" dependencies = [ "backtrace", "crossbeam-channel", "libc", "log", - "rustc-hash 2.1.2", + "rustc-hash", "serde_json", "servo-background-hang-monitor-api", "servo-base", @@ -5560,9 +5145,9 @@ dependencies = [ [[package]] name = "servo-background-hang-monitor-api" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e6392cea0a079d759adeae3f9f4afdfbd2736680545be2dcdce90d61dd813a" +checksum = "fbee39fc267ee7f49b1ee204d99e5f7fe3014819f549f9cd86f7365cb3ce27f1" dependencies = [ "serde", "servo-base", @@ -5570,9 +5155,9 @@ dependencies = [ [[package]] name = "servo-base" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652c96d26c12eb1a80c1de5cd352eeae6d5450f4903f860484142138b26bb596" +checksum = "dce1d914535712358c938b6a0fd5156472c8fd2e6c981a2ead37925bb00bf9ef" dependencies = [ "accesskit", "crossbeam-channel", @@ -5596,17 +5181,17 @@ dependencies = [ [[package]] name = "servo-canvas" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a860146427668731437efb0b2fa98e09d3a481a4d29b826eb2cdcdad4cd5704" +checksum = "e8f60690cb6cba3fdc0a4d9b7a6de849ad65a61e7efca74168222a25ac007fab" dependencies = [ "bytemuck", "crossbeam-channel", "euclid", - "kurbo 0.12.0", + "kurbo", "log", "peniko", - "rustc-hash 2.1.2", + "rustc-hash", "servo-base", "servo-canvas-traits", "servo-config", @@ -5622,14 +5207,14 @@ dependencies = [ [[package]] name = "servo-canvas-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f18e3688716e4accaa2614a54bc17e71624b965a4132e66b6191218e77d75e7" +checksum = "9fbfaa9dc5a7032c4142e30a447f2c2721d6530b27530014c2fa6b172ac014f6" dependencies = [ "crossbeam-channel", "euclid", "glow", - "kurbo 0.12.0", + "kurbo", "malloc_size_of_derive", "serde", "servo-base", @@ -5644,21 +5229,22 @@ dependencies = [ [[package]] name = "servo-config" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d453a08194c46a1ef557b82bfc5d101ef26de6a8101e6d79a7eb6773ed346056" +checksum = "6d4176d612e20b7518ba0369274d7605f1f66d3c4ca7f150e41103d290f08540" dependencies = [ "serde", "serde_json", "servo-config-macro", + "strum", "stylo_static_prefs", ] [[package]] name = "servo-config-macro" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50eeff1d9312db321e09f7b9da39994656583507b12cbc21000d5de9d73ac8a2" +checksum = "ec4ebcbabbe26a7adf946379edb9ce75b0a52baa1f6d3f258a6c34129dcc5aa7" dependencies = [ "proc-macro2", "quote", @@ -5668,12 +5254,13 @@ dependencies = [ [[package]] name = "servo-constellation" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c5a79abbad7c9d96bedf6f047e69f777993ffd820c80ac4c66154475800afe" +checksum = "dc3a6158856de64a0830c0dcaa5d26d810e13c8c3e19db46882a400fb98b0be4" dependencies = [ "accesskit", "backtrace", + "base64", "content-security-policy", "crossbeam-channel", "euclid", @@ -5683,7 +5270,7 @@ dependencies = [ "log", "parking_lot", "rand 0.9.4", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "servo-background-hang-monitor", "servo-background-hang-monitor-api", @@ -5705,8 +5292,6 @@ dependencies = [ "servo-storage-traits", "servo-tracing", "servo-url", - "servo-webgpu", - "servo-webgpu-traits", "servo-webxr-api", "stylo", "stylo_traits", @@ -5714,18 +5299,19 @@ dependencies = [ [[package]] name = "servo-constellation-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9586a099986a4f42749f576cacd086054e031021cd91110dab5e0b8ef2e51ab" +checksum = "c702987256af663c8dc4c11632ce4f69d692d16b0bef4271a86f55e46ab3fc35" dependencies = [ + "base64", "content-security-policy", "encoding_rs", "euclid", - "http 1.4.0", + "http 1.4.2", "ipc-channel", "log", "malloc_size_of_derive", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "servo-base", "servo-canvas-traits", @@ -5741,47 +5327,48 @@ dependencies = [ "servo-profile-traits", "servo-storage-traits", "servo-url", - "servo-webgpu-traits", "strum", "uuid", "webrender_api", + "zeroize", ] [[package]] name = "servo-default-resources" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4207da426d1d47862349e6743ffd8ac8c1488d9a8a5eed03a83ff9e163697da" +checksum = "49a2c7fcb404d8bf6143d7fe8a8876111f6e7d01b63732506ac3e8bc5adc8b6e" dependencies = [ "servo-embedder-traits", ] [[package]] name = "servo-deny-public-fields" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98fae4310bb51f47eb651f5e18085902ff0fb6202b81db4c30ff3ecdc2f9c0bc" +checksum = "5b35d782779d185f1e512974bc15f8291e98f3507411d95cdc083c450e3f0fd4" dependencies = [ + "proc-macro2", "syn", "synstructure", ] [[package]] name = "servo-devtools" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "868371dece681d1ca370e763bd5093a4c322eab7fa137969a405a65b9cb9fceb" +checksum = "c389ebaa9beabcc9b0c251ecf9bb663acf2a12bef9c9663a481303ee7f271af4" dependencies = [ "atomic_refcell", - "base64 0.22.1", + "base64", "chrono", "crossbeam-channel", - "headers 0.4.1", - "http 1.4.0", + "headers", + "http 1.4.2", "log", "malloc_size_of_derive", "rand 0.9.4", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "serde_json", "servo-base", @@ -5798,11 +5385,11 @@ dependencies = [ [[package]] name = "servo-devtools-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e44b3824b411e24d2155baf43fda4de8ae31ccf28b978402c769226a1b082a77" +checksum = "813c6fce91fb8cc6abf6932a53285968aa79888b78e34017698bf2af8ba42399" dependencies = [ - "http 1.4.0", + "http 1.4.2", "malloc_size_of_derive", "serde", "servo-base", @@ -5816,10 +5403,11 @@ dependencies = [ [[package]] name = "servo-dom-struct" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f913de114000e33ebada6f4d82edc72575325894e043be9b1d0499e1ace75e9" +checksum = "da14edfc129dc66cdc164aabdb112959b5bc8730a65d527917437541373e4b8f" dependencies = [ + "prettyplease", "proc-macro2", "quote", "syn", @@ -5827,22 +5415,23 @@ dependencies = [ [[package]] name = "servo-embedder-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5f5632ee546288b8d50c823b710afa56219aca202dd0d990fdc166c84120da" +checksum = "da728520bbf1da5c678778f9c85f0e6ce885255101abd5f2a5e5422eaefc7064" dependencies = [ "accesskit", - "bitflags 2.11.1", + "bitflags 2.13.0", + "content-security-policy", "cookie 0.18.1", "crossbeam-channel", "euclid", - "http 1.4.0", + "http 1.4.2", "image", "inventory", "keyboard-types", "log", "malloc_size_of_derive", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "servo-base", "servo-geometry", @@ -5861,12 +5450,12 @@ dependencies = [ [[package]] name = "servo-fonts" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db31f28feaab1159deb1e31b96ac3e320d54dd3e1a8b373acf8f95059354d15c" +checksum = "33adc21a933b31a2eb5ac21f1f66d963a2de67e205b423beeb8e82eb792c2efa" dependencies = [ "app_units", - "bitflags 2.11.1", + "bitflags 2.13.0", "byteorder", "content-security-policy", "dwrote", @@ -5886,9 +5475,11 @@ dependencies = [ "objc2-core-foundation", "objc2-core-graphics", "objc2-core-text", + "ohos-deviceinfo-sys", "parking_lot", + "postcard", "read-fonts", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "servo-allocator", "servo-base", @@ -5917,9 +5508,9 @@ dependencies = [ [[package]] name = "servo-fonts-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7119d37b59f0c02b48499ad916a80b901114a174d3bdc872b8e59be9cc7e3c6" +checksum = "d2d3e2ef8635c0ee30a8f875622174b9788f5a929ffcafebdc7f247a34a0a58a" dependencies = [ "atomic_refcell", "dwrote", @@ -5942,9 +5533,9 @@ dependencies = [ [[package]] name = "servo-geometry" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3bbac0f89e8f20941a26d6e68861f313fbb01e79b18b1c1bd56ca0179063676" +checksum = "f055681a9c016aa93c8398ee68020870827a876ff60840c99431198d77074bd0" dependencies = [ "app_units", "euclid", @@ -5956,14 +5547,14 @@ dependencies = [ [[package]] name = "servo-hyper-serde" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72838514a505b8b8f056f8f4a9e7c2aea8bf2ed14b8573ffc28e5a54926a9447" +checksum = "3077a919b1a2f29773538513284255a2f1317f34067fd88ceef24dae9c2f3202" dependencies = [ "cookie 0.18.1", - "headers 0.4.1", - "http 1.4.0", - "hyper 1.9.0", + "headers", + "http 1.4.2", + "hyper", "mime", "serde_bytes", "serde_core", @@ -5971,9 +5562,9 @@ dependencies = [ [[package]] name = "servo-jstraceable-derive" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35253dd08315fd35726155b7470aad195ccdff476d92ac959992c067c0b9e3e4" +checksum = "9476b6fd537f58ed2407869b1ec2d1306172cd6252f5cf6be8d620533c8be197" dependencies = [ "proc-macro2", "syn", @@ -5982,26 +5573,30 @@ dependencies = [ [[package]] name = "servo-layout" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be71eb9497abe74c4e2daec8617bfa14e4378f293795231fd96597308ba27ac2" +checksum = "f7f6d2cb9920ef2671b3613fb965a1f313e24156ef2a9b2bf798b85f391c1a9a" dependencies = [ + "accesskit", "app_units", "atomic_refcell", - "bitflags 2.11.1", + "bitflags 2.13.0", "data-url", "euclid", - "html5ever", "icu_locid", + "icu_properties 1.5.1", "icu_segmenter 1.5.0", "itertools 0.14.0", - "kurbo 0.12.0", + "kurbo", "log", "malloc_size_of_derive", + "num-derive", + "num-traits", "parking_lot", "rayon", - "rustc-hash 2.1.2", + "rustc-hash", "selectors", + "serde", "servo-base", "servo-config", "servo-embedder-traits", @@ -6029,25 +5624,25 @@ dependencies = [ "unicode-script", "unicode_categories", "url", + "web_atoms", "webrender_api", - "xi-unicode", ] [[package]] name = "servo-layout-api" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b513bc3cc4d4efd5e1f689633095a4fc780642b3a9ba0082df1283ae395f84a2" +checksum = "a1362d287e05e6869be6a256bee0a51e5015a6384bbc6bf82105b7643063e30c" dependencies = [ "app_units", "atomic_refcell", - "bitflags 2.11.1", + "bitflags 2.13.0", "euclid", "html5ever", "libc", "malloc_size_of_derive", "parking_lot", - "rustc-hash 2.1.2", + "rustc-hash", "selectors", "serde", "servo-background-hang-monitor-api", @@ -6069,18 +5664,19 @@ dependencies = [ [[package]] name = "servo-malloc-size-of" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351361a0978e50fdc7e2198cb7e7a4c74c68f6f6b57915c3108a76036e07f153" +checksum = "5ddb4bd30cd96a2e661663d60fbdf8638d55cd6792b49c63cadd5dbccf899427" dependencies = [ - "accountable-refcell", "app_units", "atomic_refcell", "content-security-policy", "crossbeam-channel", + "data-url", "encoding_rs", "euclid", - "http 1.4.0", + "http 1.4.2", + "icu_locid", "indexmap", "ipc-channel", "keyboard-types", @@ -6111,11 +5707,10 @@ dependencies = [ [[package]] name = "servo-media" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b832794132cd7f36b4a5f8f8a1b0a7640160b1f9d2716fa7a16c2e36df0df1ef" +checksum = "89e4117384b5a77d27b8e42975a3add252683eebac5694bc94288939ff56ac94" dependencies = [ - "once_cell", "servo-media-audio", "servo-media-player", "servo-media-streams", @@ -6125,9 +5720,9 @@ dependencies = [ [[package]] name = "servo-media-audio" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a31cfa701b2b51dbf2b40c52bc15f785265553c211d4160292459953c56e99" +checksum = "f7c1c58c30acb9d4925bb8424d58bbae3cc77ba3324f810ee4d1c9139a9e9019" dependencies = [ "byte-slice-cast", "euclid", @@ -6137,7 +5732,6 @@ dependencies = [ "num-traits", "petgraph", "serde", - "serde_derive", "servo-malloc-size-of", "servo-media-derive", "servo-media-player", @@ -6149,9 +5743,9 @@ dependencies = [ [[package]] name = "servo-media-derive" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fdc309a170b22d23787925a26213d912eb8b48c2ec31abcaba27bfd665f190" +checksum = "26ed711a4809dc2243e6e0402d013e18645eda5f05c124aa186cabcd469c8cc5" dependencies = [ "proc-macro2", "quote", @@ -6160,9 +5754,9 @@ dependencies = [ [[package]] name = "servo-media-dummy" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "933cc33fb330745d7fef9437b1bf6ef00377ce2ffdfce3dd407a1b47ce018da2" +checksum = "9490f7bd3d3c2e0fd58b981d17da6991775a8f68046be9f5f623847507715eec" dependencies = [ "ipc-channel", "servo-media", @@ -6173,16 +5767,39 @@ dependencies = [ "servo-media-webrtc", ] +[[package]] +name = "servo-media-ohos" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3ff53294a521961218a9ea06cb6183ba520bac41691e41e5936168d8ae1e949" +dependencies = [ + "crossbeam-channel", + "ipc-channel", + "libc", + "log", + "mime", + "ohos-media-sys", + "ohos-sys-opaque-types", + "ohos-window-sys", + "serde_json", + "servo-media", + "servo-media-audio", + "servo-media-player", + "servo-media-streams", + "servo-media-traits", + "servo-media-webrtc", + "yuv", +] + [[package]] name = "servo-media-player" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e1d19c7b0c783382b457907085916187e8f35c1d9fb7a1adccfc3a644782237" +checksum = "b180b3040763027b93a848c7f1aac4e0279b21d1cb372fac0badaf265e9e1fce" dependencies = [ "ipc-channel", "malloc_size_of_derive", "serde", - "serde_derive", "servo-malloc-size-of", "servo-media-streams", "servo-media-traits", @@ -6190,9 +5807,9 @@ dependencies = [ [[package]] name = "servo-media-streams" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "454b562e8309468c1afce9691ff59720c55c4ca7abe0c8c66385e7fe5a6f5ccd" +checksum = "afaccc67033c267506750392ffb0a6a4c085eb0132bcbc4545445a9394df1d7b" dependencies = [ "malloc_size_of_derive", "servo-malloc-size-of", @@ -6201,15 +5818,15 @@ dependencies = [ [[package]] name = "servo-media-thread" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8a15eefd0c1dfeb2feabe5ec449ce81df1fa5c1c12f95404fecbf38d090f9d" +checksum = "53b9ffb694400bab75ff974a8bf8c752c3b46ef97c15ccb3aa0b68a0ff30cf38" dependencies = [ "euclid", "ipc-channel", "log", "malloc_size_of_derive", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "servo-config", "servo-malloc-size-of", @@ -6220,9 +5837,9 @@ dependencies = [ [[package]] name = "servo-media-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3aa16dc86558337e9b997872cdd03262f0743fdcf25892bdd0bf572e2677ef6b" +checksum = "4924266b8e24f0492b90c637f29a47f88edc7f687c247bc879cd6f0571b6bf22" dependencies = [ "malloc_size_of_derive", "servo-malloc-size-of", @@ -6230,9 +5847,9 @@ dependencies = [ [[package]] name = "servo-media-webrtc" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ef80f1b85d057b48f9473761a27f013094884a63d649ab6355d9b3f7f29e47" +checksum = "07bfc044d9ad094b2c7c29ca5399acd91dc8c8fdc8a8a2d5c9ac243c6c4003ef" dependencies = [ "log", "servo-media-streams", @@ -6241,9 +5858,9 @@ dependencies = [ [[package]] name = "servo-metrics" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349524fd3a66a99e0027575bd246807d657213711d1f606bbc019c996aacc67a" +checksum = "6e566af782d9564b5babcc9e148b4975896ebf4ababc141e4dcf3da837db6972" dependencies = [ "malloc_size_of_derive", "servo-base", @@ -6257,14 +5874,14 @@ dependencies = [ [[package]] name = "servo-net" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c577079bb3ef21a4fd7bb36f452aa63b25882e2a7726276cea47ea577d224721" +checksum = "4c87244aeb4b145b917fc304c72f2c639ff9607e8046bd49b414228d4d2a1d92" dependencies = [ "async-compression", "async-recursion", "async-tungstenite", - "base64 0.22.1", + "base64", "bytes", "chrono", "content-security-policy", @@ -6276,10 +5893,10 @@ dependencies = [ "futures-core", "futures-util", "generic-array", - "headers 0.4.1", - "http 1.4.0", + "headers", + "http 1.4.2", "http-body-util", - "hyper 1.9.0", + "hyper", "hyper-rustls", "hyper-util", "imsz", @@ -6294,7 +5911,7 @@ dependencies = [ "quick_cache", "regex", "resvg", - "rustc-hash 2.1.2", + "rustc-hash", "rustls", "rustls-pki-types", "rustls-platform-verifier", @@ -6309,6 +5926,7 @@ dependencies = [ "servo-paint-api", "servo-pixels", "servo-profile-traits", + "servo-tracing", "servo-url", "servo_arc", "sha2", @@ -6327,16 +5945,16 @@ dependencies = [ [[package]] name = "servo-net-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9625ab5589003db438ba7a266f19d28dbfac09fe2b84cd08adb6c72d0625eab4" +checksum = "308bb98857692eee6197bbcbd59911eb7acef332e20a90ad44669ef03cab538c" dependencies = [ "content-security-policy", "cookie 0.18.1", "crossbeam-channel", "data-url", - "headers 0.4.1", - "http 1.4.0", + "headers", + "http 1.4.2", "hyper-util", "ipc-channel", "log", @@ -6346,7 +5964,7 @@ dependencies = [ "parking_lot", "percent-encoding", "rand 0.9.4", - "rustc-hash 2.1.2", + "rustc-hash", "rustls-pki-types", "serde", "servo-base", @@ -6368,11 +5986,11 @@ dependencies = [ [[package]] name = "servo-paint" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0a4a54c85d0d196aa3e2a1802b2b3cfe9b599a05bc32004138a798af2842a3" +checksum = "ff72009792f49d3fdae91f8ba40f33c54fbee00f163ef9b74bbbda9959a49d9b" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "crossbeam-channel", "dpi", "euclid", @@ -6381,7 +5999,7 @@ dependencies = [ "ipc-channel", "log", "rayon", - "rustc-hash 2.1.2", + "rustc-hash", "servo-allocator", "servo-base", "servo-canvas-traits", @@ -6406,11 +6024,11 @@ dependencies = [ [[package]] name = "servo-paint-api" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f579bc5f06a675ebebecee4b9dc3975010a0c06e68cae9cde805aff5800ca3" +checksum = "bb55de79f0a9b23d9535cd6e56665612e6e0ad01df53d8372a04918f408cda8b" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "crossbeam-channel", "dpi", "euclid", @@ -6422,7 +6040,7 @@ dependencies = [ "malloc_size_of_derive", "parking_lot", "raw-window-handle", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "serde_bytes", "servo-base", @@ -6442,9 +6060,9 @@ dependencies = [ [[package]] name = "servo-pixels" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1fa7656e3deae84546d147ea7eeb5373d6ba2fb20bd3ed1ff82a19427aad6b4" +checksum = "2e137d518c1f44735a55d9e7ebda097f7cf4522126aba61950815cd7a9ea52e1" dependencies = [ "euclid", "image", @@ -6458,10 +6076,11 @@ dependencies = [ [[package]] name = "servo-plugin-native" -version = "0.1.0" +version = "0.2.0" dependencies = [ "dpi", "euclid", + "http 1.4.2", "image", "serde", "serde_json", @@ -6475,9 +6094,9 @@ dependencies = [ [[package]] name = "servo-profile" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c977f737c66d814c5b6d121018e7541ddc861f4313a93a0b8acc14a2f7645202" +checksum = "bfc979af8559cf831fdf3124482aa6b14c710086545fb9aedda732d279d65948" dependencies = [ "libc", "log", @@ -6495,9 +6114,9 @@ dependencies = [ [[package]] name = "servo-profile-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe4720dbdedadebe5b9c644305adfb8ec2293ce0ae65c832f3af83d58573377" +checksum = "39e443b503da9bf09bef4905b6fddc98b625d7f2a9e3de4a8d72a1c1e3894fb4" dependencies = [ "crossbeam-channel", "ipc-channel", @@ -6512,9 +6131,9 @@ dependencies = [ [[package]] name = "servo-script" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea90266d3eaa76429e7d29f1dda49ad11e0b96fd0d887fb7b0cea1f01a0895d8" +checksum = "4ce8a20b26a4cdbc6683fd3c01a8f8ef3194d0ec90990f240aba51985d6da11d" dependencies = [ "aes", "aes-gcm", @@ -6525,10 +6144,11 @@ dependencies = [ "atomic_refcell", "aws-lc-rs", "backtrace", - "base64 0.22.1", + "base64", "base64ct", - "bitflags 2.11.1", + "bitflags 2.13.0", "brotli", + "buf-read-ext", "cbc", "chacha20poly1305", "chardetng", @@ -6548,10 +6168,11 @@ dependencies = [ "euclid", "flate2", "glow", - "headers 0.4.1", + "headers", "hkdf", "html5ever", - "http 1.4.0", + "http 1.4.2", + "httparse", "icu_locid", "indexmap", "ipc-channel", @@ -6562,7 +6183,6 @@ dependencies = [ "malloc_size_of_derive", "markup5ever", "mime", - "mime-multipart-hyper1", "mime_guess", "ml-dsa", "ml-kem", @@ -6584,7 +6204,7 @@ dependencies = [ "rand 0.9.4", "regex", "rsa", - "rustc-hash 2.1.2", + "rustc-hash", "sec1", "selectors", "serde", @@ -6616,8 +6236,8 @@ dependencies = [ "servo-script-traits", "servo-storage-traits", "servo-timers", + "servo-tracing", "servo-url", - "servo-webgpu-traits", "servo-xpath", "servo_arc", "sha1", @@ -6639,21 +6259,21 @@ dependencies = [ "url", "urlpattern", "uuid", + "web_atoms", "webdriver", "webrender_api", - "wgpu-core", - "wgpu-types", "x25519-dalek", "xml5ever", + "zeroize", ] [[package]] name = "servo-script-bindings" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1237e5599ea3857a3cd76f0ec6cd6cfafd2acf274966f960ace001b87b2d891" +checksum = "ed259da2d8ed95b66914b67bb320247fbbefd28a35f155038e7581264f2ed9d5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "crossbeam-channel", "encoding_rs", "html5ever", @@ -6684,20 +6304,21 @@ dependencies = [ "stylo_atoms", "tendril", "xml5ever", + "zeroize", ] [[package]] name = "servo-script-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc2d83cc0e14e0d3914881ae51b1eead81502afe06dbee4996df1f137fb6a6c" +checksum = "d1da569b392e1a13c65bb80496f34791cb25801dcb82d327d5fb5bf6755ab864" dependencies = [ "accesskit", "crossbeam-channel", "euclid", "keyboard-types", "malloc_size_of_derive", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "servo-base", "servo-canvas-traits", @@ -6723,16 +6344,16 @@ dependencies = [ [[package]] name = "servo-storage" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65ed9c35f2831bbafc3a846555daeb829e42a50c75cab753a0af691b1a92a324" +checksum = "1073fea34533a85c64ad7a8811fd592059026b0a3049fea28e84437cb167690b" dependencies = [ "libc", "log", "malloc_size_of_derive", "postcard", "rusqlite", - "rustc-hash 2.1.2", + "rustc-hash", "sea-query", "sea-query-rusqlite", "serde", @@ -6749,9 +6370,9 @@ dependencies = [ [[package]] name = "servo-storage-traits" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7c15d38ed849e268a2cf0f9adab96f80d1b2cbaf00e67b1787f035a6fde000" +checksum = "cdfd4b4b6888bdd4d7c7b05f52d30cee7a0d85e43db421acb1398356d3bdc5fe" dependencies = [ "malloc_size_of_derive", "serde", @@ -6764,9 +6385,9 @@ dependencies = [ [[package]] name = "servo-timers" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc03b1dd9ac0e5c11ff2d3dce1a0879fd0f0e42c670723b2c475539c64197370" +checksum = "7761941e5c3c2916b36953c6cc6fac482db9ba1fe1a25dfeaa534f35926db32d" dependencies = [ "crossbeam-channel", "malloc_size_of_derive", @@ -6775,9 +6396,9 @@ dependencies = [ [[package]] name = "servo-tracing" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "404ade73d66d656d6d84c43d4c5e52a744b1be33c0adf44dc48d5c90535b1009" +checksum = "a0141241c084ba6cdafc1cdaad9ec80481fa2fd74d96f9debf5a2d420f03cae5" dependencies = [ "proc-macro2", "quote", @@ -6786,9 +6407,9 @@ dependencies = [ [[package]] name = "servo-url" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6704e3fcc79b00776e68fe896bc2429bf2f08dc665d3010a0e914b570993b8e" +checksum = "f1fe1096acd5b68f752565cf0ea7f2cb7a929f6715c391aa7653a0f6737ad93c" dependencies = [ "encoding_rs", "malloc_size_of_derive", @@ -6799,13 +6420,23 @@ dependencies = [ "uuid", ] +[[package]] +name = "servo-wakelock" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc76410ab387ed1378438e5534e24d972961b2b4f37cd69c05c86e943655aca1" +dependencies = [ + "serde", + "servo-embedder-traits", +] + [[package]] name = "servo-webgl" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6994dc5b85ac5d848ff58ad6ea74ce9a7444c1c46f1ef806aab76790ff60bb" +checksum = "62552d611066b0eacce9b247252ae02de9943506f26a58dbd9c721b57b2151ae" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "byteorder", "crossbeam-channel", "euclid", @@ -6814,7 +6445,7 @@ dependencies = [ "itertools 0.14.0", "log", "parking_lot", - "rustc-hash 2.1.2", + "rustc-hash", "servo-base", "servo-canvas-traits", "servo-paint-api", @@ -6824,96 +6455,39 @@ dependencies = [ ] [[package]] -name = "servo-webgpu" -version = "0.1.0" +name = "servo-webxr-api" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fcecae88239ee15fa5a10351c2bc5d09d084f63abdab0bc70931d8fb1f7947" +checksum = "1e6dea553dcc181a1bfa4f436f4e4792ccccfbcbbf7a88499ba69a7cf26a5b6a" dependencies = [ - "arrayvec", "euclid", + "ipc-channel", "log", - "rustc-hash 2.1.2", + "malloc_size_of_derive", + "serde", "servo-base", - "servo-config", - "servo-paint-api", - "servo-pixels", - "servo-webgpu-traits", - "webrender_api", - "wgpu-core", - "wgpu-types", + "servo-embedder-traits", + "servo-malloc-size-of", + "servo-profile-traits", ] [[package]] -name = "servo-webgpu-traits" -version = "0.1.0" +name = "servo-xpath" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe5ed6c27d606ce6537cfec6d7a1a249d9c69a4603dc53aa770a72e77bda6ef8" +checksum = "1820ff3ef4c6b85139cc2df3e79098eb80e38681e560ba0c30cefb04a653d2ba" dependencies = [ - "arrayvec", + "log", "malloc_size_of_derive", - "serde", - "servo-base", + "markup5ever", "servo-malloc-size-of", - "servo-pixels", - "webrender_api", - "wgpu-core", - "wgpu-types", ] [[package]] -name = "servo-webxr" -version = "0.1.0" +name = "servo_arc" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efdbc5c1be1fdf250978506d303132719a502ec9b81462c7c42f76688187feb5" -dependencies = [ - "crossbeam-channel", - "euclid", - "glow", - "log", - "openxr", - "raw-window-handle", - "servo-base", - "servo-profile-traits", - "servo-webxr-api", - "surfman", - "winapi", - "wio", -] - -[[package]] -name = "servo-webxr-api" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a475bc39579c269a02d9f988709d691b295dbbd2887e178ea613b482cecb50" -dependencies = [ - "euclid", - "ipc-channel", - "log", - "malloc_size_of_derive", - "serde", - "servo-base", - "servo-embedder-traits", - "servo-malloc-size-of", - "servo-profile-traits", -] - -[[package]] -name = "servo-xpath" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e8bd73d8165bdbb46fcfce8af60fab54398ac47071e7402dea354b25ce079af" -dependencies = [ - "log", - "malloc_size_of_derive", - "markup5ever", - "servo-malloc-size-of", -] - -[[package]] -name = "servo_arc" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" dependencies = [ "serde", "stable_deref_trait", @@ -6949,9 +6523,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest", "keccak", @@ -6963,6 +6537,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "signature" version = "2.2.0" @@ -6979,6 +6559,16 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + [[package]] name = "simd_helpers" version = "0.1.0" @@ -6988,6 +6578,12 @@ dependencies = [ "quote", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "simplecss" version = "0.2.2" @@ -6999,15 +6595,15 @@ dependencies = [ [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "skrifa" -version = "0.37.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" dependencies = [ "bytemuck", "read-fonts", @@ -7030,34 +6626,24 @@ dependencies = [ [[package]] name = "smallbitvec" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d31d263dd118560e1a492922182ab6ca6dc1d03a3bf54e7699993f31a4150e3f" +checksum = "9b0e903ee191d8f7a8fbf0d712c3a1699d19e04ceba5ad1eb673053c7d938a09" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" dependencies = [ "serde", ] [[package]] name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "socket2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", "windows-sys 0.61.2", @@ -7075,15 +6661,6 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -[[package]] -name = "spirv" -version = "0.3.0+sdk-1.3.268.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" -dependencies = [ - "bitflags 2.11.1", -] - [[package]] name = "spki" version = "0.7.3" @@ -7127,7 +6704,7 @@ name = "streamkit-core" version = "0.2.0" dependencies = [ "async-trait", - "base64 0.22.1", + "base64", "bytes", "schemars", "serde", @@ -7209,14 +6786,14 @@ dependencies = [ [[package]] name = "stylo" -version = "0.15.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c032879feb9c437f8eb370b1ddc56c13531267766bd6f3ada99c406d36d60a6" +checksum = "8656272f7483cdce91f1c55d60810ba6e7c2bac1b5940b2be60a2b12575ddb93" dependencies = [ "app_units", "arrayvec", "atomic_refcell", - "bitflags 2.11.1", + "bitflags 2.13.0", "byteorder", "cssparser", "derive_more", @@ -7238,7 +6815,7 @@ dependencies = [ "precomputed-hash", "rayon", "rayon-core", - "rustc-hash 2.1.2", + "rustc-hash", "selectors", "serde", "servo_arc", @@ -7266,9 +6843,9 @@ dependencies = [ [[package]] name = "stylo_atoms" -version = "0.15.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb92d87ad2ba792800cc2bf508eb17286044303ebe55b15cd7e541190486c86" +checksum = "e90362005ef68ab406857e3a0c3e04572d1d056f3224333c2da8d5aef660617b" dependencies = [ "string_cache", "string_cache_codegen", @@ -7276,9 +6853,9 @@ dependencies = [ [[package]] name = "stylo_derive" -version = "0.15.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338d14b4375657058b395afcf11bee2fc22a77e9d80f66ee863b617b38d4319a" +checksum = "1d312e035ba0b282b24f50c45378e9d45424cec68a9cde130df2b54ef59514a3" dependencies = [ "darling", "proc-macro2", @@ -7289,19 +6866,19 @@ dependencies = [ [[package]] name = "stylo_dom" -version = "0.15.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa592a930bd67daa5c9c07bc7b422f23f67b5bd30532e85a6fcfef348cf0fb9" +checksum = "8320050ce458da456b320dfa1252783e4113b3b1a05d0aefb41cbe2bb35ed849" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "stylo_malloc_size_of", ] [[package]] name = "stylo_malloc_size_of" -version = "0.15.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8cd4ec615ff7bbc849d1d7d95891c39db20dfd1cb79eb8ba29c54107a4101a3" +checksum = "2ac39ecae5f591b1b200e7e400ce586d47b8e2e6122229ad3e93fcbc85f0b1b1" dependencies = [ "app_units", "cssparser", @@ -7317,18 +6894,21 @@ dependencies = [ [[package]] name = "stylo_static_prefs" -version = "0.15.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc94d0d425d29db1da9535b12793a0db91e85ca2fde13adc73df33f49ee75af7" +checksum = "0b36e3ea5a1c20dfdc483ae3be554976dc2e7f99510f3322f8e38b594c2f6275" +dependencies = [ + "toml", +] [[package]] name = "stylo_traits" -version = "0.15.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cc7f5c9b43201f0d5c81ca190ccbf29382cff3af4cc926c9cd5e53beb6c9e5" +checksum = "bafd455fa178b566e6df9bb0ad3e6e6eae7d202fb636bd32f7af3d33b566a00c" dependencies = [ "app_units", - "bitflags 2.11.1", + "bitflags 2.13.0", "cssparser", "euclid", "malloc_size_of_derive", @@ -7351,11 +6931,11 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "surfman" -version = "0.11.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d3973284ef0dc7362cdaee41c2356c4c39a5a5ebd8490c5163ebf21a7adc02" +checksum = "15317532328e0f6e5da2abad68391297621ddf66810e5819e92271318cc08feb" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg_aliases", "cgl", "euclid", @@ -7387,11 +6967,11 @@ checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" [[package]] name = "svgtypes" -version = "0.15.3" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" +checksum = "695b5790b3131dafa99b3bbfd25a216edb3d216dad9ca208d4657bfb8f2abc3d" dependencies = [ - "kurbo 0.11.3", + "kurbo", "siphasher", ] @@ -7403,9 +6983,9 @@ checksum = "e454d048db5527d000bfddb77bd072bbf3a1e2ae785f16d9bd116e07c2ab45eb" [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -7452,9 +7032,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.45" +version = "0.4.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973" +checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" dependencies = [ "filetime", "libc", @@ -7468,7 +7048,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.2", + "getrandom 0.4.3", "once_cell", "rustix", "windows-sys 0.61.2", @@ -7494,21 +7074,11 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "textnonce" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f8d70cd784ed1dc33106a18998d77758d281dc40dc3e6d050cf0f5286683" -dependencies = [ - "base64 0.12.3", - "rand 0.7.3", -] - [[package]] name = "thin-vec" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259cdf8ed4e4aca6f1e9d011e10bd53f524a2d0637d7b28450f6c64ac298c4c6" +checksum = "b0f7e269b48f0a7dd0146680fa24b50cc67fc0373f086a5b2f99bd084639b482" [[package]] name = "thiserror" @@ -7561,7 +7131,7 @@ dependencies = [ "half", "quick-error", "weezl", - "zune-jpeg 0.5.15", + "zune-jpeg", ] [[package]] @@ -7586,12 +7156,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.47" +version = "0.3.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "85c17d80feb7334b40c484e45ed1a5273dfd8bfda537c3be2e74a06a6686f327" dependencies = [ "deranged", - "itoa", "libc", "num-conv", "num_threads", @@ -7603,15 +7172,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.27" +version = "0.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +checksum = "dcef1a61bdb119096e153208ec5cbec23944ce8bca13be5c7f60c634f7403935" dependencies = [ "num-conv", "time-core", @@ -7619,24 +7188,24 @@ dependencies = [ [[package]] name = "tiny-skia" -version = "0.11.4" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +checksum = "47ffee5eaaf5527f630fb0e356b90ebdec84d5d18d937c5e440350f88c5a91ea" dependencies = [ "arrayref", "arrayvec", "bytemuck", "cfg-if", "log", - "png 0.17.16", + "png", "tiny-skia-path", ] [[package]] name = "tiny-skia-path" -version = "0.11.4" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +checksum = "edca365c3faccca67d06593c5980fa6c57687de727a03131735bb85f01fdeeb9" dependencies = [ "arrayref", "bytemuck", @@ -7681,9 +7250,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "to_shmem" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab187810ca1e6aaa4c97a06492aac9ade2ffae6a301fd2aac103656f5a69edb" +checksum = "e8eb8396666f8344ad4b8849ac0d493ae960290ba89ba1aaf0cb8045d2023288" dependencies = [ "cssparser", "servo_arc", @@ -7708,15 +7277,15 @@ dependencies = [ [[package]] name = "tokio" -version = "1.52.1" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", "mio", "pin-project-lite", - "socket2 0.6.3", + "socket2", "tokio-macros", "windows-sys 0.61.2", ] @@ -7766,6 +7335,45 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + [[package]] name = "topological-sort" version = "0.1.0" @@ -7804,7 +7412,6 @@ version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -7882,7 +7489,7 @@ checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" dependencies = [ "bytes", "data-encoding", - "http 1.4.0", + "http 1.4.2", "httparse", "log", "rand 0.9.4", @@ -7894,9 +7501,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "uluru" @@ -7992,9 +7599,9 @@ checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-vo" @@ -8002,18 +7609,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "unicode_categories" version = "0.1.1" @@ -8063,25 +7658,26 @@ dependencies = [ [[package]] name = "usvg" -version = "0.45.1" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef" +checksum = "d46cf96c5f498d36b7a9693bc6a7075c0bb9303189d61b2249b0dc3d309c07de" dependencies = [ - "base64 0.22.1", + "base64", "data-url", "flate2", "fontdb", "imagesize", - "kurbo 0.11.3", + "kurbo", "log", "pico-args", - "roxmltree", + "roxmltree 0.21.1", "rustybuzz", "simplecss", "siphasher", "strict-num", "svgtypes", "tiny-skia-path", + "ttf-parser", "unicode-bidi", "unicode-script", "unicode-vo", @@ -8114,11 +7710,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.1" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", "serde_core", "sha1_smol", @@ -8144,27 +7740,31 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vello_common" -version = "0.0.4" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a235ba928b3109ad9e7696270edb09445a52ae1c7c08e6d31a19b1cdd6cbc24a" +checksum = "19d672facaa2d697285a786cd9d44d614cd2ce54cdc022504bf339f8fff3b750" dependencies = [ "bytemuck", "fearless_simd", - "hashbrown 0.15.5", + "guillotiere", + "hashbrown 0.17.1", "log", "peniko", - "png 0.17.16", - "skrifa", + "png", "smallvec", + "thiserror 2.0.18", ] [[package]] name = "vello_cpu" -version = "0.0.4" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0bd1fcf9c1814f17a491e07113623d44e3ec1125a9f3401f5e047d6d326da21" +checksum = "588691169aed86b5c8fb487266afee01323234e6fd0a3f2aaec0eaa8e4007f23" dependencies = [ "bytemuck", + "glifo", + "hashbrown 0.17.1", + "png", "vello_common", ] @@ -8199,39 +7799,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "warp" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "headers 0.3.9", - "http 0.2.12", - "hyper 0.14.32", - "log", - "mime", - "mime_guess", - "percent-encoding", - "pin-project", - "scoped-tls", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-util", - "tower-service", - "tracing", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -8240,27 +7807,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -8271,9 +7829,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8281,9 +7839,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -8294,47 +7852,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - [[package]] name = "wayland-sys" version = "0.31.11" @@ -8349,9 +7873,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.95" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -8359,9 +7883,9 @@ dependencies = [ [[package]] name = "web_atoms" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a9779e9f04d2ac1ce317aee707aa2f6b773afba7b931222bff6983843b1576" +checksum = "075474b12bcb3d2e3d4546580e9de478eeeead668a1761e2a8860c836b7ef297" dependencies = [ "phf", "phf_codegen", @@ -8375,7 +7899,7 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91d53921e1bef27512fa358179c9a22428d55778d2c2ae3c5c37a52b82ce6e92" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "cookie 0.16.2", "http 0.2.12", @@ -8386,26 +7910,23 @@ dependencies = [ "serde_json", "thiserror 1.0.69", "time", - "tokio", - "tokio-stream", "url", - "warp", ] [[package]] name = "webpki-root-certs" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" +checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267" dependencies = [ "rustls-pki-types", ] [[package]] name = "webpki-roots" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" +checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf" dependencies = [ "rustls-pki-types", ] @@ -8418,7 +7939,7 @@ checksum = "a591c25221a9f8ac2ad7754659b283d912cee6c8424f0fa3777aabed3be91c16" dependencies = [ "allocator-api2", "bincode", - "bitflags 2.11.1", + "bitflags 2.13.0", "build-parallel", "byteorder", "derive_more", @@ -8434,7 +7955,7 @@ dependencies = [ "plane-split", "rayon", "ron", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "smallvec", "svg_fmt", @@ -8454,7 +7975,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb206f613b4635881065a2ff4670e656edc904af0b8729c51ce1196679fd1b6d" dependencies = [ "app_units", - "bitflags 2.11.1", + "bitflags 2.13.0", "byteorder", "crossbeam-channel", "euclid", @@ -8473,7 +7994,7 @@ version = "0.68.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e6165a81201892371061250bd6f08ede9ed7279842fedc4033f48582a789068" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "lazy_static", ] @@ -8483,123 +8004,6 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" -[[package]] -name = "wgpu-core" -version = "26.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f62f1053bd28c2268f42916f31588f81f64796e2ff91b81293515017ca8bd9" -dependencies = [ - "arrayvec", - "bit-set", - "bit-vec", - "bitflags 2.11.1", - "cfg_aliases", - "document-features", - "hashbrown 0.15.5", - "indexmap", - "log", - "naga", - "once_cell", - "parking_lot", - "profiling", - "rustc-hash 1.1.0", - "serde", - "smallvec", - "thiserror 2.0.18", - "wgpu-core-deps-apple", - "wgpu-core-deps-emscripten", - "wgpu-core-deps-windows-linux-android", - "wgpu-hal", - "wgpu-types", -] - -[[package]] -name = "wgpu-core-deps-apple" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18ae5fbde6a4cbebae38358aa73fcd6e0f15c6144b67ef5dc91ded0db125dbdf" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-core-deps-emscripten" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7670e390f416006f746b4600fdd9136455e3627f5bd763abf9a65daa216dd2d" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-core-deps-windows-linux-android" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "720a5cb9d12b3d337c15ff0e24d3e97ed11490ff3f7506e7f3d98c68fa5d6f14" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-hal" -version = "26.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d0e67224cc7305b3b4eb2cc57ca4c4c3afc665c1d1bee162ea806e19c47bdd" -dependencies = [ - "android_system_properties", - "arrayvec", - "ash", - "bit-set", - "bitflags 2.11.1", - "block", - "bytemuck", - "cfg-if", - "cfg_aliases", - "core-graphics-types 0.2.0", - "glow", - "glutin_wgl_sys", - "gpu-alloc", - "gpu-allocator", - "gpu-descriptor", - "hashbrown 0.15.5", - "js-sys", - "khronos-egl", - "libc", - "libloading", - "log", - "metal", - "naga", - "ndk-sys", - "objc", - "ordered-float", - "parking_lot", - "profiling", - "range-alloc", - "raw-window-handle", - "smallvec", - "thiserror 2.0.18", - "wasm-bindgen", - "web-sys", - "wgpu-types", - "windows 0.58.0", - "windows-core 0.58.0", -] - -[[package]] -name = "wgpu-types" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2" -dependencies = [ - "bitflags 2.11.1", - "bytemuck", - "js-sys", - "log", - "serde", - "thiserror 2.0.18", - "web-sys", -] - [[package]] name = "winapi" version = "0.3.9" @@ -8631,16 +8035,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows" version = "0.61.3" @@ -8663,27 +8057,14 @@ dependencies = [ "windows-core 0.61.2", ] -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows-core" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", + "windows-implement", + "windows-interface", "windows-link 0.1.3", "windows-result 0.3.4", "windows-strings 0.4.2", @@ -8695,8 +8076,8 @@ version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", + "windows-implement", + "windows-interface", "windows-link 0.2.1", "windows-result 0.4.1", "windows-strings 0.5.1", @@ -8713,17 +8094,6 @@ dependencies = [ "windows-threading", ] -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "windows-implement" version = "0.60.2" @@ -8735,17 +8105,6 @@ dependencies = [ "syn", ] -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "windows-interface" version = "0.59.3" @@ -8779,15 +8138,6 @@ dependencies = [ "windows-link 0.1.3", ] -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-result" version = "0.3.4" @@ -8806,16 +8156,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows-strings" version = "0.4.2" @@ -8834,15 +8174,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -8870,21 +8201,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -8927,12 +8243,6 @@ dependencies = [ "windows-link 0.1.3", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -8945,12 +8255,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -8963,12 +8267,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -8993,12 +8291,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -9011,12 +8303,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -9029,12 +8315,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -9047,12 +8327,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -9065,6 +8339,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" +[[package]] +name = "winnow" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" + [[package]] name = "wio" version = "0.2.2" @@ -9074,100 +8354,12 @@ dependencies = [ "winapi", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - [[package]] name = "wit-bindgen" version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.11.1", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "wr_glyph_rasterizer" version = "0.68.0" @@ -9186,7 +8378,7 @@ dependencies = [ "malloc_size_of_derive", "objc", "rayon", - "rustc-hash 2.1.2", + "rustc-hash", "serde", "smallvec", "tracy-rs", @@ -9275,17 +8467,11 @@ dependencies = [ "rustix", ] -[[package]] -name = "xi-unicode" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" - [[package]] name = "xml" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8aa498d22c9bbaf482329839bc5620c46be275a19a812e9a22a2b07529a642a" +checksum = "636f85e5ca6488e96401b61eb7de54f4e44755c988af0f52cf90230c312a1a89" [[package]] name = "xml-rs" @@ -9317,9 +8503,9 @@ checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" [[package]] name = "yeslogic-fontconfig-sys" -version = "6.0.0" +version = "6.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503a066b4c037c440169d995b869046827dbc71263f6e8f3be6d77d4f3229dbd" +checksum = "1d8b8abf912b9a29ff112e1671c97c33636903d13a69712037190e6805af4f76" dependencies = [ "dlib", "once_cell", @@ -9340,9 +8526,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive 0.8.2", @@ -9373,6 +8559,16 @@ dependencies = [ "synstructure", ] +[[package]] +name = "yuv" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d85a782d94ee43f078bcfd6fa82d4e6a5b2d1cfbbad168e4df5a9f7b39ef48c" +dependencies = [ + "num-traits", + "rayon", +] + [[package]] name = "zeitstempel" version = "0.1.2" @@ -9387,18 +8583,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.48" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.48" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", @@ -9407,9 +8603,9 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] @@ -9428,18 +8624,18 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" dependencies = [ "proc-macro2", "quote", @@ -9464,7 +8660,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", - "yoke 0.8.2", + "yoke 0.8.3", "zerofrom", "zerovec 0.11.6", ] @@ -9487,7 +8683,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "serde", - "yoke 0.8.2", + "yoke 0.8.3", "zerofrom", "zerovec-derive 0.11.3", ] @@ -9548,12 +8744,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "zune-core" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" - [[package]] name = "zune-core" version = "0.5.1" @@ -9569,20 +8759,11 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "zune-jpeg" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" -dependencies = [ - "zune-core 0.4.12", -] - [[package]] name = "zune-jpeg" version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" dependencies = [ - "zune-core 0.5.1", + "zune-core", ] diff --git a/plugins/native/servo/Cargo.toml b/plugins/native/servo/Cargo.toml index 3dbb90b47..98ff0dcf2 100644 --- a/plugins/native/servo/Cargo.toml +++ b/plugins/native/servo/Cargo.toml @@ -4,7 +4,7 @@ [package] name = "servo-plugin-native" -version = "0.1.0" +version = "0.2.0" edition = "2021" license = "MPL-2.0" @@ -14,7 +14,7 @@ crate-type = ["cdylib"] [dependencies] streamkit-plugin-sdk-native = { path = "../../../sdks/plugin-sdk/native" } -servo = "0.1" +servo = "0.3" image = { version = "0.25", default-features = false, features = ["png", "rayon"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -22,6 +22,10 @@ uuid = { version = "1", features = ["v4"] } url = "2" euclid = "0.22" dpi = "0.1" +# Match the `http` major used by servo's embedder-traits so the `HeaderMap` +# we build for `UrlRequest` (custom request headers / bearer auth) is the +# same type servo expects. +http = "1" tracing = "0.1" # Servo pulls in jemalloc via servo-allocator. By default jemalloc uses diff --git a/plugins/native/servo/README.md b/plugins/native/servo/README.md index b5e4421f8..2b0390faf 100644 --- a/plugins/native/servo/README.md +++ b/plugins/native/servo/README.md @@ -7,7 +7,7 @@ SPDX-License-Identifier: MPL-2.0 # Servo Web Renderer Plugin Renders web pages to RGBA8 video frames via the [Servo](https://servo.org/) -browser engine (v0.1.0). This is a **native plugin** — it builds as a shared +browser engine (v0.3.0). This is a **native plugin** — it builds as a shared library (`.so`) loaded by StreamKit at runtime. ## Architecture @@ -116,6 +116,46 @@ build. | `custom_css` | string | — | Optional CSS injected into the page | | `frame_count` | integer | 0 | Total frames to generate (0 = infinite) | | `load_timeout_secs` | integer | 30 | Maximum seconds to wait for page load | +| `auth` | object | — | Optional init-time authentication for private pages (see below) | + +### Authentication + +The optional `auth` object loads private pages non-interactively. It is applied +once at WebView creation and is **not** hot-swappable at runtime (changing it +requires recreating the node). **Credentials are never logged**, and any +`user:password@` userinfo is stripped from URLs before they are logged. + +| Field | Type | Description | +|-------|------|-------------| +| `headers` | object (string→string) | Arbitrary request headers attached to the initial navigation (e.g. `Authorization`, `Cookie`, custom `X-…`). | +| `bearer_token` | string | Convenience for `Authorization: Bearer `. Conflicts with an explicit `Authorization` entry in `headers`. | +| `basic` | object | HTTP Basic/Digest credentials (`username` + `password`) answered non-interactively when the page or proxy issues an auth challenge. | +| `user_agent` | string | Custom User-Agent string. | + +```yaml +nodes: + web: + kind: plugin::native::servo + params: + url: "https://private.example.com" + auth: + headers: + X-Api-Key: "…" + bearer_token: "…" # → Authorization: Bearer … + basic: + username: "user" + password: "…" + user_agent: "StreamKit/1.0" +``` + +> **Global User-Agent caveat:** Servo's `Preferences` are a **process-global +> singleton**, so `auth.user_agent` is taken from the *first* registered servo +> node and applies to **all** servo nodes in the process. Per-node User-Agent +> is not currently supported. The `headers`, `bearer_token`, and `basic` fields +> are per-node. +> +> Credentials flow through pipeline YAML/params — prefer sourcing them from +> host secrets rather than committing them inline. ### Viewport Emulation diff --git a/plugins/native/servo/plugin.yml b/plugins/native/servo/plugin.yml index fa8be2898..e6c9fff0b 100644 --- a/plugins/native/servo/plugin.yml +++ b/plugins/native/servo/plugin.yml @@ -4,7 +4,7 @@ id: servo name: Servo Web Renderer -version: 0.1.0 +version: 0.2.0 node_kind: servo kind: native entrypoint: libservo_web.so diff --git a/plugins/native/servo/src/config.rs b/plugins/native/servo/src/config.rs index 112f3bf0e..a84fc4f7a 100644 --- a/plugins/native/servo/src/config.rs +++ b/plugins/native/servo/src/config.rs @@ -4,6 +4,9 @@ //! Configuration for the Servo web renderer plugin. +use std::collections::HashMap; + +use http::header::{HeaderMap, HeaderName, HeaderValue, AUTHORIZATION}; use serde::Deserialize; // -- Defaults ---------------------------------------------------------------- @@ -32,6 +35,95 @@ const fn default_load_timeout_secs() -> u32 { 30 } +// -- Authentication ---------------------------------------------------------- + +/// HTTP Basic/Digest credentials answered non-interactively when the page +/// (or proxy) issues an authentication challenge. +#[derive(Debug, Clone, Deserialize)] +pub struct ServoBasicAuth { + pub username: String, + pub password: String, +} + +/// Optional, init-time authentication settings for loading private pages +/// non-interactively. +/// +/// All fields are credentials and must never be logged. Auth is applied +/// once at WebView creation and is **not** hot-swappable via `UpdateConfig` +/// (see [`ServoConfig::merge_update`]). +#[derive(Debug, Clone, Default, Deserialize)] +#[serde(default)] +pub struct ServoAuth { + /// Arbitrary request headers attached to the initial navigation + /// (e.g. `Authorization`, `Cookie`, custom `X-…` headers). + pub headers: Option>, + /// Convenience for `Authorization: Bearer `. Conflicts with an + /// explicit `Authorization` entry in `headers`. + pub bearer_token: Option, + /// HTTP Basic/Digest credentials answered via the delegate auth hook. + pub basic: Option, + /// Custom User-Agent string. Applied to the process-global Servo + /// preferences, so it affects **all** servo nodes in the process. + pub user_agent: Option, +} + +impl ServoAuth { + /// Build the request `HeaderMap` for the initial navigation from + /// `headers` plus a synthesized `Authorization: Bearer …` when + /// `bearer_token` is set. + /// + /// # Errors + /// + /// Returns an error if a header name or value is malformed, or if + /// `bearer_token` and an explicit `Authorization` header are both set. + pub fn build_request_headers(&self) -> Result { + let mut map = HeaderMap::new(); + let mut has_authorization = false; + + if let Some(ref headers) = self.headers { + for (name, value) in headers { + let header_name = HeaderName::try_from(name) + .map_err(|e| format!("invalid header name '{name}': {e}"))?; + let header_value = HeaderValue::try_from(value) + .map_err(|e| format!("invalid header value for '{name}': {e}"))?; + if header_name == AUTHORIZATION { + has_authorization = true; + } + map.append(header_name, header_value); + } + } + + if let Some(ref token) = self.bearer_token { + if has_authorization { + return Err("auth.bearer_token conflicts with an explicit 'Authorization' header" + .to_string()); + } + let value = HeaderValue::try_from(format!("Bearer {token}")) + .map_err(|e| format!("invalid bearer_token: {e}"))?; + map.insert(AUTHORIZATION, value); + } + + Ok(map) + } +} + +/// Strip any `user:password@` userinfo from a URL so it is safe to log. +/// +/// Returns a redacted placeholder if the input cannot be parsed, to avoid +/// leaking credentials embedded in a malformed URL. +pub fn redact_url(raw: &str) -> String { + url::Url::parse(raw).map_or_else( + |_| "".to_string(), + |mut parsed| { + if !parsed.username().is_empty() || parsed.password().is_some() { + let _ = parsed.set_username(""); + let _ = parsed.set_password(None); + } + parsed.to_string() + }, + ) +} + // -- Configuration ----------------------------------------------------------- /// Configuration for the Servo web renderer plugin. @@ -84,6 +176,10 @@ pub struct ServoConfig { /// Maximum seconds to wait for the initial page load. #[serde(default = "default_load_timeout_secs")] pub load_timeout_secs: u32, + /// Optional authentication settings for loading private pages. + /// Applied once at WebView creation; not hot-swappable at runtime. + #[serde(default)] + pub auth: Option, } impl Default for ServoConfig { @@ -99,6 +195,7 @@ impl Default for ServoConfig { custom_css: None, frame_count: default_frame_count(), load_timeout_secs: default_load_timeout_secs(), + auth: None, } } } @@ -186,16 +283,26 @@ impl ServoConfig { } // Validate that the URL is parseable. url::Url::parse(&self.url).map_err(|e| format!("invalid url '{}': {e}", self.url))?; + // Validate auth: reject malformed header names/values and a + // bearer_token / explicit-Authorization conflict. + if let Some(ref auth) = self.auth { + auth.build_request_headers().map_err(|e| format!("invalid auth config: {e}"))?; + } Ok(()) } /// Merge runtime parameter changes from an `UpdateParams` payload. /// /// Tunable fields: `url`, `custom_css`, `viewport_resolution`. - /// Init-time fields (`width`, `height`, `fps`, `frame_count`) are left - /// unchanged. `viewport_width`/`viewport_height` are updated only + /// Init-time fields (`width`, `height`, `fps`, `frame_count`, `auth`) are + /// left unchanged. `viewport_width`/`viewport_height` are updated only /// when `viewport_resolution` is provided (parsed from a `"WxH"` string). /// + /// `auth` is deliberately **not** merged: credentials are bound to the + /// WebView at creation time, so hot-swapping them on a live navigation + /// would have no well-defined effect. Changing auth requires recreating + /// the node. + /// /// Returns `true` if the viewport dimensions changed (requiring a /// rendering context resize). pub fn merge_update(&mut self, update: &Self) -> bool { @@ -509,4 +616,134 @@ mod tests { assert_eq!(cfg.height, 480); assert_eq!(cfg.url, "https://new.example.com"); } + + // -- auth ------------------------------------------------------------- + + #[test] + fn auth_deserializes_all_fields() { + let cfg: ServoConfig = serde_json::from_value(serde_json::json!({ + "url": "https://example.com", + "auth": { + "headers": { "X-Api-Key": "secret" }, + "bearer_token": "abc123", + "basic": { "username": "user", "password": "pass" }, + "user_agent": "StreamKit/1.0" + } + })) + .expect("auth config should deserialize"); + let auth = cfg.auth.expect("auth present"); + assert_eq!( + auth.headers.as_ref().and_then(|h| h.get("X-Api-Key")).map(String::as_str), + Some("secret") + ); + assert_eq!(auth.bearer_token.as_deref(), Some("abc123")); + let basic = auth.basic.expect("basic present"); + assert_eq!(basic.username, "user"); + assert_eq!(basic.password, "pass"); + assert_eq!(auth.user_agent.as_deref(), Some("StreamKit/1.0")); + } + + #[test] + fn auth_absent_by_default() { + let cfg: ServoConfig = serde_json::from_value(serde_json::json!({ + "url": "https://example.com" + })) + .expect("config should deserialize"); + assert!(cfg.auth.is_none()); + } + + #[test] + fn validate_bearer_token_conflicts_with_authorization_header() { + let mut headers = HashMap::new(); + headers.insert("Authorization".to_string(), "Basic xxx".to_string()); + let cfg = ServoConfig { + auth: Some(ServoAuth { + headers: Some(headers), + bearer_token: Some("abc".to_string()), + ..ServoAuth::default() + }), + ..valid_config() + }; + let err = cfg.validate().unwrap_err(); + assert!(err.contains("conflicts")); + } + + #[test] + fn validate_rejects_invalid_header_name() { + let mut headers = HashMap::new(); + headers.insert("Invalid Header".to_string(), "value".to_string()); + let cfg = ServoConfig { + auth: Some(ServoAuth { headers: Some(headers), ..ServoAuth::default() }), + ..valid_config() + }; + let err = cfg.validate().unwrap_err(); + assert!(err.contains("invalid header name")); + } + + #[test] + fn validate_rejects_invalid_header_value() { + let mut headers = HashMap::new(); + headers.insert("X-Custom".to_string(), "bad\nvalue".to_string()); + let cfg = ServoConfig { + auth: Some(ServoAuth { headers: Some(headers), ..ServoAuth::default() }), + ..valid_config() + }; + let err = cfg.validate().unwrap_err(); + assert!(err.contains("invalid header value")); + } + + #[test] + fn build_request_headers_synthesizes_bearer() { + let auth = ServoAuth { bearer_token: Some("tok".to_string()), ..ServoAuth::default() }; + let map = auth.build_request_headers().expect("headers build"); + assert_eq!(map.get(AUTHORIZATION).and_then(|v| v.to_str().ok()), Some("Bearer tok")); + } + + #[test] + fn build_request_headers_empty_without_auth_fields() { + let auth = ServoAuth::default(); + assert!(auth.build_request_headers().expect("headers build").is_empty()); + } + + #[test] + fn merge_update_does_not_mutate_auth() { + let mut cfg = ServoConfig { + auth: Some(ServoAuth { + bearer_token: Some("original".to_string()), + ..ServoAuth::default() + }), + ..valid_config() + }; + let update = ServoConfig { + url: "https://new.example.com".to_string(), + auth: Some(ServoAuth { + bearer_token: Some("changed".to_string()), + ..ServoAuth::default() + }), + ..ServoConfig::default() + }; + cfg.merge_update(&update); + assert_eq!( + cfg.auth.and_then(|a| a.bearer_token).as_deref(), + Some("original"), + "auth must be init-time only" + ); + } + + // -- redact_url ------------------------------------------------------- + + #[test] + fn redact_url_strips_userinfo() { + assert_eq!(redact_url("https://user:pass@example.com/path"), "https://example.com/path"); + } + + #[test] + fn redact_url_passes_through_clean_url() { + assert_eq!(redact_url("https://example.com/"), "https://example.com/"); + } + + #[test] + fn redact_url_handles_unparseable() { + assert_eq!(redact_url("not a url"), ""); + } } diff --git a/plugins/native/servo/src/servo_node.rs b/plugins/native/servo/src/servo_node.rs index 0c488f362..d7e91b016 100644 --- a/plugins/native/servo/src/servo_node.rs +++ b/plugins/native/servo/src/servo_node.rs @@ -101,6 +101,35 @@ impl NativeSourceNode for ServoSourcePlugin { "default": 30, "description": "(Currently unused: page load is non-blocking; tick() returns transparent frames until the first paint.) Reserved for a future Degraded-state timeout signal.", "minimum": 1 + }, + "auth": { + "type": "object", + "description": "Init-time authentication for loading private pages. Applied once at WebView creation; not hot-swappable. Credentials are never logged.", + "tunable": false, + "properties": { + "headers": { + "type": "object", + "description": "Arbitrary request headers attached to the initial navigation (e.g. Authorization, Cookie). Values are credentials.", + "additionalProperties": { "type": "string" } + }, + "bearer_token": { + "type": "string", + "description": "Convenience for 'Authorization: Bearer '. Conflicts with an explicit Authorization header." + }, + "basic": { + "type": "object", + "description": "HTTP Basic/Digest credentials answered non-interactively on an auth challenge.", + "properties": { + "username": { "type": "string" }, + "password": { "type": "string" } + }, + "required": ["username", "password"] + }, + "user_agent": { + "type": "string", + "description": "Custom User-Agent. NOTE: Servo preferences are process-global, so this applies to ALL servo nodes in the process." + } + } } }, "required": ["url"] @@ -157,7 +186,7 @@ impl NativeSourceNode for ServoSourcePlugin { config.effective_viewport_width(), config.effective_viewport_height(), fps, - config.url + crate::config::redact_url(&config.url) ); let node_id = uuid::Uuid::new_v4(); @@ -246,7 +275,11 @@ impl NativeSourceNode for ServoSourcePlugin { node_id: self.node_id, config: self.config.clone(), })?; - plugin_info!(self.logger, "Updated Servo config (url='{}')", self.config.url); + plugin_info!( + self.logger, + "Updated Servo config (url='{}')", + crate::config::redact_url(&self.config.url) + ); } Ok(()) } diff --git a/plugins/native/servo/src/servo_thread.rs b/plugins/native/servo/src/servo_thread.rs index 699517e1a..f5e0dd20c 100644 --- a/plugins/native/servo/src/servo_thread.rs +++ b/plugins/native/servo/src/servo_thread.rs @@ -39,13 +39,13 @@ use std::sync::OnceLock; use std::time::{Duration, Instant}; use dpi::PhysicalSize; -use euclid::{Box2D, Point2D, Scale}; +use euclid::Scale; use servo::{ - LoadStatus, RenderingContext, Servo, ServoBuilder, SoftwareRenderingContext, WebView, - WebViewBuilder, WebViewDelegate, + AuthenticationRequest, DeviceIntPoint, DeviceIntRect, LoadStatus, RenderingContext, Servo, + ServoBuilder, SoftwareRenderingContext, UrlRequest, WebView, WebViewBuilder, WebViewDelegate, }; -use crate::config::ServoConfig; +use crate::config::{ServoAuth, ServoBasicAuth, ServoConfig}; /// Number of consecutive render panics before an instance is marked as /// poisoned and Servo calls are skipped entirely. @@ -132,9 +132,14 @@ pub fn send_work(item: ServoWorkItem) -> Result<(), String> { /// `loaded` is read by `handle_render`'s post-load gate to fire one-shot /// post-load actions (custom CSS injection) on the first tick after the /// page reaches `LoadStatus::Complete`. +/// +/// `basic_auth` answers HTTP Basic/Digest (and proxy) authentication +/// challenges non-interactively. It is bound at WebView creation and never +/// logged. #[derive(Default)] struct FrameDelegate { loaded: Cell, + basic_auth: Option, } impl WebViewDelegate for FrameDelegate { @@ -142,7 +147,7 @@ impl WebViewDelegate for FrameDelegate { if status == LoadStatus::Complete { self.loaded.set(true); } - // Servo 0.1.0 does not expose a Failed variant. Load failures + // Servo does not expose a Failed variant. Load failures // would manifest as the page never reaching Complete; there is // no synchronous wait at register time, so failures simply // leave the page in its loading state and `handle_render` @@ -152,6 +157,14 @@ impl WebViewDelegate for FrameDelegate { fn notify_new_frame_ready(&self, webview: WebView) { webview.paint(); } + + fn request_authentication(&self, _webview: WebView, request: AuthenticationRequest) { + if let Some(ref basic) = self.basic_auth { + request.authenticate(basic.username.clone(), basic.password.clone()); + } + // Without configured credentials the request is dropped, which + // yields no authentication (the default embedder behavior). + } } /// Per-instance state living on the shared Servo thread. @@ -272,7 +285,7 @@ fn servo_thread_main(work_rx: std::sync::mpsc::Receiver) { if state.poisoned { tracing::info!( node_id = %node_id, - new_url = %config.url, + new_url = %crate::config::redact_url(&config.url), "Resetting poisoned state on URL change", ); } @@ -404,11 +417,16 @@ fn handle_register( result_tx: std::sync::mpsc::SyncSender, ) { let servo_ref = servo.get_or_insert_with(|| { - let prefs = servo::Preferences { + let mut prefs = servo::Preferences { network_http_proxy_uri: String::new(), network_https_proxy_uri: String::new(), ..servo::Preferences::default() }; + // `Preferences` is a process-global singleton, so the User-Agent of + // the first registered node applies to every servo node thereafter. + if let Some(user_agent) = config.auth.as_ref().and_then(|a| a.user_agent.as_ref()) { + prefs.user_agent.clone_from(user_agent); + } let s: Servo = ServoBuilder::default().preferences(prefs).build(); s.setup_logging(); s @@ -418,7 +436,7 @@ fn handle_register( Ok((webview, rendering_context, delegate)) => { tracing::info!( node_id = %node_id, - url = %config.url, + url = %crate::config::redact_url(&config.url), output = %format_args!("{}x{}", config.width, config.height), viewport = %format_args!("{}x{}", config.effective_viewport_width(), config.effective_viewport_height()), scaling = config.needs_scaling(), @@ -485,7 +503,7 @@ fn handle_render( state.post_load_done = true; tracing::info!( node_id = %node_id, - url = %state.config.url, + url = %crate::config::redact_url(&state.config.url), "Page reached LoadStatus::Complete — post-load actions applied", ); } @@ -494,9 +512,9 @@ fn handle_render( // this is the native size Servo is currently rendering at. These // stay constant under `Resize` hints (output-only) but are updated // under `UpdateConfig` when the viewport resolution changes. - let rect = Box2D::new( - Point2D::new(0, 0), - Point2D::new( + let rect = DeviceIntRect::new( + DeviceIntPoint::new(0, 0), + DeviceIntPoint::new( i32::try_from(state.rc_width).unwrap_or(i32::MAX), i32::try_from(state.rc_height).unwrap_or(i32::MAX), ), @@ -666,16 +684,35 @@ fn create_webview( let _ = rendering_context.make_current(); - let delegate: Rc = Rc::new(FrameDelegate::default()); + let delegate: Rc = Rc::new(FrameDelegate { + loaded: Cell::new(false), + basic_auth: config.auth.as_ref().and_then(|a| a.basic.clone()), + }); let parsed_url = url::Url::parse(&config.url).map_err(|e| format!("Invalid URL '{}': {e}", config.url))?; - let webview: WebView = WebViewBuilder::new(servo, rendering_context.clone()) - .url(parsed_url) + let request_headers = config + .auth + .as_ref() + .map(ServoAuth::build_request_headers) + .transpose() + .map_err(|e| format!("invalid auth config: {e}"))?; + + let builder = WebViewBuilder::new(servo, rendering_context.clone()) .hidpi_scale_factor(Scale::new(1.0)) - .delegate(delegate.clone() as Rc) - .build(); + .delegate(delegate.clone() as Rc); + + // When request headers are configured, the initial navigation must go + // through `load_request` (the builder's `.url()` cannot carry headers). + let webview: WebView = match request_headers { + Some(headers) if !headers.is_empty() => { + let webview = builder.build(); + webview.load_request(UrlRequest::new(parsed_url).headers(headers)); + webview + }, + _ => builder.url(parsed_url).build(), + }; Ok((webview, rendering_context, delegate)) } From 7e8a4d442203a098775df59d1bd203c4c11ac51e Mon Sep 17 00:00:00 2001 From: streamkit-devin Date: Sat, 27 Jun 2026 09:13:41 +0000 Subject: [PATCH 2/5] chore(plugins): regenerate official-plugins.json for servo 0.2.0 Signed-off-by: streamkit-devin --- marketplace/official-plugins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marketplace/official-plugins.json b/marketplace/official-plugins.json index 9cb41007f..ee3edb70e 100644 --- a/marketplace/official-plugins.json +++ b/marketplace/official-plugins.json @@ -304,7 +304,7 @@ { "id": "servo", "name": "Servo Web Renderer", - "version": "0.1.0", + "version": "0.2.0", "node_kind": "servo", "kind": "native", "entrypoint": "libservo_web.so", From 7035c3891918af3a2d6a5184a89f5445e074632d Mon Sep 17 00:00:00 2001 From: streamkit-devin Date: Sat, 27 Jun 2026 09:15:21 +0000 Subject: [PATCH 3/5] fix(plugins): re-apply servo auth headers on runtime URL changes handle_update_config navigated via webview.load(), which dropped the configured custom/bearer request headers when the tunable url parameter changed at runtime, silently breaking header auth on subsequent private pages (basic auth, bound to the delegate, kept working). Route both initial and runtime navigations through a shared navigate_with_auth helper so header/bearer auth stays consistent with basic auth. Signed-off-by: streamkit-devin --- plugins/native/servo/README.md | 13 ++++--- plugins/native/servo/src/servo_node.rs | 2 +- plugins/native/servo/src/servo_thread.rs | 47 ++++++++++++++---------- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/plugins/native/servo/README.md b/plugins/native/servo/README.md index 2b0390faf..5c927583e 100644 --- a/plugins/native/servo/README.md +++ b/plugins/native/servo/README.md @@ -120,14 +120,17 @@ build. ### Authentication -The optional `auth` object loads private pages non-interactively. It is applied -once at WebView creation and is **not** hot-swappable at runtime (changing it -requires recreating the node). **Credentials are never logged**, and any -`user:password@` userinfo is stripped from URLs before they are logged. +The optional `auth` object loads private pages non-interactively. The +credentials themselves are bound at WebView creation and are **not** +hot-swappable at runtime (changing them requires recreating the node), but the +configured request headers / bearer token are re-applied whenever the `url` +parameter is tuned at runtime, so navigating to another private page keeps +working. **Credentials are never logged**, and any `user:password@` userinfo is +stripped from URLs before they are logged. | Field | Type | Description | |-------|------|-------------| -| `headers` | object (string→string) | Arbitrary request headers attached to the initial navigation (e.g. `Authorization`, `Cookie`, custom `X-…`). | +| `headers` | object (string→string) | Arbitrary request headers attached to every navigation, including runtime `url` changes (e.g. `Authorization`, `Cookie`, custom `X-…`). | | `bearer_token` | string | Convenience for `Authorization: Bearer `. Conflicts with an explicit `Authorization` entry in `headers`. | | `basic` | object | HTTP Basic/Digest credentials (`username` + `password`) answered non-interactively when the page or proxy issues an auth challenge. | | `user_agent` | string | Custom User-Agent string. | diff --git a/plugins/native/servo/src/servo_node.rs b/plugins/native/servo/src/servo_node.rs index d7e91b016..22e2c1ed6 100644 --- a/plugins/native/servo/src/servo_node.rs +++ b/plugins/native/servo/src/servo_node.rs @@ -109,7 +109,7 @@ impl NativeSourceNode for ServoSourcePlugin { "properties": { "headers": { "type": "object", - "description": "Arbitrary request headers attached to the initial navigation (e.g. Authorization, Cookie). Values are credentials.", + "description": "Arbitrary request headers attached to every navigation, including runtime URL changes (e.g. Authorization, Cookie). Values are credentials.", "additionalProperties": { "type": "string" } }, "bearer_token": { diff --git a/plugins/native/servo/src/servo_thread.rs b/plugins/native/servo/src/servo_thread.rs index f5e0dd20c..e3366d46f 100644 --- a/plugins/native/servo/src/servo_thread.rs +++ b/plugins/native/servo/src/servo_thread.rs @@ -591,7 +591,7 @@ fn handle_update_config( if url_changed { if let Ok(parsed) = url::Url::parse(&new_config.url) { - state.webview.load(parsed); + navigate_with_auth(&state.webview, state.config.auth.as_ref(), parsed); state.delegate.loaded.set(false); // Reset the one-shot post-load gate so the new page gets // its custom-CSS injection (if any) once it finishes @@ -692,31 +692,40 @@ fn create_webview( let parsed_url = url::Url::parse(&config.url).map_err(|e| format!("Invalid URL '{}': {e}", config.url))?; - let request_headers = config - .auth - .as_ref() - .map(ServoAuth::build_request_headers) - .transpose() - .map_err(|e| format!("invalid auth config: {e}"))?; + // Surface malformed auth here even though `validate` already checked it, + // so a bad config fails registration rather than silently dropping headers. + if let Some(auth) = config.auth.as_ref() { + auth.build_request_headers().map_err(|e| format!("invalid auth config: {e}"))?; + } - let builder = WebViewBuilder::new(servo, rendering_context.clone()) + let webview: WebView = WebViewBuilder::new(servo, rendering_context.clone()) .hidpi_scale_factor(Scale::new(1.0)) - .delegate(delegate.clone() as Rc); + .delegate(delegate.clone() as Rc) + .build(); - // When request headers are configured, the initial navigation must go - // through `load_request` (the builder's `.url()` cannot carry headers). - let webview: WebView = match request_headers { - Some(headers) if !headers.is_empty() => { - let webview = builder.build(); - webview.load_request(UrlRequest::new(parsed_url).headers(headers)); - webview - }, - _ => builder.url(parsed_url).build(), - }; + navigate_with_auth(&webview, config.auth.as_ref(), parsed_url); Ok((webview, rendering_context, delegate)) } +/// Navigate `webview` to `url`, re-applying the configured custom request +/// headers / bearer token so authenticated pages keep loading on runtime URL +/// changes — not just the initial navigation. +/// +/// Falls back to a plain navigation when no headers are configured (or, defensively, +/// when they fail to build; `validate` already rejects malformed auth at config time). +fn navigate_with_auth(webview: &WebView, auth: Option<&ServoAuth>, url: url::Url) { + let headers = auth.and_then(|a| a.build_request_headers().ok()); + match headers { + Some(headers) if !headers.is_empty() => { + webview.load_request(UrlRequest::new(url).headers(headers)); + }, + _ => { + webview.load(url); + }, + } +} + /// Inject custom CSS into a loaded page via JavaScript. fn inject_custom_css(webview: &WebView, servo: &Servo, css: &str) { let escaped = From 7b732c5dc1e60abae1d621a75dbcc6769cba6185 Mon Sep 17 00:00:00 2001 From: streamkit-devin Date: Sat, 27 Jun 2026 09:20:00 +0000 Subject: [PATCH 4/5] fix(plugins): redact URL credentials in servo validation/creation errors Signed-off-by: streamkit-devin --- plugins/native/servo/src/config.rs | 3 ++- plugins/native/servo/src/servo_thread.rs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/native/servo/src/config.rs b/plugins/native/servo/src/config.rs index a84fc4f7a..0b34aebfc 100644 --- a/plugins/native/servo/src/config.rs +++ b/plugins/native/servo/src/config.rs @@ -282,7 +282,8 @@ impl ServoConfig { return Err("load_timeout_secs must be > 0".to_string()); } // Validate that the URL is parseable. - url::Url::parse(&self.url).map_err(|e| format!("invalid url '{}': {e}", self.url))?; + url::Url::parse(&self.url) + .map_err(|e| format!("invalid url '{}': {e}", redact_url(&self.url)))?; // Validate auth: reject malformed header names/values and a // bearer_token / explicit-Authorization conflict. if let Some(ref auth) = self.auth { diff --git a/plugins/native/servo/src/servo_thread.rs b/plugins/native/servo/src/servo_thread.rs index e3366d46f..e8d2f8c7e 100644 --- a/plugins/native/servo/src/servo_thread.rs +++ b/plugins/native/servo/src/servo_thread.rs @@ -689,8 +689,8 @@ fn create_webview( basic_auth: config.auth.as_ref().and_then(|a| a.basic.clone()), }); - let parsed_url = - url::Url::parse(&config.url).map_err(|e| format!("Invalid URL '{}': {e}", config.url))?; + let parsed_url = url::Url::parse(&config.url) + .map_err(|e| format!("Invalid URL '{}': {e}", crate::config::redact_url(&config.url)))?; // Surface malformed auth here even though `validate` already checked it, // so a bad config fails registration rather than silently dropping headers. From b42a05f64fe43f6e6bf87f288aef9179391f9d1e Mon Sep 17 00:00:00 2001 From: streamkit-devin Date: Sat, 27 Jun 2026 09:31:25 +0000 Subject: [PATCH 5/5] ci: retrigger servo lint after runner out-of-disk failure Signed-off-by: streamkit-devin