diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cdeb9fc..f707d11 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,12 +3,12 @@ env: # version like 1.70. Note that we only specify MAJOR.MINOR and not PATCH so that bugfixes still # come automatically. If the version specified here is no longer the latest stable version, # then please feel free to submit a PR that adjusts it along with the potential clippy fixes. - RUST_STABLE_VER: "1.90" # In quotes because otherwise (e.g.) 1.70 would be interpreted as 1.7 + RUST_STABLE_VER: "1.92" # In quotes because otherwise (e.g.) 1.70 would be interpreted as 1.7 # The purpose of checking with the minimum supported Rust toolchain is to detect its staleness. # If the compilation fails, then the version specified here needs to be bumped up to reality. # Be sure to also update the rust-version property in the workspace Cargo.toml file, # plus all the README.md files of the affected packages. - RUST_MIN_VER: "1.86" + RUST_MIN_VER: "1.88" # List of packages that will be checked with the minimum supported Rust version. # This should be limited to packages that are intended for publishing. RUST_MIN_VER_PKGS: "-p velato" diff --git a/Cargo.lock b/Cargo.lock index 031a42b..dc0bdd2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -291,18 +291,18 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.23.0" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.9.3" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", @@ -824,6 +824,12 @@ 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.8.4" @@ -835,9 +841,9 @@ dependencies = [ [[package]] name = "font-types" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511e2c18a516c666d27867d2f9821f76e7d591f762e9fc41dd6cc5c90fe54b0b" +checksum = "b1e4d2d0cf79d38430cc9dc9aadec84774bff2e1ba30ae2bf6c16cfce9385a23" dependencies = [ "bytemuck", ] @@ -1094,10 +1100,19 @@ version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ - "foldhash", + "foldhash 0.1.5", "serde", ] +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash 0.2.0", +] + [[package]] name = "heck" version = "0.5.0" @@ -1457,9 +1472,9 @@ dependencies = [ [[package]] name = "kurbo" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce9729cc38c18d86123ab736fd2e7151763ba226ac2490ec092d1dd148825e32" +checksum = "7564e90fe3c0d5771e1f0bc95322b21baaeaa0d9213fa6a0b61c99f8b17b3bfb" dependencies = [ "arrayvec", "euclid", @@ -1553,9 +1568,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "malloc_buf" @@ -1654,6 +1669,31 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "naga" +version = "27.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.9.1", + "cfg-if", + "cfg_aliases 0.2.1", + "codespan-reporting", + "half", + "hashbrown 0.16.1", + "hexf-parse", + "indexmap 2.9.0", + "libm", + "log", + "num-traits", + "once_cell", + "rustc-hash", + "thiserror 2.0.17", + "unicode-ident", +] + [[package]] name = "ndk" version = "0.8.0" @@ -1872,9 +1912,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "peniko" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c76095c9a636173600478e0373218c7b955335048c2bcd12dc6a79657649d8" +checksum = "9a2b6aadb221872732e87d465213e9be5af2849b0e8cc5300a8ba98fffa2e00a" dependencies = [ "color", "kurbo", @@ -2110,12 +2150,12 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.35.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" +checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ "bytemuck", - "font-types 0.10.0", + "font-types 0.11.0", ] [[package]] @@ -2433,12 +2473,12 @@ dependencies = [ [[package]] name = "skrifa" -version = "0.37.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" dependencies = [ "bytemuck", - "read-fonts 0.35.0", + "read-fonts 0.37.0", ] [[package]] @@ -2794,45 +2834,45 @@ dependencies = [ [[package]] name = "vello" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71acbd6b5f7f19841425845c113a89a54bbf60556ae39e7d0182a6f80ce37f5b" +checksum = "72fef40773530322d5c2ffe3c1107e9874bd8239ac137d1c2b6c1edad695146e" dependencies = [ "bytemuck", "futures-intrusive", "log", "peniko", "png", - "skrifa 0.37.0", + "skrifa 0.40.0", "static_assertions", "thiserror 2.0.17", "vello_encoding", "vello_shaders", - "wgpu", + "wgpu 27.0.1", ] [[package]] name = "vello_encoding" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd5e0b9fec91df34a09fbcbbed474cec68d05691b590a911c7af83c4860ae42" +checksum = "24c91203ec4b483440614a9a5c7c2d991932af72c5349659a63ec49476f0b79c" dependencies = [ "bytemuck", "guillotiere", "peniko", - "skrifa 0.37.0", + "skrifa 0.40.0", "smallvec", ] [[package]] name = "vello_shaders" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c381dde4e7d0d7957df0c0e3f8a7cc0976762d3972d97da5c71464e57ffefd3" +checksum = "7a765d44d4bd354146e44f9a860f4e92effd91a97302549be9e47f0a18d8128c" dependencies = [ "bytemuck", "log", - "naga", + "naga 27.0.3", "thiserror 2.0.17", "vello_encoding", ] @@ -3195,7 +3235,7 @@ dependencies = [ "hashbrown 0.15.3", "js-sys", "log", - "naga", + "naga 26.0.0", "parking_lot", "portable-atomic", "profiling", @@ -3205,9 +3245,32 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", + "wgpu-core 26.0.1", + "wgpu-hal 26.0.4", + "wgpu-types 26.0.0", +] + +[[package]] +name = "wgpu" +version = "27.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" +dependencies = [ + "arrayvec", + "bitflags 2.9.1", + "cfg-if", + "cfg_aliases 0.2.1", + "document-features", + "hashbrown 0.16.1", + "log", + "portable-atomic", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wgpu-core 27.0.3", + "wgpu-hal 27.0.4", + "wgpu-types 27.0.1", ] [[package]] @@ -3225,7 +3288,7 @@ dependencies = [ "hashbrown 0.15.3", "indexmap 2.9.0", "log", - "naga", + "naga 26.0.0", "once_cell", "parking_lot", "portable-atomic", @@ -3236,9 +3299,39 @@ dependencies = [ "thiserror 2.0.17", "wgpu-core-deps-apple", "wgpu-core-deps-emscripten", - "wgpu-core-deps-windows-linux-android", - "wgpu-hal", - "wgpu-types", + "wgpu-core-deps-windows-linux-android 26.0.0", + "wgpu-hal 26.0.4", + "wgpu-types 26.0.0", +] + +[[package]] +name = "wgpu-core" +version = "27.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" +dependencies = [ + "arrayvec", + "bit-set", + "bit-vec", + "bitflags 2.9.1", + "bytemuck", + "cfg_aliases 0.2.1", + "document-features", + "hashbrown 0.16.1", + "indexmap 2.9.0", + "log", + "naga 27.0.3", + "once_cell", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror 2.0.17", + "wgpu-core-deps-windows-linux-android 27.0.0", + "wgpu-hal 27.0.4", + "wgpu-types 27.0.1", ] [[package]] @@ -3247,7 +3340,7 @@ version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18ae5fbde6a4cbebae38358aa73fcd6e0f15c6144b67ef5dc91ded0db125dbdf" dependencies = [ - "wgpu-hal", + "wgpu-hal 26.0.4", ] [[package]] @@ -3256,7 +3349,7 @@ version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7670e390f416006f746b4600fdd9136455e3627f5bd763abf9a65daa216dd2d" dependencies = [ - "wgpu-hal", + "wgpu-hal 26.0.4", ] [[package]] @@ -3265,7 +3358,16 @@ version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "720a5cb9d12b3d337c15ff0e24d3e97ed11490ff3f7506e7f3d98c68fa5d6f14" dependencies = [ - "wgpu-hal", + "wgpu-hal 26.0.4", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +dependencies = [ + "wgpu-hal 27.0.4", ] [[package]] @@ -3296,7 +3398,7 @@ dependencies = [ "libloading", "log", "metal", - "naga", + "naga 26.0.0", "ndk-sys 0.6.0+11769913", "objc", "ordered-float", @@ -3311,11 +3413,31 @@ dependencies = [ "thiserror 2.0.17", "wasm-bindgen", "web-sys", - "wgpu-types", + "wgpu-types 26.0.0", "windows", "windows-core", ] +[[package]] +name = "wgpu-hal" +version = "27.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "cfg_aliases 0.2.1", + "libloading", + "log", + "naga 27.0.3", + "portable-atomic", + "portable-atomic-util", + "raw-window-handle", + "renderdoc-sys", + "thiserror 2.0.17", + "wgpu-types 27.0.1", +] + [[package]] name = "wgpu-types" version = "26.0.0" @@ -3330,6 +3452,20 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wgpu-types" +version = "27.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "js-sys", + "log", + "thiserror 2.0.17", + "web-sys", +] + [[package]] name = "winapi" version = "0.3.9" @@ -3790,7 +3926,7 @@ dependencies = [ "vello", "wasm-bindgen-futures", "web-sys", - "wgpu", + "wgpu 26.0.1", "winit", ] diff --git a/Cargo.toml b/Cargo.toml index e712a6b..f461e79 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ license = "Apache-2.0 OR MIT" repository = "https://github.com/linebender/velato" # Keep in sync with RUST_MIN_VER in .github/workflows/ci.yml, with the relevant README.md files # and with the MSRV in the `Unreleased` section of CHANGELOG.md. -rust-version = "1.86" +rust-version = "1.88" [package] name = "velato" @@ -86,9 +86,9 @@ clippy.wildcard_dependencies = "warn" [workspace.dependencies] # NOTE: Make sure to keep this in sync with the version badge in README.md -vello = { version = "0.6.0", default-features = false } -kurbo = { version = "0.12.0" } -peniko = { version = "0.5.0" } +vello = { version = "0.7.0", default-features = false } +kurbo = { version = "0.13.0" } +peniko = { version = "0.6.0" } [lints] workspace = true diff --git a/README.md b/README.md index d4fcaeb..e9d9206 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ There is also a web demo [available here](https://linebender.github.io/velato) o ## Minimum supported Rust Version (MSRV) -This version of Velato has been verified to compile with **Rust 1.85** and later. +This version of Velato has been verified to compile with **Rust 1.88** and later. Future versions of Velato might increase the Rust version requirement. It will not be treated as a breaking change and as such can even happen with small patch releases. diff --git a/src/runtime/vello.rs b/src/runtime/vello.rs index addd4b6..5bb599a 100644 --- a/src/runtime/vello.rs +++ b/src/runtime/vello.rs @@ -14,11 +14,11 @@ impl RenderSink for vello::Scene { transform: Affine, shape: &impl Shape, ) { - self.push_layer(blend, alpha, transform, shape); + self.push_layer(Fill::NonZero, blend, alpha, transform, shape); } fn push_clip_layer(&mut self, transform: Affine, shape: &impl Shape) { - self.push_clip_layer(transform, shape); + self.push_clip_layer(Fill::NonZero, transform, shape); } fn pop_layer(&mut self) {