diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a58c914..8327f56 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ name: Build on: push: branches: - - '*' + - "*" jobs: build_and_package: @@ -11,13 +11,13 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Install runtime dependencies run: sudo apt install -y --no-install-recommends libxkbcommon-dev libstdc++6 libopenxr-dev libx11-dev libxfixes-dev libgl1-mesa-dev libegl1-mesa-dev libgbm-dev libfontconfig-dev libjsoncpp-dev libxcb1-dev libglx-dev libxcb-glx0-dev libdrm-dev libwayland-dev libfreetype-dev libpng-dev - name: Install build dependencies - run: sudo apt install -y --no-install-recommends cmake ninja-build + run: sudo apt install -y --no-install-recommends cmake ninja-build libfuse2 - name: Set up Rust uses: actions-rs/toolchain@v1 @@ -27,12 +27,11 @@ jobs: - name: Build server run: cargo build --release - - name: Install appimagetool run: | - wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$(uname -m).AppImage -O /usr/local/bin/appimagetool; \ - chmod +x /usr/local/bin/appimagetool; \ - sed -i 's|AI\x02|\x00\x00\x00|' /usr/local/bin/appimagetool + wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$(uname -m).AppImage -O /usr/local/bin/appimagetool; \ + chmod +x /usr/local/bin/appimagetool; \ + sed -i 's|AI\x02|\x00\x00\x00|' /usr/local/bin/appimagetool - name: Install cargo-appimage run: cargo install cargo-appimage @@ -40,7 +39,7 @@ jobs: run: cargo appimage - name: Upload AppImage - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: appimage - path: '*.AppImage' \ No newline at end of file + path: "target/appimage/stardust-xr-server.AppImage" diff --git a/Cargo.lock b/Cargo.lock index f044a50..6bd4a02 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,81 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "ab_glyph" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" + +[[package]] +name = "accesskit_consumer" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" +dependencies = [ + "accesskit", + "hashbrown 0.15.2", + "immutable-chunkmap", +] + +[[package]] +name = "accesskit_macos" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "accesskit_windows" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.2", + "paste", + "static_assertions", + "windows 0.58.0", + "windows-core 0.58.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_windows", + "raw-window-handle", + "winit", +] + [[package]] name = "addr2line" version = "0.21.0" @@ -23,6 +98,20 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "const-random", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -32,6 +121,34 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alsa" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" +dependencies = [ + "alsa-sys", + "bitflags 2.6.0", + "cfg-if", + "libc", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + [[package]] name = "android-activity" version = "0.6.0" @@ -42,15 +159,15 @@ dependencies = [ "bitflags 2.6.0", "cc", "cesu8", - "jni", + "jni 0.21.1", "jni-sys", "libc", "log", - "ndk", + "ndk 0.9.0", "ndk-context", - "ndk-sys", + "ndk-sys 0.6.0+11769913", "num_enum 0.7.3", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -66,14 +183,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937" [[package]] -name = "android_logger" -version = "0.14.1" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b07e8e73d720a1f2e4b6014766e6039fd2e96a4fa44e2a78d0e1fa2ff49826" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "android_log-sys", - "env_filter", - "log", + "libc", ] [[package]] @@ -99,9 +214,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -114,43 +229,43 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "appendlist" @@ -176,6 +291,33 @@ dependencies = [ "num-traits", ] +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + [[package]] name = "ascii-canvas" version = "3.0.0" @@ -186,12 +328,42 @@ dependencies = [ ] [[package]] -name = "async-broadcast" -version = "0.7.1" +name = "ash" +version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "event-listener", + "libloading", +] + +[[package]] +name = "assert_type_match" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f548ad2c4031f2902e3edc1f29c29e835829437de49562d8eb5dc5584d3a1043" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener 5.3.1", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -211,13 +383,13 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.1", + "fastrand", "futures-lite", "slab", ] @@ -235,9 +407,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", "cfg-if", @@ -258,16 +430,16 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener", + "event-listener 5.3.1", "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-process" -version = "2.2.4" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel", "async-io", @@ -276,11 +448,10 @@ dependencies = [ "async-task", "blocking", "cfg-if", - "event-listener", + "event-listener 5.3.1", "futures-lite", "rustix", "tracing", - "windows-sys 0.59.0", ] [[package]] @@ -291,7 +462,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] @@ -314,9 +485,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -325,13 +496,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] @@ -342,13 +513,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] @@ -358,16 +529,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] -name = "autocfg" -version = "1.3.0" +name = "atomicow" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "467163b50876d3a4a44da5f4dbd417537e522fc059ede8d518d57941cfb3d745" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", @@ -384,17 +561,17 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper 1.0.1", - "tower", + "sync_wrapper", + "tower 0.5.2", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", @@ -405,7 +582,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper", "tower-layer", "tower-service", ] @@ -443,13 +620,1036 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +[[package]] +name = "bevy" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2a21c9f3306676077a88700bb8f354be779cf9caba9c21e94da9e696751af4" +dependencies = [ + "bevy_internal", +] + +[[package]] +name = "bevy_a11y" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f96642402d2cd7c8e58c5994bbd14a2e44ca72dd7e460a2edad82aa3bf0348f9" +dependencies = [ + "accesskit", + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_reflect", +] + +[[package]] +name = "bevy_animation" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03064ab96e15b2fda5bd58eac2055692d731c1fba3e211fd1ba48472cced75c3" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_time", + "bevy_transform", + "bevy_utils", + "blake3", + "derive_more", + "downcast-rs", + "either", + "petgraph", + "ron", + "serde", + "smallvec", + "thread_local", + "uuid", +] + +[[package]] +name = "bevy_app" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "454a8cfd134864dcdcba6ee56fb958531b981021bba6bb2037c9e3df6046603c" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "console_error_panic_hook", + "ctrlc", + "derive_more", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d762dd4422fb6219fd904e514a4a5d1d451711a0a8e1d6495dea15a545f04f3" +dependencies = [ + "async-broadcast 0.5.1", + "async-fs", + "async-lock", + "atomicow", + "bevy_app", + "bevy_asset_macros", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bevy_window", + "bitflags 2.6.0", + "blake3", + "crossbeam-channel", + "derive_more", + "disqualified", + "downcast-rs", + "either", + "futures-io", + "futures-lite", + "js-sys", + "parking_lot 0.12.3", + "ron", + "serde", + "stackfuture", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8db6957e3f9649d415ee613901cf487898d0339455aa9c3a2525fc37facee920" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "bevy_audio" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d13715401172d7616b376362a46bba125ec9ccc73ab262153a43a2402537ca" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "cpal", + "rodio", +] + +[[package]] +name = "bevy_color" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f00aa2966c7ca0c7dd39f5ba8f3b1eaa5c2005a93ffdefb7a4090150d8327678" +dependencies = [ + "bevy_math", + "bevy_reflect", + "bytemuck", + "derive_more", + "encase", + "serde", + "wgpu-types", +] + +[[package]] +name = "bevy_core" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ff28118f5ae3193f7f6cab30d4fd4246ba1802776910ab256dc7c20e8696381" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "uuid", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0c0eea548a55fd04acf01d351bd16da4d1198037cb9c7b98dea6519f5d7dade" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.6.0", + "derive_more", + "nonmax", + "radsort", + "serde", + "smallvec", +] + +[[package]] +name = "bevy_derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b962df2a1bef274ae76ec75279eb6f8ef0ffd85b5e4c43433f5d08ba57b3d071" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21fe41b22fdf47bf11f0a3ca3e61975b003e86fa44d87e070f2dc7e752dd99f5" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_tasks", + "bevy_time", + "bevy_utils", + "const-fnv1a-hash", + "sysinfo", +] + +[[package]] +name = "bevy_ecs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b747210d7db09dfacc237707d4fd31c8b43d7744cd5e5829e2c4ca86b9e47baf" +dependencies = [ + "arrayvec", + "bevy_ecs_macros", + "bevy_ptr", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bitflags 2.6.0", + "concurrent-queue", + "derive_more", + "disqualified", + "fixedbitset 0.5.7", + "nonmax", + "petgraph", + "serde", + "smallvec", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d36ba5874ee278d20f17b8934d2969f8fbab90f3ea3fcf8d3583814b3661ada" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46db3d4ebc2ab23045a7d32fa1afb4be78894ec3fbe2f52b28f6cd6e4011e400" +dependencies = [ + "bevy_macro_utils", + "encase_derive_impl", +] + +[[package]] +name = "bevy_gilrs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a20320bd21f379ba4ec885b8217cb7c2c57eb0be014ba29509959e252480c3e9" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_time", + "bevy_utils", + "derive_more", + "gilrs", +] + +[[package]] +name = "bevy_gizmos" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca821905afffe1f3aaf33b496903a24a0c980e4c83fa7523fb41eac16892a57a" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_gizmos_macros", + "bevy_image", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bytemuck", +] + +[[package]] +name = "bevy_gizmos_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19843a638c93364950ca54a879832f325be7fa9b89f226fced3b4105594afb70" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "bevy_gltf" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c38b79c0e43c6387699d6a332d12f98ed895bcf69dd70c462d5e49ad76d44d1f" +dependencies = [ + "base64 0.22.1", + "bevy_animation", + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_hierarchy", + "bevy_image", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_tasks", + "bevy_transform", + "bevy_utils", + "derive_more", + "gltf", + "percent-encoding", + "serde", + "serde_json", + "smallvec", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9aab2cd1684d30f2eedf953b6377a6416fd6b482f8145b6c05f4684bd60c3e" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "disqualified", + "smallvec", +] + +[[package]] +name = "bevy_image" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c5942a7d681b81aa9723bb1d918135c2f88e7871331f5676119c86c01984759" +dependencies = [ + "bevy_asset", + "bevy_color", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "bitflags 2.6.0", + "bytemuck", + "derive_more", + "futures-lite", + "image", + "ktx2", + "ruzstd", + "serde", + "wgpu", +] + +[[package]] +name = "bevy_input" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9bbf39c1d2d33350e03354a67bebee5c21973c5203b1456a9a4b90a5e6f8e75" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "derive_more", + "smol_str", +] + +[[package]] +name = "bevy_internal" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd7fc4db9a1793ee71f79abb15e7a8fcfe4e2081e5f18ed91b802bf6cf30e088" +dependencies = [ + "bevy_a11y", + "bevy_animation", + "bevy_app", + "bevy_asset", + "bevy_audio", + "bevy_color", + "bevy_core", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_gilrs", + "bevy_gizmos", + "bevy_gltf", + "bevy_hierarchy", + "bevy_image", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_picking", + "bevy_ptr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_sprite", + "bevy_state", + "bevy_tasks", + "bevy_text", + "bevy_time", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bevy_window", + "bevy_winit", +] + +[[package]] +name = "bevy_log" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774238dcf70a0ef4d82aa2860b24b1cffdd4633f3694d3bcbfbb05c4f17ae4fe" +dependencies = [ + "android_log-sys", + "bevy_app", + "bevy_ecs", + "bevy_utils", + "tracing-error", + "tracing-log", + "tracing-oslog", + "tracing-subscriber", + "tracing-tracy", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdb3a681c24abace65bf18ed467ad8befbedb42468b32e459811bfdb01e506c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", + "toml_edit 0.22.22", +] + +[[package]] +name = "bevy_math" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edec18d90e6bab27b5c6131ee03172ece75b7edd0abe4e482a26d6db906ec357" +dependencies = [ + "bevy_reflect", + "derive_more", + "glam", + "itertools 0.13.0", + "rand", + "rand_distr", + "serde", + "smallvec", +] + +[[package]] +name = "bevy_mesh" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183abae7c6695a80d7408c860bd737410cd66d2a9f910dafc914485da06e43dc" +dependencies = [ + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mikktspace", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "bitflags 2.6.0", + "bytemuck", + "derive_more", + "hexasphere", + "serde", + "wgpu", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b53f0cf879a0682280937f515ecf00ab2140f7224881d6a621f40093a36a2ef6" +dependencies = [ + "glam", +] + +[[package]] +name = "bevy_mod_meshtext" +version = "0.1.0" +source = "git+https://github.com/Schmarni-Dev/bevy_mod_meshtext#4250b2cefd4bf10accb90e17385ad8001b737432" +dependencies = [ + "atomicow", + "bevy", + "meshtext", +] + +[[package]] +name = "bevy_mod_openxr" +version = "0.1.1" +source = "git+https://github.com/awtterpip/bevy_oxr#02ca015db9262c5ff8d85757d2e4077b6d7646e3" +dependencies = [ + "ash", + "bevy", + "bevy_mod_xr", + "jni 0.20.0", + "ndk-context", + "openxr", + "thiserror 2.0.9", + "wgpu", + "wgpu-hal", + "winapi", +] + +[[package]] +name = "bevy_mod_xr" +version = "0.1.1" +source = "git+https://github.com/awtterpip/bevy_oxr#02ca015db9262c5ff8d85757d2e4077b6d7646e3" +dependencies = [ + "bevy", +] + +[[package]] +name = "bevy_pbr" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7f17067399cf00f4441e93d39fb4c391a16cc223e0d35346ac388e66712c418" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.6.0", + "bytemuck", + "derive_more", + "fixedbitset 0.5.7", + "nonmax", + "radsort", + "smallvec", + "static_assertions", +] + +[[package]] +name = "bevy_picking" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "125e0c7327ec155c566c044c6eefd1a02e904134fa5dc0ba54665e06a35297b0" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_math", + "bevy_mesh", + "bevy_reflect", + "bevy_render", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bevy_window", + "crossbeam-channel", + "uuid", +] + +[[package]] +name = "bevy_ptr" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa65df6a190b7dfc84d79f09cf02d47ae046fa86a613e202c31559e06d8d3710" + +[[package]] +name = "bevy_reflect" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab3264acc3b6f48bc23fbd09fdfea6e5d9b7bfec142e4f3333f532acf195bca" +dependencies = [ + "assert_type_match", + "bevy_ptr", + "bevy_reflect_derive", + "bevy_utils", + "derive_more", + "disqualified", + "downcast-rs", + "erased-serde", + "glam", + "petgraph", + "serde", + "smallvec", + "smol_str", + "uuid", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f83876a322130ab38a47d5dcf75258944bf76b3387d1acdb3750920fda63e2" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.93", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b14d77d8ff589743237c98502c0e47fd31059cf348ab86a265c4f90bb5e2a22" +dependencies = [ + "async-channel", + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_encase_derive", + "bevy_hierarchy", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_reflect", + "bevy_render_macros", + "bevy_tasks", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bytemuck", + "codespan-reporting", + "derive_more", + "downcast-rs", + "encase", + "futures-lite", + "image", + "js-sys", + "ktx2", + "naga", + "naga_oil", + "nonmax", + "offset-allocator", + "profiling", + "send_wrapper", + "serde", + "smallvec", + "wasm-bindgen", + "web-sys", + "wgpu", +] + +[[package]] +name = "bevy_render_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "285769c193b832d67c5742a716c6063db573573d5df5ce0c41aa7584ef0e348e" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "bevy_scene" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd00a08d01a190a826a5f6ad0fcb3dbf7bd1bd4f64ebe6108c38384691a21111" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "derive_more", + "serde", + "uuid", +] + +[[package]] +name = "bevy_sk" +version = "0.1.0" +source = "git+https://github.com/MalekiRe/bevy_sk#10beeb8ae0b65d923ee80425de1d223ddaa53f1c" +dependencies = [ + "bevy", + "bevy_mod_openxr", + "bevy_mod_xr", + "bevy_xr_utils", + "bitflags 2.6.0", +] + +[[package]] +name = "bevy_sprite" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c7d22da88e562fb2ae8fe7f8cc749d3024caa4dcb57a777d070ef9141577aa" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_picking", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.6.0", + "bytemuck", + "derive_more", + "fixedbitset 0.5.7", + "guillotiere", + "nonmax", + "radsort", + "rectangle-pack", +] + +[[package]] +name = "bevy_state" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd10c8b01a982642596406fc4486fcd52239aa9c4aa47fed27abab93a69fba59" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_reflect", + "bevy_state_macros", + "bevy_utils", +] + +[[package]] +name = "bevy_state_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23773797bf8077a6ad9299f10b063b6947f22dad311d855c4b3523102ab4381b" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "bevy_tasks" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c28f2db2619203aa82342dbbe77e49aeea4f933212c0b7a1f285e94c4008e5b" +dependencies = [ + "async-channel", + "async-executor", + "concurrent-queue", + "futures-channel", + "futures-lite", + "pin-project", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ee0b5f52946d222521f93773a6230f42e868548f881c4c5bddb1393a96298b" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_image", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_transform", + "bevy_utils", + "bevy_window", + "cosmic-text", + "derive_more", + "serde", + "smallvec", + "sys-locale", + "unicode-bidi", +] + +[[package]] +name = "bevy_time" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb3108ed1ef864bc40bc859ba4c9c3844213c7be3674f982203cf5d87c656848" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_reflect", + "bevy_utils", + "crossbeam-channel", +] + +[[package]] +name = "bevy_transform" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056fabcedbf0503417af69447d47a983e18c7cfb5e6b6728636be3ec285cbcfa" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_math", + "bevy_reflect", + "derive_more", +] + +[[package]] +name = "bevy_ui" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4556fc2202c6339f95e0c24ca4c96ee959854b702e23ecf73e05fb20e67d67b0" +dependencies = [ + "accesskit", + "bevy_a11y", + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_image", + "bevy_input", + "bevy_math", + "bevy_picking", + "bevy_reflect", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bytemuck", + "derive_more", + "nonmax", + "smallvec", + "taffy", +] + +[[package]] +name = "bevy_utils" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f01088c048960ea50ee847c3f668942ecf49ed26be12a1585a5e59b6a941d9a" +dependencies = [ + "ahash", + "bevy_utils_proc_macros", + "getrandom", + "hashbrown 0.14.5", + "thread_local", + "tracing", + "web-time", +] + +[[package]] +name = "bevy_utils_proc_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0c3244d543cc964545b7aa074f6fb18a915a7121cf3de5d7ed37a4aae8662d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "bevy_window" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36139955777cc9e7a40a97833ff3a95b7401ce525a3dbac05fc52557968b31a7" +dependencies = [ + "android-activity", + "bevy_a11y", + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_reflect", + "bevy_utils", + "raw-window-handle", + "smol_str", +] + +[[package]] +name = "bevy_winit" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e84e7f94583cac93de4ba641029eb0b6551d35e559c829209f2b1b9fe532d8" +dependencies = [ + "accesskit", + "accesskit_winit", + "approx 0.5.1", + "bevy_a11y", + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_hierarchy", + "bevy_image", + "bevy_input", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bevy_window", + "bytemuck", + "cfg-if", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winit", +] + +[[package]] +name = "bevy_xr_utils" +version = "0.1.1" +source = "git+https://github.com/awtterpip/bevy_oxr#02ca015db9262c5ff8d85757d2e4077b6d7646e3" +dependencies = [ + "bevy", + "bevy_mod_openxr", + "bevy_mod_xr", + "openxr", +] + +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.11.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.93", +] + [[package]] name = "bit-set" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -458,6 +1658,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -469,14 +1675,36 @@ name = "bitflags" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] [[package]] -name = "block-buffer" -version = "0.10.4" +name = "blake3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" dependencies = [ - "generic-array", + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", ] [[package]] @@ -493,23 +1721,29 @@ dependencies = [ ] [[package]] -name = "bytemuck" -version = "1.17.1" +name = "bumpalo" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] @@ -519,41 +1753,92 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "bytes" -version = "1.7.1" +name = "byteorder-lite" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "calloop" -version = "0.14.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58a38167d6fba8c67cce63c4a91f2a73ca42cbdaf6fb9ba164f1e07b43ecc10" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ "bitflags 2.6.0", "log", "polling", "rustix", "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10929724661d1c43856fd87c7a127ae944ec55579134fb485e4136fb6a46fdcb" +dependencies = [ + "bitflags 2.6.0", + "polling", + "rustix", + "slab", + "tracing", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix", + "wayland-backend", + "wayland-client", ] [[package]] name = "cc" -version = "1.1.16" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b" +checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" dependencies = [ "jobserver", "libc", "shlex", ] +[[package]] +name = "cdt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91b872294f63ef586b32aa94141561681aa35ca2d703960cca4f661f4e18184" +dependencies = [ + "geometry-predicates", + "thiserror 1.0.69", +] + [[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -583,10 +1868,21 @@ dependencies = [ ] [[package]] -name = "clap" -version = "4.5.17" +name = "clang-sys" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -594,9 +1890,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.17" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -606,21 +1902,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cluFlock" @@ -634,13 +1930,23 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.51" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" +checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" dependencies = [ "cc", ] +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + [[package]] name = "color-eyre" version = "0.6.3" @@ -648,17 +1954,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" dependencies = [ "backtrace", + "color-spantrace", "eyre", "indenter", "once_cell", "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "combine" @@ -681,9 +2001,9 @@ dependencies = [ [[package]] name = "console-api" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ed14aa9c9f927213c6e4f3ef75faaad3406134efe84ba2cb7983431d5f0931" +checksum = "8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857" dependencies = [ "futures-core", "prost", @@ -694,9 +2014,9 @@ dependencies = [ [[package]] name = "console-subscriber" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e3a111a37f3333946ebf9da370ba5c5577b18eb342ec683eb488dd21980302" +checksum = "6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01" dependencies = [ "console-api", "crossbeam-channel", @@ -718,6 +2038,69 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "const-fnv1a-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "const_panic" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53857514f72ee4a2b583de67401e3ff63a5472ca4acf289d09a9ea7636dfec17" + +[[package]] +name = "const_soft_float" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "constgebra" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc" +dependencies = [ + "const_soft_float", +] + [[package]] name = "convert_case" version = "0.6.0" @@ -728,14 +2111,121 @@ dependencies = [ ] [[package]] -name = "cpufeatures" -version = "0.2.13" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ + "core-foundation-sys", "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +dependencies = [ + "bitflags 1.3.2", + "core-foundation-sys", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cosmic-text" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" +dependencies = [ + "bitflags 2.6.0", + "fontdb", + "log", + "rangemap", + "rayon", + "rustc-hash 1.1.0", + "rustybuzz", + "self_cell", + "swash", + "sys-locale", + "ttf-parser 0.21.1", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + +[[package]] +name = "cpal" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" +dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "dasp_sample", + "jni 0.21.1", + "js-sys", + "libc", + "mach2", + "ndk 0.8.0", + "ndk-context", + "oboe", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.54.0", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -747,18 +2237,37 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" @@ -767,21 +2276,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] -name = "crypto-common" -version = "0.1.6" +name = "ctrlc" +version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" dependencies = [ - "generic-array", - "typenum", + "nix 0.29.0", + "windows-sys 0.59.0", ] -[[package]] -name = "cty" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" - [[package]] name = "cursor-icon" version = "1.1.0" @@ -789,13 +2292,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" [[package]] -name = "digest" -version = "0.10.7" +name = "dasp_sample" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "block-buffer", - "crypto-common", + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", + "unicode-xid", ] [[package]] @@ -849,6 +2375,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "disqualified" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9c272297e804878a2a4b707cfcfc6d2328b5bb936944613b4fdf2b9269afdfd" + [[package]] name = "dlib" version = "0.5.2" @@ -858,6 +2396,15 @@ dependencies = [ "libloading", ] +[[package]] +name = "document-features" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +dependencies = [ + "litrs", +] + [[package]] name = "downcast-rs" version = "1.2.1" @@ -865,23 +2412,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] -name = "drm" -version = "0.12.0" +name = "dpi" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98888c4bbd601524c11a7ed63f814b8825f420514f78e96f752c437ae9cbb5d1" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + +[[package]] +name = "drm" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ "bitflags 2.6.0", "bytemuck", "drm-ffi", "drm-fourcc", + "libc", "rustix", ] [[package]] name = "drm-ffi" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97c98727e48b7ccb4f4aea8cfe881e5b07f702d17b7875991881b41af7278d53" +checksum = "d8e41459d99a9b529845f6d2c909eb9adf3b6d2f82635ae40be8de0601726e8b" dependencies = [ "drm-sys", "rustix", @@ -895,9 +2449,9 @@ checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" [[package]] name = "drm-sys" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd39dde40b6e196c2e8763f23d119ddb1a8714534bf7d77fa97a65b0feda3986" +checksum = "bafb66c8dbc944d69e15cfcc661df7e703beffbaec8bd63151368b06c5f9858c" dependencies = [ "libc", "linux-raw-sys 0.6.5", @@ -918,6 +2472,47 @@ dependencies = [ "log", ] +[[package]] +name = "encase" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a05902cf601ed11d564128448097b98ebe3c6574bd7b6a653a3d56d54aa020" +dependencies = [ + "const_panic", + "encase_derive", + "glam", + "thiserror 1.0.69", +] + +[[package]] +name = "encase_derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "181d475b694e2dd56ae919ce7699d344d1fd259292d590c723a50d1189a2ea85" +dependencies = [ + "encase_derive_impl", +] + +[[package]] +name = "encase_derive_impl" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f97b51c5cc57ef7c5f7a0c57c250251c49ee4c28f819f87ac32f4aceabc36792" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + [[package]] name = "endi" version = "1.1.0" @@ -942,17 +2537,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", -] - -[[package]] -name = "env_filter" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" -dependencies = [ - "log", - "regex", + "syn 2.0.93", ] [[package]] @@ -962,15 +2547,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno" -version = "0.3.9" +name = "erased-serde" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] +[[package]] +name = "euclid" +version = "0.22.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "event-listener" version = "5.3.1" @@ -984,11 +2594,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ - "event-listener", + "event-listener 5.3.1", "pin-project-lite", ] @@ -1004,18 +2614,18 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] -name = "fastrand" -version = "2.1.1" +name = "fdeflate" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] [[package]] name = "fixedbitset" @@ -1024,10 +2634,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] -name = "flatbuffers" -version = "24.3.25" +name = "fixedbitset" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8add37afff2d4ffa83bc748a70b4b1370984f6980768554182424ef71447c35f" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flatbuffers" +version = "24.12.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f1baf0dbf96932ec9a3038d57900329c015b0bfb7b63d904f3bc27e2b02a096" dependencies = [ "bitflags 1.3.2", "rustc_version", @@ -1035,12 +2651,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide 0.8.2", ] [[package]] @@ -1063,33 +2679,98 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "futures-channel" -version = "0.3.30" +name = "foldhash" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "font-types" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "fontconfig-parser" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" +dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" +dependencies = [ + "fontconfig-parser", + "log", + "memmap2", + "slotmap", + "tinyvec", + "ttf-parser 0.20.0", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ - "fastrand 2.1.1", + "fastrand", "futures-core", "futures-io", "parking", @@ -1098,37 +2779,36 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", "futures-io", "futures-macro", - "futures-sink", "futures-task", "memchr", "pin-project-lite", @@ -1138,25 +2818,31 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb949699c3e4df3a183b1d2142cb24277057055ed23c68ed58894f76c517223" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" dependencies = [ "cfg-if", "libc", "log", "rustversion", - "windows", + "windows 0.58.0", ] [[package]] -name = "generic-array" -version = "0.14.7" +name = "geometry-predicates" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "8dba84198cf199c11b83f1cb9243eaeb70dc50b719d2835ebf34bf2481bca010" + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" dependencies = [ - "typenum", - "version_check", + "libc", + "windows-targets 0.48.5", ] [[package]] @@ -1166,8 +2852,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gilrs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb2c998745a3c1ac90f64f4f7b3a54219fd3612d7705e7798212935641ed18f" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "495af945e45efd6386227613cd9fb7bd7c43d3c095040e30c5304c489e6abed5" +dependencies = [ + "core-foundation 0.10.0", + "inotify", + "io-kit-sys", + "js-sys", + "libc", + "libudev-sys", + "log", + "nix 0.29.0", + "uuid", + "vec_map", + "wasm-bindgen", + "web-sys", + "windows 0.58.0", ] [[package]] @@ -1189,14 +2911,22 @@ dependencies = [ [[package]] name = "glam" -version = "0.29.0" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28091a37a5d09b555cb6628fd954da299b536433834f5b8e59eba78e0cbbf8a" +checksum = "dc46dd3ec48fdd8e693a98d2b8bafae273a2d54c1de02a2a7e3d57d501f39677" dependencies = [ + "bytemuck", "mint", + "rand", "serde", ] +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + [[package]] name = "global_counter" version = "0.2.2" @@ -1208,10 +2938,134 @@ dependencies = [ ] [[package]] -name = "h2" -version = "0.4.6" +name = "glow" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "d51fa363f025f5c111e03f13eda21162faeacb6911fe8caa0c0349f9cf0c4483" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gltf" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ce1918195723ce6ac74e80542c5a96a40c2b26162c1957a5cd70799b8cacf7" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", + "serde_json", +] + +[[package]] +name = "gltf-derive" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14070e711538afba5d6c807edb74bcb84e5dbb9211a3bf5dea0dfab5b24f4c51" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "gltf-json" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6176f9d60a7eab0a877e8e96548605dedbde9190a7ae1e80bbcc1c9af03ab14" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e1951bbd9434a81aa496fe59ccc2235af3820d27b85f9314e279609211e2c" +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.6.0", + "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.6.0", +] + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" +dependencies = [ + "bitflags 2.6.0", + "gpu-descriptor-types", + "hashbrown 0.15.2", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "grid" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be136d9dacc2a13cc70bb6c8f902b414fb2641f8db1314637c6b7933411a8f82" + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "h2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", @@ -1219,7 +3073,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.5.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -1243,6 +3097,20 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", +] [[package]] name = "hdrhistogram" @@ -1263,12 +3131,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hermit-abi" version = "0.4.0" @@ -1282,10 +3144,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "http" -version = "1.1.0" +name = "hexasphere" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "741ab88b8cc670443da777c3daab02cebf5a3caccfc04e3c052f55c94d1643fe" +dependencies = [ + "constgebra", + "glam", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "hound" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f" + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -1317,9 +3201,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1335,9 +3219,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", @@ -1356,9 +3240,9 @@ dependencies = [ [[package]] name = "hyper-timeout" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ "hyper", "hyper-util", @@ -1369,9 +3253,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", @@ -1382,11 +3266,31 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] +[[package]] +name = "image" +version = "0.25.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" +dependencies = [ + "bytemuck", + "byteorder-lite", + "num-traits", + "png", +] + +[[package]] +name = "immutable-chunkmap" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" +dependencies = [ + "arrayvec", +] + [[package]] name = "indenter" version = "0.3.3" @@ -1405,12 +3309,38 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inotify" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +dependencies = [ + "bitflags 2.6.0", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", ] [[package]] @@ -1429,10 +3359,20 @@ dependencies = [ ] [[package]] -name = "io-lifetimes" -version = "2.0.3" +name = "io-kit-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c" +checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" +dependencies = [ + "core-foundation-sys", + "mach2", +] + +[[package]] +name = "io-lifetimes" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06432fb54d3be7964ecd3649233cddf80db2832f47fec34c01f65b3d9d774983" [[package]] name = "is_terminal_polyfill" @@ -1460,9 +3400,23 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "jni" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", +] [[package]] name = "jni" @@ -1475,7 +3429,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -1496,14 +3450,35 @@ dependencies = [ ] [[package]] -name = "kdl" -version = "4.6.0" +name = "js-sys" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062c875482ccb676fd40c804a40e3824d4464c18c364547456d1c8e8e951ae47" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kdl" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e03e2e96c5926fe761088d66c8c2aee3a4352a2573f4eaca50043ad130af9117" dependencies = [ "miette", "nom", - "thiserror", + "thiserror 1.0.69", +] + +[[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]] @@ -1512,6 +3487,15 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" +[[package]] +name = "ktx2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87d65e08a9ec02e409d27a0139eaa6b9756b4d81fe7cde71f6941a83730ce838" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "lalrpop" version = "0.20.2" @@ -1519,14 +3503,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", - "bit-set", + "bit-set 0.5.3", "ena", "itertools 0.11.0", "lalrpop-util", "petgraph", "pico-args", "regex", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "string_cache", "term", "tiny-keccak", @@ -1540,7 +3524,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex-automata 0.4.7", + "regex-automata 0.4.9", ] [[package]] @@ -1550,21 +3534,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "libc" -version = "0.2.158" +name = "lewton" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" +dependencies = [ + "byteorder", + "ogg", + "tinyvec", +] + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", "windows-targets 0.52.6", ] +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + [[package]] name = "libredox" version = "0.1.3" @@ -1573,6 +3574,17 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", + "redox_syscall 0.5.8", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", ] [[package]] @@ -1587,6 +3599,12 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.12" @@ -1605,33 +3623,33 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "logos" -version = "0.14.1" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1ceb190eb9bdeecdd8f1ad6a71d6d632a50905948771718741b5461fb01e13" +checksum = "7251356ef8cb7aec833ddf598c6cb24d17b689d20b993f9d11a3d764e34e6458" dependencies = [ "logos-derive", ] [[package]] name = "logos-codegen" -version = "0.14.1" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90be66cb7bd40cb5cc2e9cfaf2d1133b04a3d93b72344267715010a466e0915a" +checksum = "59f80069600c0d66734f5ff52cc42f2dabd6b29d205f333d61fd7832e9e9963f" dependencies = [ "beef", "fnv", "lazy_static", "proc-macro2", "quote", - "regex-syntax 0.8.4", - "syn 2.0.77", + "regex-syntax 0.8.5", + "syn 2.0.93", ] [[package]] name = "logos-derive" -version = "0.14.1" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45154231e8e96586b39494029e58f12f8ffcb5ecf80333a603a13aa205ea8cbd" +checksum = "24fb722b06a9dc12adb0963ed585f19fc61dc5413e6a9be9422ef92c091e731d" dependencies = [ "logos-codegen", ] @@ -1649,6 +3667,24 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "mach2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +dependencies = [ + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + [[package]] name = "manifest-dir-macros" version = "0.1.18" @@ -1658,7 +3694,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] @@ -1684,9 +3720,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -1700,6 +3736,33 @@ dependencies = [ "autocfg", ] +[[package]] +name = "meshtext" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c68541f06674ef4bb1f84e3dca654998135ff1a8bb5a60cfbfe5b8615f8e555" +dependencies = [ + "cdt", + "glam", + "owned_ttf_parser", + "ttf-parser 0.25.1", +] + +[[package]] +name = "metal" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + [[package]] name = "miette" version = "5.10.0" @@ -1708,7 +3771,7 @@ checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" dependencies = [ "miette-derive", "once_cell", - "thiserror", + "thiserror 1.0.69", "unicode-width", ] @@ -1720,7 +3783,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] @@ -1746,11 +3809,12 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -1764,16 +3828,57 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "wasi", "windows-sys 0.52.0", ] +[[package]] +name = "naga" +version = "23.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "364f94bc34f61332abebe8cad6f6cd82a5b65cff22c828d05d0968911462ca4f" +dependencies = [ + "arrayvec", + "bit-set 0.8.0", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "codespan-reporting", + "hexf-parse", + "indexmap 2.7.0", + "log", + "pp-rs", + "rustc-hash 1.1.0", + "spirv", + "termcolor", + "thiserror 1.0.69", + "unicode-xid", +] + +[[package]] +name = "naga_oil" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ea1f080bb359927cd5404d0af1e5e6758f4f2d82ecfbebb0a0c434764e40f1" +dependencies = [ + "bit-set 0.5.3", + "codespan-reporting", + "data-encoding", + "indexmap 2.7.0", + "naga", + "once_cell", + "regex", + "regex-syntax 0.8.5", + "rustc-hash 1.1.0", + "thiserror 1.0.69", + "tracing", + "unicode-ident", +] + [[package]] name = "nanoid" version = "0.4.0" @@ -1783,6 +3888,20 @@ dependencies = [ "rand", ] +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum 0.7.3", + "thiserror 1.0.69", +] + [[package]] name = "ndk" version = "0.9.0" @@ -1792,12 +3911,10 @@ dependencies = [ "bitflags 2.6.0", "jni-sys", "log", - "ndk-sys", + "ndk-sys 0.6.0+11769913", "num_enum 0.7.3", - "raw-window-handle 0.4.3", - "raw-window-handle 0.5.2", - "raw-window-handle 0.6.2", - "thiserror", + "raw-window-handle", + "thiserror 1.0.69", ] [[package]] @@ -1806,6 +3923,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + [[package]] name = "ndk-sys" version = "0.6.0+11769913" @@ -1868,6 +3994,21 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nonmax" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -1878,6 +4019,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -1885,6 +4037,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -1923,10 +4076,222 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "dispatch", + "libc", + "objc2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", ] [[package]] @@ -1939,10 +4304,64 @@ dependencies = [ ] [[package]] -name = "once_cell" -version = "1.19.0" +name = "oboe" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" +dependencies = [ + "jni 0.21.1", + "ndk 0.8.0", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" +dependencies = [ + "cc", +] + +[[package]] +name = "offset-allocator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e234d535da3521eb95106f40f0b73483d80bfb3aacf27c40d7e2b72f1a3e00a2" +dependencies = [ + "log", + "nonmax", +] + +[[package]] +name = "ogg" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "openxr" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2d6934d2508f94fd4cbda6c2a326f111f60ce59fd9136df6d478564397dd40" +dependencies = [ + "libc", + "libloading", + "ndk-context", + "openxr-sys", +] [[package]] name = "openxr-sys" @@ -1950,7 +4369,9 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f10e7e38c47f2175fc39363713b656db899fa0b4a14341029702cbdfa6f44d05" dependencies = [ + "cmake", "libc", + "mint", ] [[package]] @@ -1959,6 +4380,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "orbclient" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +dependencies = [ + "libredox", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -1975,6 +4405,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "owned_ttf_parser" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +dependencies = [ + "ttf-parser 0.25.1", +] + [[package]] name = "owo-colors" version = "3.5.0" @@ -1983,9 +4422,9 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -2030,11 +4469,17 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall 0.5.8", "smallvec", "windows-targets 0.52.6", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -2047,8 +4492,10 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", - "indexmap 2.5.0", + "fixedbitset 0.4.2", + "indexmap 2.7.0", + "serde", + "serde_derive", ] [[package]] @@ -2091,7 +4538,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", "unicase", ] @@ -2122,29 +4569,29 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -2159,25 +4606,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.1", + "fastrand", "futures-io", ] [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[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 0.8.2", +] [[package]] name = "polling" -version = "3.7.3" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi", "pin-project-lite", "rustix", "tracing", @@ -2186,9 +4646,18 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "pp-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" +dependencies = [ + "unicode-xid", +] [[package]] name = "ppv-lite86" @@ -2205,6 +4674,22 @@ 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.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.93", +] + [[package]] name = "prisma" version = "0.1.1" @@ -2232,42 +4717,43 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" +checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" dependencies = [ "profiling-procmacros", + "tracing", ] [[package]] name = "profiling-procmacros" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" +checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "prost" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2ecbe40f08db5c006b5764a2645f7f3f141ce756412ac9e1dd6087e6d32995" +checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" dependencies = [ "bytes", "prost-derive", @@ -2275,44 +4761,50 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf0c195eebb4af52c752bec4f52f645da98b6e92077a04110c7f349477ae5ac" +checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.11.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "prost-types" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60caa6738c7369b940c3d49246a8d1749323674c65cb13010134f5c9bad5b519" +checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" dependencies = [ "prost", ] [[package]] name = "quick-xml" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] +[[package]] +name = "radsort" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" + [[package]] name = "rand" version = "0.8.5" @@ -2344,28 +4836,26 @@ dependencies = [ ] [[package]] -name = "random-string" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f70fd13c3024ae3f17381bb5c4d409c6dc9ea6895c08fa2147aba305bea3c4af" -dependencies = [ - "fastrand 1.9.0", -] - -[[package]] -name = "raw-window-handle" +name = "rand_distr" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" dependencies = [ - "cty", + "num-traits", + "rand", ] [[package]] -name = "raw-window-handle" -version = "0.5.2" +name = "range-alloc" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" + +[[package]] +name = "rangemap" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" [[package]] name = "raw-window-handle" @@ -2373,6 +4863,42 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "read-fonts" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" +dependencies = [ + "bytemuck", + "font-types", +] + +[[package]] +name = "rectangle-pack" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" + [[package]] name = "redox_syscall" version = "0.2.16" @@ -2384,9 +4910,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -2399,19 +4934,19 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -2425,13 +4960,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -2442,9 +4977,46 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "rodio" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6006a627c1a38d37f3d3a85c6575418cfe34a5392d60a686d0071e1c8d427acb" +dependencies = [ + "cpal", + "hound", + "lewton", + "symphonia", + "thiserror 1.0.69", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.7", + "bitflags 2.6.0", + "serde", + "serde_derive", +] + +[[package]] +name = "roxmltree" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rustc-demangle" @@ -2454,9 +5026,15 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" [[package]] name = "rustc_version" @@ -2469,22 +5047,48 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.35" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys 0.4.14", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "rustybuzz" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" +dependencies = [ + "bitflags 2.6.0", + "bytemuck", + "libm", + "smallvec", + "ttf-parser 0.21.1", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-properties", + "unicode-script", +] + +[[package]] +name = "ruzstd" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fad02996bfc73da3e301efe90b1837be9ed8f4a462b6ed410aa35d00381de89f" +dependencies = [ + "twox-hash", +] [[package]] name = "ryu" @@ -2501,12 +5105,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scan_fmt" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248" - [[package]] name = "scoped-tls" version = "1.0.1" @@ -2520,10 +5118,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "semver" -version = "1.0.23" +name = "sctk-adwaita" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "self_cell" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" + +[[package]] +name = "semver" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "send_wrapper" @@ -2533,29 +5150,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.209" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa", "memchr", @@ -2571,29 +5188,18 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -2631,12 +5237,28 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "siphasher" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "skrifa" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" +dependencies = [ + "bytemuck", + "read-fonts", +] + [[package]] name = "slab" version = "0.4.9" @@ -2664,11 +5286,11 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smithay" version = "0.3.0" -source = "git+https://github.com/smithay/smithay.git#656178be0a19ae4c577c9c93a3d4ebfdb80e649c" +source = "git+https://github.com/smithay/smithay.git#fe31867e3afac2543c4016fb8ed99df3e11eb6da" dependencies = [ "appendlist", "bitflags 2.6.0", - "calloop", + "calloop 0.14.2", "cgmath", "cursor-icon", "downcast-rs", @@ -2677,18 +5299,15 @@ dependencies = [ "drm-fourcc", "errno", "gl_generator", - "indexmap 2.5.0", - "lazy_static", + "indexmap 2.7.0", "libc", "libloading", - "once_cell", "profiling", "rand", "rustix", - "scan_fmt", "smallvec", "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", "wayland-protocols", "wayland-protocols-misc", @@ -2698,37 +5317,87 @@ dependencies = [ ] [[package]] -name = "socket2" -version = "0.5.7" +name = "smithay-client-toolkit" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.6.0", + "calloop 0.13.0", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[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.6.0", +] + [[package]] name = "split-iter" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f2b15926089e5526bb2dd738a2eb0e59034356e06eb71e1cd912358c0e62c4d" +[[package]] +name = "stackfuture" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eae92052b72ef70dafa16eddbabffc77e5ca3574be2f7bc1127b36f0a7ad7f2" + [[package]] name = "stardust-xr" version = "0.45.0" -source = "git+https://github.com/StardustXR/core.git#1bc94e67cad6b69fa3c509598b07bc5085cc65a3" +source = "git+https://github.com/StardustXR/core.git?branch=dev#6ea2a27df24e5fcf31fe2f7726989f0a1aecbd6c" dependencies = [ "cluFlock", + "color-eyre", "dirs", "global_counter", "mint", "nix 0.27.1", "parking_lot 0.12.3", - "rustc-hash", + "rustc-hash 2.1.0", "serde", "shiva-color-rs", "stardust-xr-schemas", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -2736,7 +5405,7 @@ dependencies = [ [[package]] name = "stardust-xr-schemas" version = "1.5.3" -source = "git+https://github.com/StardustXR/core.git#1bc94e67cad6b69fa3c509598b07bc5085cc65a3" +source = "git+https://github.com/StardustXR/core.git?branch=dev#6ea2a27df24e5fcf31fe2f7726989f0a1aecbd6c" dependencies = [ "flatbuffers", "flexbuffers", @@ -2744,10 +5413,10 @@ dependencies = [ "futures-util", "kdl", "manifest-dir-macros", - "random-string", + "nanoid", "serde", "serde_repr", - "thiserror", + "thiserror 1.0.69", "tokio", "zbus", ] @@ -2756,9 +5425,17 @@ dependencies = [ name = "stardust-xr-server" version = "0.45.0" dependencies = [ + "atomicow", + "bevy", + "bevy_mod_meshtext", + "bevy_mod_openxr", + "bevy_mod_xr", + "bevy_sk", + "bevy_xr_utils", "clap", "color-eyre", "console-subscriber", + "crossbeam-channel", "directories", "glam", "global_counter", @@ -2769,11 +5446,12 @@ dependencies = [ "nanoid", "nix 0.29.0", "once_cell", + "openxr", "parking_lot 0.12.3", "portable-atomic", "prisma", "rand", - "rustc-hash", + "rustc-hash 2.1.0", "send_wrapper", "serde", "serde_repr", @@ -2781,7 +5459,7 @@ dependencies = [ "smithay", "stardust-xr", "stardust-xr-server-codegen", - "stereokit-rust", + "thiserror 2.0.9", "tokio", "toml", "tracing", @@ -2789,6 +5467,7 @@ dependencies = [ "tracing-tracy", "wayland-backend", "wayland-scanner", + "winit", "xkbcommon-rs", "zbus", ] @@ -2812,29 +5491,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "stereokit-macros" -version = "0.1.0" -source = "git+https://github.com/mvvvv/StereoKit-rust.git#1a0ba771a948e31044f0dd264efcc9f5be4682d5" - -[[package]] -name = "stereokit-rust" -version = "0.1.0" -source = "git+https://github.com/mvvvv/StereoKit-rust.git#1a0ba771a948e31044f0dd264efcc9f5be4682d5" -dependencies = [ - "android-activity", - "android_logger", - "bitflags 2.6.0", - "cmake", - "glam", - "jni", - "log", - "ndk", - "ndk-context", - "ndk-sys", - "openxr-sys", - "stereokit-macros", - "thiserror", -] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" [[package]] name = "string_cache" @@ -2871,7 +5531,73 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.93", +] + +[[package]] +name = "svg_fmt" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce5d813d71d82c4cbc1742135004e4a79fd870214c155443451c139c9470a0aa" + +[[package]] +name = "swash" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" +dependencies = [ + "skrifa", + "yazi", + "zeno", +] + +[[package]] +name = "symphonia" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9" +dependencies = [ + "lazy_static", + "symphonia-bundle-mp3", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-bundle-mp3" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c01c2aae70f0f1fb096b6f0ff112a930b1fb3626178fba3ae68b09dce71706d4" +dependencies = [ + "lazy_static", + "log", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-core" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3" +dependencies = [ + "arrayvec", + "bitflags 1.3.2", + "bytemuck", + "lazy_static", + "log", +] + +[[package]] +name = "symphonia-metadata" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c" +dependencies = [ + "encoding_rs", + "lazy_static", + "log", + "symphonia-core", ] [[package]] @@ -2887,9 +5613,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" dependencies = [ "proc-macro2", "quote", @@ -2898,24 +5624,53 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" [[package]] -name = "sync_wrapper" -version = "1.0.1" +name = "sys-locale" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +dependencies = [ + "libc", +] + +[[package]] +name = "sysinfo" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c33cd241af0f2e9e3b5c32163b873b29956890b5342e6745b917ce9d490f4af" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "windows 0.57.0", +] + +[[package]] +name = "taffy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cb893bff0f80ae17d3a57e030622a967b8dbc90e38284d9b4b1442e23873c94" +dependencies = [ + "arrayvec", + "grid", + "num-traits", + "serde", + "slotmap", +] [[package]] name = "tempfile" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", - "fastrand 2.1.1", + "fastrand", "once_cell", "rustix", "windows-sys 0.59.0", @@ -2933,23 +5688,52 @@ dependencies = [ ] [[package]] -name = "thiserror" -version = "1.0.63" +name = "termcolor" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ - "thiserror-impl", + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +dependencies = [ + "thiserror-impl 2.0.9", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] @@ -2972,10 +5756,50 @@ dependencies = [ ] [[package]] -name = "tokio" -version = "1.40.0" +name = "tiny-skia" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -2998,14 +5822,14 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -3014,9 +5838,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -3034,7 +5858,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -3052,29 +5876,29 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.21", ] [[package]] name = "tonic" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f6ba989e4b2c58ae83d862d3a3e27690b6e3ae630d0deb59f3697f32aa88ad" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", @@ -3094,7 +5918,7 @@ dependencies = [ "socket2", "tokio", "tokio-stream", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", @@ -3120,6 +5944,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -3134,10 +5972,11 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3145,25 +5984,35 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", ] +[[package]] +name = "tracing-error" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" +dependencies = [ + "tracing", + "tracing-subscriber", +] + [[package]] name = "tracing-log" version = "0.2.0" @@ -3176,10 +6025,25 @@ dependencies = [ ] [[package]] -name = "tracing-subscriber" -version = "0.3.18" +name = "tracing-oslog" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "528bdd1f0e27b5dd9a4ededf154e824b0532731e4af73bb531de46276e0aab1e" +dependencies = [ + "bindgen", + "cc", + "cfg-if", + "once_cell", + "parking_lot 0.12.3", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -3195,9 +6059,9 @@ dependencies = [ [[package]] name = "tracing-tracy" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a90519f16f55e5c62ffd5976349f10744435a919ecff83d918300575dfb69b" +checksum = "0eaa1852afa96e0fe9e44caa53dc0bd2d9d05e0f2611ce09f97f8677af56e4ba" dependencies = [ "tracing-core", "tracing-subscriber", @@ -3205,10 +6069,21 @@ dependencies = [ ] [[package]] -name = "tracy-client" -version = "0.17.3" +name = "tracing-wasm" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373db47331c3407b343538df77eea2516884a0b126cdfb4b135acfd400015dd7" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "tracy-client" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d90a2c01305b02b76fdd89ac8608bae27e173c829a35f7d76a345ab5d33836db" dependencies = [ "loom", "once_cell", @@ -3217,11 +6092,11 @@ dependencies = [ [[package]] name = "tracy-client-sys" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cf0064dcb31c99aa1244c1b93439359e53f72ed217eef5db50abd442241e9a" +version = "0.24.3" +source = "git+https://github.com/nagisa/rust_tracy_client?tag=tracy-client-v0.17.6#5cf68af732ea10c9efa475b094326a6b92c63446" dependencies = [ "cc", + "windows-targets 0.52.6", ] [[package]] @@ -3231,10 +6106,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "typenum" -version = "1.17.0" +name = "ttf-parser" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "ttf-parser" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" [[package]] name = "uds_windows" @@ -3249,36 +6152,69 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-bidi-mirroring" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" + +[[package]] +name = "unicode-ccc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "unicode-script" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utf8parse" @@ -3286,12 +6222,28 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +dependencies = [ + "getrandom", + "serde", +] + [[package]] name = "valuable" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + [[package]] name = "version_check" version = "0.9.5" @@ -3323,6 +6275,73 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm-bindgen" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.93", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" + [[package]] name = "wayland-backend" version = "0.3.7" @@ -3338,22 +6357,57 @@ dependencies = [ ] [[package]] -name = "wayland-protocols" -version = "0.32.4" +name = "wayland-client" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b5755d77ae9040bb872a25026555ce4cb0ae75fd923e90d25fba07d81057de0" +checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" +dependencies = [ + "bitflags 2.6.0", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.6.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b08bc3aafdb0035e7fe0fdf17ba0c09c268732707dca4ae098f60cb28c9e4c" +dependencies = [ + "rustix", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" dependencies = [ "bitflags 2.6.0", "wayland-backend", + "wayland-client", "wayland-scanner", "wayland-server", ] [[package]] name = "wayland-protocols-misc" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40dd9d2f7f2713724d84b920d6f73ff878f6a353712942f75f78f4dadb72886" +checksum = "da2e42969764e469a115d4bb1c16e9588ef8b75b127ba7a2c9ddf1e140b25ca7" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -3363,13 +6417,27 @@ dependencies = [ ] [[package]] -name = "wayland-protocols-wlr" -version = "0.3.4" +name = "wayland-protocols-plasma" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109" +checksum = "9b31cab548ee68c7eb155517f2212049dc151f7cd7910c2b66abfd31c3ee12bd" dependencies = [ "bitflags 2.6.0", "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "782e12f6cd923c3c316130d56205ebab53f55d6666b7faddfad36cecaeeb4022" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", "wayland-protocols", "wayland-scanner", "wayland-server", @@ -3388,9 +6456,9 @@ dependencies = [ [[package]] name = "wayland-server" -version = "0.31.5" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f18d47038c0b10479e695d99ed073e400ccd9bdbb60e6e503c96f62adcb12b6" +checksum = "c89532cc712a2adb119eb4d09694b402576052254d0bb284f82ac1c47fb786ad" dependencies = [ "bitflags 2.6.0", "downcast-rs", @@ -3411,6 +6479,132 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "web-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wgpu" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f70000db37c469ea9d67defdc13024ddf9a5f1b89cb2941b812ad7cde1735a" +dependencies = [ + "arrayvec", + "cfg_aliases 0.1.1", + "document-features", + "js-sys", + "log", + "naga", + "parking_lot 0.12.3", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d63c3c478de8e7e01786479919c8769f62a22eec16788d8c2ac77ce2c132778a" +dependencies = [ + "arrayvec", + "bit-vec 0.8.0", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "document-features", + "indexmap 2.7.0", + "log", + "naga", + "once_cell", + "parking_lot 0.12.3", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 1.0.69", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89364b8a0b211adc7b16aeaf1bd5ad4a919c1154b44c9ce27838213ba05fd821" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set 0.8.0", + "bitflags 2.6.0", + "block", + "bytemuck", + "cfg_aliases 0.1.1", + "core-graphics-types", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "parking_lot 0.12.3", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 1.0.69", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "windows 0.58.0", + "windows-core 0.58.0", +] + +[[package]] +name = "wgpu-types" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610f6ff27778148c31093f3b03abc4840f9636d58d597ca2f5977433acfe0068" +dependencies = [ + "bitflags 2.6.0", + "js-sys", + "web-sys", +] + [[package]] name = "winapi" version = "0.3.9" @@ -3433,7 +6627,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -3442,13 +6636,55 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core", + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result 0.1.2", "windows-targets 0.52.6", ] @@ -3458,13 +6694,24 @@ version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", "windows-strings", "windows-targets 0.52.6", ] +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "windows-implement" version = "0.58.0" @@ -3473,7 +6720,18 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] @@ -3484,7 +6742,16 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3502,7 +6769,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] @@ -3720,6 +6987,58 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "winit" +version = "0.30.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dba50bc8ef4b6f1a75c9274fb95aa9a8f63fbc66c56f391bd85cf68d51e7b1a3" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.6.0", + "block2", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases 0.2.1", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk 0.9.0", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + [[package]] name = "winnow" version = "0.5.40" @@ -3731,13 +7050,51 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "e6f5bb5257f2407a5425c6e749bfd9692192a73e70a6060516ac04f889087d68" dependencies = [ "memchr", ] +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xcursor" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" + [[package]] name = "xdg-home" version = "1.3.0" @@ -3759,6 +7116,19 @@ dependencies = [ "xkeysym", ] +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.6.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + [[package]] name = "xkbcommon-rs" version = "0.1.0" @@ -3766,7 +7136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d02316af6831aee03a1ecc7b887ec1e983f4cc43792b80faade552cd7e710c6" dependencies = [ "bitflags 2.6.0", - "indexmap 2.5.0", + "indexmap 2.7.0", "lalrpop", "lalrpop-util", "log", @@ -3776,7 +7146,7 @@ dependencies = [ "phf_shared 0.11.2", "strum", "strum_macros", - "thiserror", + "thiserror 1.0.69", "unicase", "xkbcommon-rs-codegen", "xkeysym", @@ -3803,17 +7173,23 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.21" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a77ee7c0de333dcc6da69b177380a0b81e0dacfa4f7344c465a36871ee601" +checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" + +[[package]] +name = "yazi" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" [[package]] name = "zbus" -version = "4.4.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" +checksum = "fb67eadba43784b6fb14857eba0d8fc518686d3ee537066eb6086dc318e2c8a1" dependencies = [ - "async-broadcast", + "async-broadcast 0.7.2", "async-executor", "async-fs", "async-io", @@ -3824,22 +7200,20 @@ dependencies = [ "async-trait", "blocking", "enumflags2", - "event-listener", + "event-listener 5.3.1", "futures-core", - "futures-sink", "futures-util", "hex", "nix 0.29.0", "ordered-stream", - "rand", "serde", "serde_repr", - "sha1", "static_assertions", "tokio", "tracing", "uds_windows", - "windows-sys 0.52.0", + "windows-sys 0.59.0", + "winnow 0.6.21", "xdg-home", "zbus_macros", "zbus_names", @@ -3848,28 +7222,37 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.4.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" +checksum = "2c9d49ebc960ceb660f2abe40a5904da975de6986f2af0d7884b39eec6528c57" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", + "zbus_names", + "zvariant", "zvariant_utils", ] [[package]] name = "zbus_names" -version = "3.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +checksum = "856b7a38811f71846fd47856ceee8bccaec8399ff53fb370247e66081ace647b" dependencies = [ "serde", "static_assertions", + "winnow 0.6.21", "zvariant", ] +[[package]] +name = "zeno" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" + [[package]] name = "zerocopy" version = "0.7.35" @@ -3888,42 +7271,57 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", ] [[package]] name = "zvariant" -version = "4.2.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +checksum = "a1200ee6ac32f1e5a312e455a949a4794855515d34f9909f4a3e082d14e1a56f" dependencies = [ "endi", "enumflags2", "serde", "static_assertions", + "winnow 0.6.21", "zvariant_derive", + "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "4.2.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" +checksum = "687e3b97fae6c9104fbbd36c73d27d149abf04fb874e2efbd84838763daa8916" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.93", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "2.1.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +checksum = "20d1d011a38f12360e5fcccceeff5e2c42a8eb7f27f0dcba97a0862ede05c9c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "serde", + "static_assertions", + "syn 2.0.93", + "winnow 0.6.21", ] + +[[patch.unused]] +name = "tracing-tracy" +version = "0.11.3" +source = "git+https://github.com/nagisa/rust_tracy_client?tag=tracy-client-v0.17.6#5cf68af732ea10c9efa475b094326a6b92c63446" + +[[patch.unused]] +name = "tracy-client" +version = "0.17.6" +source = "git+https://github.com/nagisa/rust_tracy_client?tag=tracy-client-v0.17.6#5cf68af732ea10c9efa475b094326a6b92c63446" diff --git a/Cargo.toml b/Cargo.toml index dd3a454..e7ea4c6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,22 +9,35 @@ license = "GPLv2" repository = "https://github.com/StardustXR/stardust-xr-server/" homepage = "https://stardustxr.org" +[patch.crates-io] +tracing-tracy = { git = "https://github.com/nagisa/rust_tracy_client", tag = "tracy-client-v0.17.6" } +tracy-client = { git = "https://github.com/nagisa/rust_tracy_client", tag = "tracy-client-v0.17.6" } +tracy-client-sys = { git = "https://github.com/nagisa/rust_tracy_client", tag = "tracy-client-v0.17.6" } + [workspace] members = ["codegen"] [workspace.dependencies.stardust-xr] git = "https://github.com/StardustXR/core.git" +branch = "dev" [[bin]] name = "stardust-xr-server" path = "src/main.rs" [features] -default = ["wayland"] +default = [] wayland = ["dep:smithay", "dep:wayland-scanner", "dep:wayland-backend"] profile_tokio = ["dep:console-subscriber", "tokio/tracing"] profile_app = ["dep:tracing-tracy"] -local_deps = ["stereokit-rust/force-local-deps"] + +# Enable a small amount of optimization in the dev profile. +[profile.dev] +opt-level = 1 + +# Enable a large amount of optimization in the dev profile for dependencies. +[profile.dev.package."*"] +opt-level = 3 [package.metadata.appimage] auto_link = true @@ -37,21 +50,24 @@ auto_link_exclude_list = [ "libEGL*", ] -[profile.dev.package."*"] -opt-level = 3 -debug = true -strip = "none" -debug-assertions = true -overflow-checks = true - -[profile.release] -opt-level = 3 -debug = "line-tables-only" -strip = "none" -debug-assertions = true -overflow-checks = false - [dependencies] +bevy = { version = "0.15.1", features = [ + "wayland", + "mp3", + "wav", + "trace_tracy", +] } +bevy_mod_xr.git = "https://github.com/awtterpip/bevy_oxr" +bevy_mod_openxr.git = "https://github.com/awtterpip/bevy_oxr" +bevy_xr_utils.git = "https://github.com/awtterpip/bevy_oxr" +# bevy_mod_xr = { git = "https://github.com/Schmarni-Dev/bevy_openxr", branch = "pbr" } +# bevy_mod_openxr = { git = "https://github.com/Schmarni-Dev/bevy_openxr", branch = "pbr" } +# bevy_xr_utils = { git = "https://github.com/Schmarni-Dev/bevy_openxr", branch = "pbr" } +bevy_mod_meshtext.git = "https://github.com/Schmarni-Dev/bevy_mod_meshtext" +# bevy_sk.path = "../bevy_sk" +bevy_sk.git = "https://github.com/MalekiRe/bevy_sk" +openxr = "0.19" +winit = { version = "0.30", default-features = false, features = [] } # small utility thingys once_cell = "1.19.0" nanoid = "0.4.0" @@ -87,13 +103,16 @@ prisma = "0.1.1" libc = "0.2.155" nix = "0.29.0" input-event-codes = "6.2.0" -zbus = { version = "4.4.0", default-features = false, features = ["tokio"] } +zbus = { version = "5.0.0", default-features = false, features = ["tokio"] } directories = "5.0.1" xkbcommon-rs = "0.1.0" +thiserror = "2.0.9" +crossbeam-channel = "0.5.14" +atomicow = "1.0.0" # wayland -wayland-backend = { version = "0.3.7", optional = true, default-features = false } -wayland-scanner = { version = "0.31.4", optional = true } +wayland-scanner = { version = "0.31.2", optional = true } +wayland-backend = { version = "0.3.4", optional = true } [dependencies.smithay] # git = "https://github.com/technobaboo/smithay.git" @@ -101,17 +120,15 @@ wayland-scanner = { version = "0.31.4", optional = true } git = "https://github.com/smithay/smithay.git" # path = "../smithay" default-features = false -features = ["desktop", "backend_drm", "renderer_gl", "wayland_frontend"] +features = [ + "desktop", + "backend_drm", + "backend_egl", + "renderer_gl", + "wayland_frontend", +] optional = true - -[dependencies.stereokit-rust] -# path = "../StereoKit-rust" -git = "https://github.com/mvvvv/StereoKit-rust.git" -# git = "https://github.com/technobaboo/StereoKit-rust.git" -features = ["no-event-loop"] -default-features = false - [dependencies.stardust-xr] workspace = true diff --git a/codegen/src/lib.rs b/codegen/src/lib.rs index 5ededbe..eaefca5 100644 --- a/codegen/src/lib.rs +++ b/codegen/src/lib.rs @@ -25,10 +25,6 @@ pub fn codegen_field_protocol(_input: proc_macro::TokenStream) -> proc_macro::To codegen_protocol(FIELD_PROTOCOL) } #[proc_macro] -pub fn codegen_data_protocol(_input: proc_macro::TokenStream) -> proc_macro::TokenStream { - codegen_protocol(DATA_PROTOCOL) -} -#[proc_macro] pub fn codegen_audio_protocol(_input: proc_macro::TokenStream) -> proc_macro::TokenStream { codegen_protocol(AUDIO_PROTOCOL) } @@ -53,6 +49,93 @@ pub fn codegen_item_panel_protocol(_input: proc_macro::TokenStream) -> proc_macr codegen_protocol(ITEM_PANEL_PROTOCOL) } +#[proc_macro] +pub fn codegen_id_to_name_functions(_input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let mut aspect_map: Vec<(u64, String)> = Vec::new(); + let mut method_map: Vec<(u64, String)> = Vec::new(); + let mut signal_map: Vec<(u64, String)> = Vec::new(); + let protocols = [ + ROOT_PROTOCOL, + NODE_PROTOCOL, + SPATIAL_PROTOCOL, + FIELD_PROTOCOL, + AUDIO_PROTOCOL, + DRAWABLE_PROTOCOL, + INPUT_PROTOCOL, + ITEM_PROTOCOL, + ITEM_CAMERA_PROTOCOL, + ITEM_PANEL_PROTOCOL, + ]; + for aspect in protocols + .into_iter() + .filter_map(|p| Protocol::parse(p).ok()) + .flat_map(|v| v.aspects) + { + aspect_map.push((aspect.id, aspect.name)); + for m in aspect.members.into_iter() { + match m._type { + MemberType::Signal => &mut signal_map, + MemberType::Method => &mut method_map, + } + .push((m.opcode, m.name)); + } + } + + let aspect_id_to_name = aspect_map + .iter() + .map(|(id, name)| { + quote! { + #id => #name, + } + }) + .reduce(fold_tokens); + let aspect_id_to_name_fn = quote! { + pub const fn aspect_id_to_name(id: u64) -> &'static str { + match id { + #aspect_id_to_name + _ => "Unknown" + } + } + }; + let method_id_to_name = method_map + .iter() + .map(|(id, name)| { + quote! { + #id => #name, + } + }) + .reduce(fold_tokens); + let method_id_to_name_fn = quote! { + pub const fn method_id_to_name(id: u64) -> &'static str { + match id { + #method_id_to_name + _ => "Unknown" + } + } + }; + let signal_id_to_name = signal_map + .iter() + .map(|(id, name)| { + quote! { + #id => #name, + } + }) + .reduce(fold_tokens); + let signal_id_to_name_fn = quote! { + pub const fn signal_id_to_name(id: u64) -> &'static str { + match id { + #signal_id_to_name + _ => "Unknown" + } + } + }; + quote! { + #aspect_id_to_name_fn + #method_id_to_name_fn + #signal_id_to_name_fn + }.into() +} + fn codegen_protocol(protocol: &'static str) -> proc_macro::TokenStream { let protocol = Protocol::parse(protocol).unwrap(); let interface = protocol @@ -64,11 +147,28 @@ fn codegen_protocol(protocol: &'static str) -> proc_macro::TokenStream { }; let aspect = generate_aspect(&Aspect { name: "interface".to_string(), + id: 0, description: protocol.description.clone(), inherits: vec![], members: p.members, }); - quote!(#node_id #aspect) + quote! { + #node_id + #aspect + pub struct Interface; + impl crate::nodes::AspectIdentifier for Interface { + impl_aspect_for_interface_aspect_id!{} + } + impl crate::nodes::Aspect for Interface { + impl_aspect_for_interface_aspect!{} + } + pub fn create_interface(client: &std::sync::Arc) -> crate::core::error::Result<()>{ + let node = crate::nodes::Node::from_id(client,INTERFACE_NODE_ID,false); + node.add_aspect(Interface); + node.add_to_scenegraph()?; + Ok(()) + } + } }) .unwrap_or_default(); let custom_enums = protocol @@ -177,11 +277,12 @@ fn generate_aspect(aspect: &Aspect) -> TokenStream { Span::call_site(), ); let client_side_members = client_members - .map(generate_member) + .map(|m| generate_member(aspect.id, m)) .reduce(fold_tokens) .map(|t| { // TODO: properly import all dependencies quote! { + #[allow(clippy::all)] pub mod #client_mod_name { use super::*; #t @@ -190,11 +291,6 @@ fn generate_aspect(aspect: &Aspect) -> TokenStream { }) .unwrap_or_default(); - let aspect_trait_name = Ident::new( - &format!("{}Aspect", &aspect.name.to_case(Case::Pascal)), - Span::call_site(), - ); - let opcodes = aspect .members .iter() @@ -219,31 +315,95 @@ fn generate_aspect(aspect: &Aspect) -> TokenStream { let alias_info = generate_alias_info(aspect); let server_side_members = server_members - .map(generate_member) + .map(|m| generate_member(aspect.id, m)) .reduce(fold_tokens) .unwrap_or_default(); - let add_node_members = aspect + let aspect_trait_name = Ident::new( + &format!("{}Aspect", &aspect.name.to_case(Case::Pascal)), + Span::call_site(), + ); + let run_signals = aspect .members .iter() .filter(|m| m.side == Side::Server) - .map(generate_handler) + .filter(|m| m._type == MemberType::Signal) + .map(|m| generate_run_member(&aspect_trait_name, MemberType::Signal, m)) + .reduce(fold_tokens) + .unwrap_or_default(); + let run_methods = aspect + .members + .iter() + .filter(|m| m.side == Side::Server) + .filter(|m| m._type == MemberType::Method) + .map(|m| generate_run_member(&aspect_trait_name, MemberType::Method, m)) .reduce(fold_tokens) - .map(|members| { - quote! { - fn add_node_members(node: &crate::nodes::Node) { - #members - } - } - }) .unwrap_or_default(); let server_side_members = quote! { + #[allow(clippy::all)] #[doc = #description] pub trait #aspect_trait_name { - #add_node_members #server_side_members } }; - quote!(#opcodes #alias_info #client_side_members #server_side_members) + let aspect_id_macro_name = Ident::new( + &format!( + "impl_aspect_for_{}_aspect_id", + aspect.name.to_case(Case::Snake) + ), + Span::call_site(), + ); + let aspect_macro_name = Ident::new( + &format!( + "impl_aspect_for_{}_aspect", + aspect.name.to_case(Case::Snake) + ), + Span::call_site(), + ); + let aspect_id = aspect.id; + let aspect_macro = quote! { + macro_rules! #aspect_id_macro_name { + () => { + const ID: u64 = #aspect_id; + } + } + macro_rules! #aspect_macro_name { + () => { + fn as_any(self: Arc) -> Arc { + self + } + #[allow(clippy::all)] + fn run_signal( + &self, + _calling_client: std::sync::Arc, + _node: std::sync::Arc, + _signal: u64, + _message: crate::nodes::Message + ) -> Result<(), stardust_xr::scenegraph::ScenegraphError> { + match _signal { + #run_signals + _ => Err(stardust_xr::scenegraph::ScenegraphError::MemberNotFound) + } + } + #[allow(clippy::all)] + fn run_method( + &self, + _calling_client: std::sync::Arc, + _node: std::sync::Arc, + _method: u64, + _message: crate::nodes::Message, + _method_response: crate::nodes::MethodResponseSender, + ) { + match _method { + #run_methods + _ => { + let _ = _method_response.send(Err(stardust_xr::scenegraph::ScenegraphError::MemberNotFound)); + } + } + } + }; + } + }; + quote!(#opcodes #alias_info #client_side_members #server_side_members #aspect_macro) } fn generate_alias_opcodes(aspect: &Aspect, side: Side, _type: MemberType) -> TokenStream { @@ -283,6 +443,7 @@ fn generate_alias_info(aspect: &Aspect) -> TokenStream { quote! { lazy_static::lazy_static! { + #[allow(clippy::all)] pub static ref #aspect_alias_info_name: crate::nodes::alias::AliasInfo = crate::nodes::alias::AliasInfo { server_signals: vec![#local_signals], server_methods: vec![#local_methods], @@ -293,8 +454,8 @@ fn generate_alias_info(aspect: &Aspect) -> TokenStream { } } -fn generate_member(member: &Member) -> TokenStream { - let id = member.opcode; +fn generate_member(aspect_id: u64, member: &Member) -> TokenStream { + let opcode = member.opcode; let name = Ident::new(&member.name.to_case(Case::Snake), Span::call_site()); let description = &member.description; @@ -326,38 +487,38 @@ fn generate_member(member: &Member) -> TokenStream { .unwrap_or_else(|| quote!(())); match (side, _type) { - (Side::Client, MemberType::Method) => { - quote! { - #[doc = #description] - pub async fn #name(#argument_decls) -> color_eyre::eyre::Result<(#return_type, Vec)> { - _node.execute_remote_method_typed(#id, &(#argument_uses), vec![]).await - } - } - } (Side::Client, MemberType::Signal) => { quote! { #[doc = #description] - pub fn #name(#argument_decls) -> color_eyre::eyre::Result<()> { + pub fn #name(#argument_decls) -> crate::core::error::Result<()> { let serialized = stardust_xr::schemas::flex::serialize((#argument_uses))?; - _node.send_remote_signal(#id, serialized) + _node.send_remote_signal(#aspect_id, #opcode, serialized) } } } - (Side::Server, MemberType::Method) => { + (Side::Client, MemberType::Method) => { quote! { #[doc = #description] - fn #name(#argument_decls) -> impl std::future::Future> + Send + 'static; + pub async fn #name(#argument_decls) -> crate::core::error::Result<(#return_type, Vec)> { + _node.execute_remote_method_typed(#aspect_id, #opcode, &(#argument_uses), vec![]).await + } } } (Side::Server, MemberType::Signal) => { quote! { #[doc = #description] - fn #name(#argument_decls) -> color_eyre::eyre::Result<()>; + fn #name(#argument_decls) -> crate::core::error::Result<()>; + } + } + (Side::Server, MemberType::Method) => { + quote! { + #[doc = #description] + fn #name(#argument_decls) -> impl std::future::Future> + Send + Sync + 'static; } } } } -fn generate_handler(member: &Member) -> TokenStream { +fn generate_run_member(aspect_name: &Ident, _type: MemberType, member: &Member) -> TokenStream { let opcode = member.opcode; let member_name_ident = Ident::new(&member.name, Span::call_site()); @@ -379,7 +540,10 @@ fn generate_handler(member: &Member) -> TokenStream { .clone() .zip(argument_types) .map(|(argument_names, argument_types)| { - quote!(let (#argument_names): (#argument_types) = stardust_xr::schemas::flex::deserialize(_message.as_ref())?;) + quote!{ + #[allow(unused_parens)] + let (#argument_names): (#argument_types) = stardust_xr::schemas::flex::deserialize(_message.as_ref())?; + } }) .unwrap_or_default(); let serialize = generate_argument_serialize( @@ -393,21 +557,19 @@ fn generate_handler(member: &Member) -> TokenStream { .map(|a| generate_argument_deserialize(&a.name, &a._type, a.optional)) .reduce(|a, b| quote!(#a, #b)) .unwrap_or_default(); - match member._type { + match _type { MemberType::Signal => quote! { - node.add_local_signal(#opcode, |_node, _calling_client, _message| { + #opcode => (move || { #deserialize - Self::#member_name_ident(_node, _calling_client.clone(), #argument_uses) - }); + ::#member_name_ident(_node, _calling_client.clone(), #argument_uses) + })().map_err(|e: crate::core::error::ServerError| stardust_xr::scenegraph::ScenegraphError::MemberError { error: e.to_string() }), }, MemberType::Method => quote! { - node.add_local_method(#opcode, |_node, _calling_client, _message, _method_response| { - _method_response.wrap_async(async move { - #deserialize - let result = Self::#member_name_ident(_node, _calling_client.clone(), #argument_uses).await?; - Ok((#serialize, Vec::new())) - }); - }); + #opcode => _method_response.wrap_async(async move { + #deserialize + let result = ::#member_name_ident(_node, _calling_client.clone(), #argument_uses).await?; + Ok((#serialize, Vec::::new())) + }), }, } } @@ -441,18 +603,18 @@ fn generate_argument_deserialize( } if optional { let mapping = generate_argument_deserialize("o", argument_type, false); - return quote!(#name.map(|o| Ok::<_, color_eyre::eyre::Report>(#mapping)).transpose()?); + return quote!(#name.map(|o| Ok::<_, crate::core::error::ServerError>(#mapping)).transpose()?); } match argument_type { ArgumentType::Color => quote!(color::rgba_linear!(#name[0], #name[1], #name[2], #name[3])), ArgumentType::Vec(v) => { let mapping = generate_argument_deserialize("a", v, false); - quote!(#name.into_iter().map(|a| Ok(#mapping)).collect::>>()?) + quote!(#name.into_iter().map(|a| Ok(#mapping)).collect::>>()?) } ArgumentType::Map(v) => { let mapping = generate_argument_deserialize("a", v, false); - quote!(#name.into_iter().map(|(k, a)| Ok((k, #mapping))).collect::>>()?) + quote!(#name.into_iter().map(|(k, a)| Ok((k, #mapping))).collect::>>()?) } _ => quote!(#name), } @@ -474,11 +636,11 @@ fn generate_argument_serialize( ArgumentType::Color => quote!([#name.c.r, #name.c.g, #name.c.b, #name.a]), ArgumentType::Vec(v) => { let mapping = generate_argument_serialize("a", v, false); - quote!(#name.into_iter().map(|a| Ok(#mapping)).collect::>>()?) + quote!(#name.into_iter().map(|a| Ok(#mapping)).collect::>>()?) } ArgumentType::Map(v) => { let mapping = generate_argument_serialize("a", v, false); - quote!(#name.into_iter().map(|(k, a)| Ok((k, #mapping))).collect::>>()?) + quote!(#name.into_iter().map(|(k, a)| Ok((k, #mapping))).collect::>>()?) } _ => quote!(#name), } @@ -511,6 +673,7 @@ fn argument_type_option_name(argument_type: &ArgumentType) -> String { ArgumentType::Union(u) => u.clone(), ArgumentType::Struct(s) => s.clone(), ArgumentType::Node { _type, .. } => _type.clone(), + ArgumentType::Fd => "File Descriptor".to_string(), } } fn generate_argument_type( @@ -607,6 +770,9 @@ fn generate_argument_type( quote!(std::sync::Arc) } } + ArgumentType::Fd => { + quote!(&std::os::fd::OwnedFd) + } }; if optional { diff --git a/justfile b/justfile new file mode 100644 index 0000000..5807123 --- /dev/null +++ b/justfile @@ -0,0 +1,12 @@ +PREFIX := "usr" +BINARY := PREFIX / "bin" +DESTDIR := "/" + +build: + cargo build --release + +test: + cargo test + +install: + install -Dm755 target/release/stardust-xr-server {{ DESTDIR }}{{ BINARY }}/stardust-xr-server diff --git a/src/bevy_plugin.rs b/src/bevy_plugin.rs new file mode 100644 index 0000000..c85a8d0 --- /dev/null +++ b/src/bevy_plugin.rs @@ -0,0 +1,195 @@ +use std::ops::Deref; + +use bevy::{ + app::MainScheduleOrder, + ecs::schedule::{ExecutorKind, ScheduleLabel}, + math::bounding::Aabb3d, + pbr::{DefaultOpaqueRendererMethod, GpuMeshPreprocessPlugin, MeshRenderPlugin}, + prelude::*, + render::extract_resource::ExtractResourcePlugin, +}; +use bevy_mod_openxr::session::OxrSession; +use bevy_mod_xr::session::{session_available, XrFirst, XrSessionCreated}; +use once_cell::sync::OnceCell; +use openxr::ReferenceSpaceType; +use stardust_xr::values::color::{color_space::LinearRgb, AlphaColor, Rgb}; + +use crate::DefaultMaterial; + +pub struct StardustBevyPlugin; + +pub static DESTROY_ENTITY: DestroySender = DestroySender(OnceCell::new()); + +pub struct DestroySender(OnceCell>); +impl Deref for DestroySender { + type Target = crossbeam_channel::Sender; + + fn deref(&self) -> &Self::Target { + self.0.get().unwrap() + } +} +#[derive(Resource, Deref)] +struct DestroyEntityReader(crossbeam_channel::Receiver); + +#[derive(Resource, Deref)] +pub struct DbusConnection(pub zbus::Connection); + +#[derive(ScheduleLabel, Hash, Debug, PartialEq, Eq, Clone)] +pub struct InputUpdate; +#[derive(ScheduleLabel, Hash, Debug, PartialEq, Eq, Clone)] +pub struct StardustFirst; +impl Plugin for StardustBevyPlugin { + fn build(&self, app: &mut App) { + let (tx, rx) = crossbeam_channel::unbounded(); + DESTROY_ENTITY + .0 + .set(tx) + .expect("unable to set destroy entity sender, yell at schmarni pls thx"); + app.insert_resource(DestroyEntityReader(rx)); + app.init_schedule(StardustExtract); + let labels = &mut app.world_mut().resource_mut::().labels; + info!("test: {labels:?}"); + labels.insert(labels.len() - 2, StardustExtract.intern()); + app.add_systems(Startup, spawn_camera.run_if(not(session_available))); + app.add_systems(XrSessionCreated, make_view_space); + let mut schedule = Schedule::new(InputUpdate); + schedule.set_executor_kind(ExecutorKind::Simple); + app.add_schedule(schedule); + + let mut schedule = Schedule::new(StardustFirst); + schedule.set_executor_kind(ExecutorKind::Simple); + app.add_schedule(schedule); + + let labels = &mut app.world_mut().resource_mut::().labels; + let xr_first_intern = (XrFirst).intern(); + if labels.remove(0) != xr_first_intern { + panic!("first schedule was not XrFirst!"); + } + labels.insert(0, (StardustFirst).intern()); + app.add_systems(First, yeet_entities); + // app.add_observer( + // |trigger: Trigger>, + // query: Query<&MeshMaterial3d>, + // mut mats: ResMut>| { + // let Ok(handle) = query.get(trigger.entity()) else { + // return; + // }; + // if let Some(mat) = mats.get_mut(handle) { + // if matches!(mat.alpha_mode, AlphaMode::Blend | AlphaMode::Mask(_)) { + // mat.alpha_mode = AlphaMode::AlphaToCoverage + // } + // } + // }, + // ); + } +} + +fn yeet_entities( + mut cmds: Commands, + query: Query>, + reader: Res, +) { + query.iter().for_each(|e| { + info!("yeeting component entities"); + cmds.entity(e).despawn_recursive(); + }); + reader + .0 + .try_iter() + .for_each(|e| cmds.entity(e).despawn_recursive()); +} + +fn make_view_space(mut cmds: Commands, session: Res) { + // idk what errors this function returns + let view_space = session + .create_reference_space(ReferenceSpaceType::VIEW, Transform::IDENTITY) + .unwrap(); + // this locates the view space against the default reference space (stage i belive) and sets + // the transform relative to the XrTrackingRoot + cmds.spawn((view_space.0, ViewLocation)); +} + +fn spawn_camera(mut cmds: Commands) { + cmds.spawn((Camera3d::default(), ViewLocation)); +} +pub trait StardustAabb3dExt { + fn grown_box(&self, aabb: &Self, opt_box_transform: Option>) -> Self; + fn grown_point(&self, pt: impl Into) -> Self; +} +impl StardustAabb3dExt for Aabb3d { + fn grown_box(&self, other: &Self, opt_box_transform: Option>) -> Self { + let mat = opt_box_transform.map(|m| m.into()); + let other_min = mat + .as_ref() + .map(|v| v.transform_point3a(other.min)) + .unwrap_or(other.min); + let other_max = mat + .as_ref() + .map(|v| v.transform_point3a(other.max)) + .unwrap_or(other.max); + let tmp = self.grown_point(other_min); + tmp.grown_point(other_max) + } + + fn grown_point(&self, pt: impl Into) -> Self { + let pt = pt.into(); + let mut min = self.min; + let mut max = self.max; + if pt.x > max.x { + max.x = pt.x; + } else if pt.x < min.x { + min.x = pt.x; + } + if pt.y > max.y { + max.y = pt.y; + } else if pt.y < min.y { + min.y = pt.y; + } + if pt.z > max.z { + max.z = pt.z; + } else if pt.z < min.z { + min.z = pt.z; + } + + Aabb3d { min, max } + } +} + +pub const fn convert_linear_rgba(c: AlphaColor>) -> LinearRgba { + LinearRgba { + red: c.c.r, + green: c.c.g, + blue: c.c.b, + alpha: c.a, + } +} + +#[derive(ScheduleLabel, Hash, Debug, Clone, Copy, PartialEq, Eq)] +pub struct StardustExtract; +#[derive(Component, Hash, Debug, Clone, Copy, PartialEq, Eq)] +pub struct TemporaryEntity; +#[derive(Component, Hash, Debug, Clone, Copy, PartialEq, Eq)] +#[require(GlobalTransform)] +pub struct ViewLocation; +#[derive(Hash, Debug, Clone, Copy, PartialEq, Eq, Deref)] +pub struct MainWorldEntity(pub Entity); + +pub struct DummyPbrPlugin; + +impl Plugin for DummyPbrPlugin { + fn build(&self, app: &mut App) { + let use_gpu_instance_buffer_builder = true; + app.init_asset::(); + app.add_plugins(( + GpuMeshPreprocessPlugin { + use_gpu_instance_buffer_builder, + }, + MeshRenderPlugin { + use_gpu_instance_buffer_builder, + }, + )); + app.register_type::() + .init_resource::() + .add_plugins(ExtractResourcePlugin::::default()); + } +} diff --git a/src/core/client.rs b/src/core/client.rs index 82897d0..453fcd4 100644 --- a/src/core/client.rs +++ b/src/core/client.rs @@ -6,7 +6,7 @@ use super::{ use crate::{ core::{registry::OwnedRegistry, task}, nodes::{ - audio, data, drawable, fields, input, items, + audio, drawable, fields, input, items, root::{ClientState, Root}, spatial, Node, }, @@ -112,9 +112,8 @@ impl Client { fields::create_interface(&client)?; drawable::create_interface(&client)?; audio::create_interface(&client)?; - data::create_interface(&client)?; input::create_interface(&client)?; - items::camera::create_interface(&client)?; + // items::camera::create_interface(&client)?; items::panel::create_interface(&client)?; let _ = client.state.set(state.apply_to(&client)); diff --git a/src/core/error.rs b/src/core/error.rs new file mode 100644 index 0000000..3f189dc --- /dev/null +++ b/src/core/error.rs @@ -0,0 +1,74 @@ +use std::any::TypeId; + +use color_eyre::eyre::Report; +use stardust_xr::{ + messenger::MessengerError, + schemas::flex::{ + flexbuffers::{DeserializationError, ReaderError}, + FlexSerializeError, + }, +}; +use thiserror::Error; + +pub type Result = std::result::Result; + +#[derive(Error, Debug)] +pub enum ServerError { + #[error("Internal: Unable to get client")] + NoClient, + #[error("Messenger does not exist for this node")] + NoMessenger, + #[error("Could not find resource")] + NoResource, + #[error("Messenger error: {0}")] + MessengerError(#[from] MessengerError), + #[error("Remote method error: {0}")] + RemoteMethodError(String), + #[error("Serialization error: {0}")] + SerializationError(#[from] FlexSerializeError), + #[error("Deserialization error: {0}")] + DeserializationError(#[from] DeserializationError), + #[error("Reader error: {0}")] + ReaderError(#[from] ReaderError), + #[error("Aspect {} does not exist for node", 0.to_string())] + NoAspect(TypeId), + #[error("{0}")] + Report(#[from] Report), +} + +#[macro_export] +macro_rules! bail { + ($msg:literal $(,)?) => { + return Err($crate::core::error::ServerError::from(color_eyre::eyre::eyre!($msg))); + }; + ($err:expr $(,)?) => { + return Err($crate::core::error::ServerError::from(color_eyre::eyre::eyre!($err))); + }; + ($fmt:expr, $($arg:tt)*) => { + return Err($crate::core::error::ServerError::from(color_eyre::eyre::eyre!($fmt, $($arg)*))); + }; +} + +#[macro_export] +macro_rules! ensure { + ($cond:expr $(,)?) => { + if !$cond { + $crate::ensure!($cond, concat!("Condition failed: `", stringify!($cond), "`")) + } + }; + ($cond:expr, $msg:literal $(,)?) => { + if !$cond { + return Err($crate::core::error::ServerError::from(color_eyre::eyre::eyre!($msg))); + } + }; + ($cond:expr, $err:expr $(,)?) => { + if !$cond { + return Err($crate::core::error::ServerError::from(color_eyre::eyre::eyre!($err))); + } + }; + ($cond:expr, $fmt:expr, $($arg:tt)*) => { + if !$cond { + return Err($crate::core::error::ServerError::from(color_eyre::eyre::eyre!($fmt, $($arg)*))); + } + }; +} diff --git a/src/core/idl_utils.rs b/src/core/idl_utils.rs deleted file mode 100644 index e84d53c..0000000 --- a/src/core/idl_utils.rs +++ /dev/null @@ -1,11 +0,0 @@ -#[macro_export] -macro_rules! create_interface { - ($iface:ident) => { - pub fn create_interface(client: &Arc) -> Result<()> { - let node = Node::from_id(client, INTERFACE_NODE_ID, false); - <$iface as self::InterfaceAspect>::add_node_members(&node); - node.add_to_scenegraph()?; - Ok(()) - } - }; -} diff --git a/src/core/mod.rs b/src/core/mod.rs index 93931c2..0239164 100644 --- a/src/core/mod.rs +++ b/src/core/mod.rs @@ -2,8 +2,9 @@ pub mod client; pub mod client_state; pub mod delta; pub mod destroy_queue; -pub mod idl_utils; +pub mod error; pub mod registry; pub mod resource; pub mod scenegraph; pub mod task; +pub mod queued_mutex; diff --git a/src/core/queued_mutex.rs b/src/core/queued_mutex.rs new file mode 100644 index 0000000..c1e96da --- /dev/null +++ b/src/core/queued_mutex.rs @@ -0,0 +1,119 @@ +use std::{ + ops::{Deref, DerefMut}, + sync::atomic::Ordering, +}; + +use parking_lot::{ + lock_api::{MutexGuard, RwLockReadGuard}, + Mutex, RawMutex, RawRwLock, RwLock, +}; +use portable_atomic::AtomicU8; + +pub struct QueuedMutex { + mutable: Mutex>, + readers: AtomicU8, + inner: RwLock, +} + +impl Default for QueuedMutex { + fn default() -> Self { + Self::new(T::default()) + } +} + +impl QueuedMutex { + pub const fn new(value: T) -> QueuedMutex { + Self { + mutable: Mutex::new(None), + readers: AtomicU8::new(0), + inner: RwLock::new(value), + } + } + pub fn lock(&self) -> QueuedMutexLockGuard<'_, T> { + let mut guard = self.mutable.lock(); + if guard.is_none() { + guard.replace(self.inner.read().clone()); + } + QueuedMutexLockGuard { mutex: self, guard } + } + pub fn read_now(&self) -> QueuedMutexReadGuard<'_, T> { + let guard = self.inner.read(); + self.readers.add(1, Ordering::Relaxed); + QueuedMutexReadGuard { + mutex: self, + guard: Some(guard), + } + } +} + +pub struct QueuedMutexLockGuard<'a, T: Clone> { + mutex: &'a QueuedMutex, + guard: MutexGuard<'a, RawMutex, Option>, +} +impl Deref for QueuedMutexLockGuard<'_, T> { + type Target = T; + + fn deref(&self) -> &Self::Target { + match self.guard.as_ref() { + Some(v) => v, + None => unreachable!(), + } + } +} +impl DerefMut for QueuedMutexLockGuard<'_, T> { + fn deref_mut(&mut self) -> &mut Self::Target { + match self.guard.as_mut() { + Some(v) => v, + None => unreachable!(), + } + } +} + +impl Drop for QueuedMutexLockGuard<'_, T> { + fn drop(&mut self) { + if self.mutex.readers.load(Ordering::Relaxed) != 0 { + return; + } + let mut write_lock = self.mutex.inner.write(); + *write_lock = match self.guard.take() { + Some(v) => v, + None => unreachable!(), + } + } +} + +pub struct QueuedMutexReadGuard<'a, T: Clone> { + mutex: &'a QueuedMutex, + guard: Option>, +} + +impl Deref for QueuedMutexReadGuard<'_, T> { + type Target = T; + + fn deref(&self) -> &Self::Target { + match self.guard.as_ref() { + Some(v) => v, + None => unreachable!(), + } + } +} + +impl Drop for QueuedMutexReadGuard<'_, T> { + fn drop(&mut self) { + drop(self.guard.take()); + if self + .mutex + .readers + .fetch_sub(1, Ordering::Relaxed) + .wrapping_sub(1) + != 0 + { + return; + } + + let mut write_lock = self.mutex.inner.write(); + if let Some(v) = self.mutex.mutable.lock().take() { + *write_lock = v + } + } +} diff --git a/src/core/scenegraph.rs b/src/core/scenegraph.rs index 55c1d79..dd33ac0 100644 --- a/src/core/scenegraph.rs +++ b/src/core/scenegraph.rs @@ -1,7 +1,8 @@ +use crate::core::error::Result; use crate::nodes::alias::get_original; use crate::nodes::Node; +use crate::TOKIO; use crate::{core::client::Client, nodes::Message}; -use color_eyre::eyre::Result; use once_cell::sync::OnceCell; use parking_lot::Mutex; use rustc_hash::FxHashMap; @@ -15,6 +16,8 @@ use std::sync::{Arc, Weak}; use tokio::sync::oneshot; use tracing::{debug, debug_span}; +stardust_xr_server_codegen::codegen_id_to_name_functions!(); + #[derive(Default)] pub struct Scenegraph { pub(super) client: OnceCell>, @@ -59,26 +62,26 @@ impl MethodResponseSender { // ) { // let _ = self.0.send(map_method_return(result)); // } - pub fn wrap_sync color_eyre::eyre::Result>(self, f: F) { - self.send(f().map_err(|e| ScenegraphError::MethodError { + pub fn wrap_sync crate::core::error::Result>(self, f: F) { + self.send(f().map_err(|e| ScenegraphError::MemberError { error: e.to_string(), })) } pub fn wrap_async( self, - f: impl Future)>> + Send + 'static, + f: impl Future)>> + Send + 'static, ) { - tokio::task::spawn(async move { self.0.send(map_method_return(f.await)) }); + TOKIO.spawn(async move { self.0.send(map_method_return(f.await)) }); } } fn map_method_return( - result: color_eyre::eyre::Result<(T, Vec)>, + result: Result<(T, Vec)>, ) -> Result<(Vec, Vec), ScenegraphError> { - let (value, fds) = result.map_err(|e| ScenegraphError::MethodError { + let (value, fds) = result.map_err(|e| ScenegraphError::MemberError { error: e.to_string(), })?; - let serialized_value = serialize(value).map_err(|e| ScenegraphError::MethodError { + let serialized_value = serialize(value).map_err(|e| ScenegraphError::MemberError { error: format!("Internal: Serialization failed: {e}"), })?; Ok((serialized_value, fds)) @@ -86,19 +89,29 @@ fn map_method_return( impl scenegraph::Scenegraph for Scenegraph { fn send_signal( &self, - node: u64, + node_id: u64, + aspect_id: u64, method: u64, data: &[u8], fds: Vec, ) -> Result<(), ScenegraphError> { let Some(client) = self.get_client() else { - return Err(ScenegraphError::SignalNotFound); + return Err(ScenegraphError::NodeNotFound); }; - debug_span!("Handle signal", node, method).in_scope(|| { - self.get_node(node) + debug_span!( + "Handle signal", + aspect_id, + aspect_name = aspect_id_to_name(aspect_id), + node_id, + method, + signal_name = signal_id_to_name(method) + ) + .in_scope(|| { + self.get_node(node_id) .ok_or(ScenegraphError::NodeNotFound)? .send_local_signal( client, + aspect_id, method, Message { data: data.to_vec(), @@ -109,23 +122,32 @@ impl scenegraph::Scenegraph for Scenegraph { } fn execute_method( &self, - node: u64, + node_id: u64, + aspect_id: u64, method: u64, data: &[u8], fds: Vec, response: oneshot::Sender, Vec), ScenegraphError>>, ) { let Some(client) = self.get_client() else { - let _ = response.send(Err(ScenegraphError::MethodNotFound)); + let _ = response.send(Err(ScenegraphError::NodeNotFound)); return; }; - debug!(node, method, "Handle method"); - let Some(node) = self.get_node(node) else { + debug!( + aspect_id, + aspect_name = aspect_id_to_name(aspect_id), + node_id, + method, + method_name = method_id_to_name(method), + "Handle method" + ); + let Some(node) = self.get_node(node_id) else { let _ = response.send(Err(ScenegraphError::NodeNotFound)); return; }; node.execute_local_method( client, + aspect_id, method, Message { data: data.to_vec(), diff --git a/src/core/task.rs b/src/core/task.rs index 43bffd8..bb8941c 100644 --- a/src/core/task.rs +++ b/src/core/task.rs @@ -2,6 +2,8 @@ use color_eyre::eyre::Result; use std::future::Future; use tokio::task::JoinHandle; +use crate::TOKIO; + #[allow(unused_variables)] pub fn new< F: FnOnce() -> S, @@ -13,7 +15,7 @@ pub fn new< async_future: A, ) -> Result> { #[cfg(not(feature = "profile_tokio"))] - let result = Ok(tokio::task::spawn(async_future)); + let result = Ok(TOKIO.spawn(async_future)); #[cfg(feature = "profile_tokio")] let result = tokio::task::Builder::new() .name(name_fn().as_ref()) diff --git a/src/main.rs b/src/main.rs index 43679c2..21eb8e0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,41 +1,87 @@ #![allow(clippy::empty_docs)] +pub mod bevy_plugin; mod core; mod nodes; mod objects; +pub mod oxr_render_plugin; mod session; #[cfg(feature = "wayland")] mod wayland; use crate::core::destroy_queue; -use crate::nodes::items::camera; -use crate::nodes::{audio, drawable, input}; +// use crate::nodes::items::camera; +use crate::nodes::input; +use bevy::a11y::AccessibilityPlugin; +use bevy::app::{ + App, AppExit, PluginGroup, PostUpdate, ScheduleRunnerPlugin, Startup, + TerminalCtrlCHandlerPlugin, Update, +}; +use bevy::asset::{load_internal_binary_asset, AssetApp as _, AssetPlugin, AssetServer, Handle}; +use bevy::audio::AudioPlugin; +use bevy::color::Color; +use bevy::core_pipeline::{CorePipelinePlugin, Skybox}; +use bevy::gizmos::GizmoPlugin; +use bevy::gltf::GltfPlugin; +use bevy::image::Image; +use bevy::input::InputPlugin; +use bevy::pbr::PbrPlugin; +use bevy::prelude::{ + on_event, Camera3d, ClearColor, Commands, Entity, EventReader, HierarchyPlugin, ImagePlugin, + IntoSystemConfigs, Local, Query, Res, ResMut, Resource, TransformPlugin, With, World, +}; +use bevy::render::pipelined_rendering::PipelinedRenderingPlugin; +use bevy::render::RenderPlugin; +use bevy::scene::ScenePlugin; +use bevy::text::{Font, FontLoader}; +use bevy::time::Time; +use bevy::window::WindowPlugin; +use bevy::winit::{WakeUp, WinitPlugin}; +use bevy::MinimalPlugins; +use bevy_mod_meshtext::MeshTextPlugin; +use bevy_mod_openxr::action_set_syncing::{OxrActionSyncingPlugin, OxrSyncActionSet}; +use bevy_mod_openxr::exts::OxrExtensions; +use bevy_mod_openxr::features::overlay::{OxrOverlaySessionEvent, OxrOverlaySettings}; +use bevy_mod_openxr::init::{should_run_frame_loop, OxrInitPlugin}; +use bevy_mod_openxr::render::{update_cameras, OxrRenderPlugin}; +use bevy_mod_openxr::resources::{OxrFrameState, OxrFrameWaiter, OxrGraphicsInfo}; +use bevy_mod_openxr::session::OxrSession; +use bevy_mod_openxr::spaces::OxrSpaceExt; +use bevy_mod_openxr::types::{AppInfo, Version}; +use bevy_mod_openxr::{add_xr_plugins, openxr_session_running}; +use bevy_mod_xr::session::{XrFirst, XrPreDestroySession, XrSessionCreated}; +use bevy_mod_xr::spaces::XrPrimaryReferenceSpace; +use bevy_plugin::{DbusConnection, DummyPbrPlugin, InputUpdate, StardustBevyPlugin, StardustFirst}; +use bevy_sk::skytext::SphericalHarmonicsPlugin; use clap::Parser; use core::client::Client; use core::task; use directories::ProjectDirs; +use nodes::audio::StardustSoundPlugin; +use nodes::drawable::lines::BevyLinesPlugin; +use nodes::drawable::model::StardustModelPlugin; +use nodes::drawable::text::StardustTextPlugin; +use objects::input::sk_controller::StardustControllerPlugin; +use objects::input::sk_hand::StardustHandPlugin; use objects::ServerObjects; use once_cell::sync::OnceCell; +use openxr::OverlaySessionCreateFlagsEXTX; +use oxr_render_plugin::StardustOxrRenderPlugin; use session::{launch_start, save_session}; +use stardust_xr::schemas::dbus::object_registry::ObjectRegistry; use stardust_xr::server; +use std::ops::Deref; use std::path::PathBuf; use std::sync::Arc; -use std::time::Duration; -use stereokit_rust::material::Material; -use stereokit_rust::shader::Shader; -use stereokit_rust::sk::{sk_quit, AppMode, DepthMode, OriginMode, QuitReason, SkSettings}; -use stereokit_rust::system::{LogLevel, Renderer}; -use stereokit_rust::tex::{SHCubemap, Tex, TexFormat, TexType}; -use stereokit_rust::ui::Ui; -use stereokit_rust::util::{Color128, Time}; use tokio::net::UnixListener; use tokio::sync::Notify; -use tracing::metadata::LevelFilter; -use tracing::{debug_span, error, info}; +use tracing::{debug_span, error, info, warn}; use tracing_subscriber::{fmt, prelude::*, EnvFilter}; use zbus::fdo::ObjectManager; use zbus::Connection; +pub type DefaultMaterial = bevy_sk::vr_materials::PbrMaterial; + #[derive(Debug, Clone, Parser)] #[clap(author, version, about, long_about = None)] struct CliArgs { @@ -43,6 +89,10 @@ struct CliArgs { #[clap(short, long, action)] flatscreen: bool, + /// Force Pipelined Rending, improving fps at the cost of latency + #[clap(short, long, action)] + pipelined_rendering: bool, + /// If monado insists on emulating them, set this flag...we want the raw input #[clap(long)] disable_controllers: bool, @@ -68,11 +118,26 @@ struct CliArgs { } static STARDUST_INSTANCE: OnceCell = OnceCell::new(); +static TOKIO: RuntimeWrapper = RuntimeWrapper(OnceCell::new()); -// #[tokio::main] -#[tokio::main(flavor = "current_thread")] -async fn main() { - color_eyre::install().unwrap(); +struct RuntimeWrapper(OnceCell); +impl Deref for RuntimeWrapper { + type Target = tokio::runtime::Runtime; + + fn deref(&self) -> &Self::Target { + self.0.get().unwrap() + } +} + +fn main() -> color_eyre::Result { + let runtime = tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build()?; + TOKIO.0.set(runtime).unwrap(); + TOKIO.block_on(setup()) +} +async fn setup() -> color_eyre::Result { + color_eyre::install()?; let registry = tracing_subscriber::registry(); @@ -137,13 +202,26 @@ async fn main() { .await .expect("Couldn't add the object manager"); + let object_registry = ObjectRegistry::new(&dbus_connection).await.expect( + "Couldn't make the object registry to find all objects with given interfaces in d-bus", + ); + let sk_ready_notifier = Arc::new(Notify::new()); let stereokit_loop = tokio::task::spawn_blocking({ let sk_ready_notifier = sk_ready_notifier.clone(); let project_dirs = project_dirs.clone(); let cli_args = cli_args.clone(); let dbus_connection = dbus_connection.clone(); - move || stereokit_loop(sk_ready_notifier, project_dirs, cli_args, dbus_connection) + move || { + bevy_loop( + sk_ready_notifier, + project_dirs, + cli_args, + dbus_connection, + object_registry, + false, + ) + } }); sk_ready_notifier.notified().await; let mut startup_children = project_dirs @@ -151,10 +229,7 @@ async fn main() { .map(|project_dirs| launch_start(&cli_args, project_dirs)) .unwrap_or_default(); - tokio::select! { - _ = stereokit_loop => (), - _ = tokio::signal::ctrl_c() => unsafe {sk_quit(QuitReason::SystemClose)}, - } + let exit = stereokit_loop.await?; info!("Stopping..."); if let Some(project_dirs) = project_dirs { save_session(&project_dirs).await; @@ -164,63 +239,210 @@ async fn main() { } info!("Cleanly shut down Stardust"); + Ok(exit) } -fn stereokit_loop( +fn bevy_loop( sk_ready_notifier: Arc, project_dirs: Option, args: CliArgs, dbus_connection: Connection, -) { - let sk = SkSettings::default() - .app_name("Stardust XR") - .mode(if args.flatscreen { - AppMode::Simulator - } else { - AppMode::XR - }) - .depth_mode(DepthMode::D32) - .log_filter(match EnvFilter::from_default_env().max_level_hint() { - Some(LevelFilter::ERROR) => LogLevel::Error, - Some(LevelFilter::WARN) => LogLevel::Warning, - Some(LevelFilter::INFO) => LogLevel::Inform, - Some(LevelFilter::DEBUG) => LogLevel::Diagnostic, - Some(LevelFilter::TRACE) => LogLevel::Diagnostic, - Some(LevelFilter::OFF) => LogLevel::None, - None => LogLevel::Warning, - }) - .overlay_app(args.overlay_priority.is_some()) - .overlay_priority(args.overlay_priority.unwrap_or(u32::MAX)) - .disable_desktop_input_window(true) - .origin(OriginMode::Local) - .init() - .expect("StereoKit failed to initialize"); - info!("Init StereoKit"); - - Renderer::multisample(0); - Material::default().shader(Shader::pbr_clip()); - Ui::enable_far_interact(false); - - // Skytex/light stuff - { - if let Some(sky) = project_dirs - .as_ref() - .map(|dirs| dirs.config_dir().join("skytex.hdr")) - .filter(|f| f.exists()) - .and_then(|p| SHCubemap::from_cubemap_equirectangular(p, true, 100).ok()) - { - sky.render_as_sky(); - } else { - Renderer::skytex(Tex::gen_color( - Color128::BLACK, - 1, - 1, - TexType::Cubemap, - TexFormat::RGBA32, - )); + object_registry: ObjectRegistry, + headless: bool, +) -> AppExit { + let mut bevy_app = App::new(); + // let base = (DefaultPlugins) + // .build() + // .disable::() + // .disable::() + // .set({ + // let mut plugin = WinitPlugin::::default(); + // plugin.run_on_any_thread = true; + // plugin + // }); + let mut base = (MinimalPlugins) + .build() + .disable::() + .add(TransformPlugin) + .add(HierarchyPlugin) + .add(InputPlugin) + .add(AccessibilityPlugin); + base = match headless { + true => { + base.add(ScheduleRunnerPlugin { + // In OpenXR framepacing we trust (else this will eat all of the cpu) + run_mode: bevy::app::RunMode::Loop { wait: None }, + }) } + false => base.add(WindowPlugin::default()).add({ + let mut plugin = WinitPlugin::::default(); + plugin.run_on_any_thread = true; + plugin + }), + }; + base = base + .add(TerminalCtrlCHandlerPlugin) + // might want to modify this in the future? + .add(AssetPlugin::default()) + // will be replaced by bevy_mod_openxr when using OpenXR + .add(RenderPlugin::default()) + .add(ImagePlugin::default()) + .add(CorePipelinePlugin) + // very unsure what is needed here + .add(PbrPlugin { + // hoping that there is very little overdraw in stardust + prepass_enabled: false, + add_default_deferred_lighting_plugin: false, + use_gpu_instance_buffer_builder: false, + }) + // .add(DummyPbrPlugin) + .add(ScenePlugin) + .add(GltfPlugin::default()) + .add(AudioPlugin::default()) + .add(GizmoPlugin) + .add(bevy_sk::vr_materials::SkMaterialPlugin { + replace_standard_material: true, + }) + .add(bevy_sk::hand::HandPlugin) + .add(SphericalHarmonicsPlugin); + + if args.pipelined_rendering { + base = base.add(PipelinedRenderingPlugin); } + if args.flatscreen { + bevy_app.add_plugins(base); + } else { + bevy_app.add_plugins( + add_xr_plugins(base) + .set(OxrInitPlugin { + app_info: AppInfo { + name: "Stardust XR".into(), + version: Version(0, 44, 1), + }, + exts: { + let mut exts = OxrExtensions::default(); + exts.enable_hand_tracking(); + if args.overlay_priority.is_some() { + exts.enable_extx_overlay(); + } + exts + }, + blend_modes: Some(vec![ + openxr::EnvironmentBlendMode::ALPHA_BLEND, + openxr::EnvironmentBlendMode::OPAQUE, + ]), + synchronous_pipeline_compilation: false, + ..Default::default() + }) + .disable::() + .disable::() + .add_after::(StardustOxrRenderPlugin), + ); + if let Some(priority) = args.overlay_priority { + bevy_app.insert_resource(OxrOverlaySettings { + session_layer_placement: priority, + flags: OverlaySessionCreateFlagsEXTX::EMPTY, + }); + } + bevy_app.add_event::(); + bevy_app.add_plugins(bevy_xr_utils::hand_gizmos::HandGizmosPlugin); + } + bevy_app + .init_asset::() + .init_asset_loader::(); + bevy_app.add_plugins(MeshTextPlugin); + bevy_app.add_plugins(StardustBevyPlugin); + bevy_app.add_plugins(( + BevyLinesPlugin, + StardustModelPlugin, + StardustHandPlugin, + StardustTextPlugin, + StardustSoundPlugin, + StardustControllerPlugin, + )); + load_internal_binary_asset!( + bevy_app, + Handle::default(), + "nodes/drawable/assets/FiraMono-subset.ttf", + |bytes: &[u8], _path: String| { Font::try_from_bytes(bytes.to_vec()).unwrap() } + ); + #[derive(Resource)] + struct SkyTexture(Handle); + // Skytex/light stuff + bevy_app.add_systems( + Startup, + move |assests: Res, mut cmds: Commands| { + if let Some(sky) = project_dirs + .as_ref() + .map(|dirs| dirs.config_dir().join("skytex.hdr")) + .filter(|f| f.exists()) + .map(|p| assests.load(p)) + { + cmds.insert_resource(SkyTexture(sky)); + } + }, + ); + #[derive(Resource)] + struct RenderBackground(bool); + fn update_background( + graphics_info: Res, + mut overlay_events: EventReader, + mut last_hidden: Local, + cams: Query>, + mut cmds: Commands, + ) { + let env_hidden = graphics_info.blend_mode != openxr::EnvironmentBlendMode::OPAQUE + && overlay_events + .read() + .last() + .map( + |OxrOverlaySessionEvent::MainSessionVisibilityChanged { visible, flags: _ }| { + *visible + }, + ) + .unwrap_or(true); + if env_hidden && !*last_hidden { + cams.iter().for_each(|e| { + cmds.entity(e).remove::(); + }); + let _span = debug_span!("spawn"); + cmds.insert_resource(ClearColor(Color::NONE)); + } + *last_hidden = env_hidden; + } + bevy_app.add_systems(XrSessionCreated, update_background); + bevy_app.add_systems( + PostUpdate, + (|mut objects: ResMut, + ref_space: Res, + session: Res| { + objects + .ref_space + .replace(unsafe { ref_space.as_openxr_space(&session) }); + objects.view_space.replace( + session + .deref() + .deref() + .create_reference_space( + openxr::ReferenceSpaceType::VIEW, + openxr::Posef::IDENTITY, + ) + .unwrap(), + ); + }) + .run_if(on_event::), + ); + bevy_app.add_systems(XrPreDestroySession, |mut objetcs: ResMut| { + objetcs.ref_space = None; + objetcs.view_space = None; + }); + bevy_app.add_systems( + Update, + update_background.run_if(on_event::), + ); + bevy_app.insert_resource(DbusConnection(dbus_connection.clone())); + #[cfg(feature = "wayland")] let mut wayland = wayland::Wayland::new().expect("Could not initialize wayland"); #[cfg(feature = "wayland")] @@ -228,62 +450,84 @@ fn stereokit_loop( sk_ready_notifier.notify_waiters(); info!("Stardust ready!"); - let mut objects = ServerObjects::new( - dbus_connection.clone(), - &sk, - args.disable_controllers, - args.disable_hands, - ); + let objects = ServerObjects::new(dbus_connection.clone()); + fn sync_sets(session: Res, mut events: EventReader) { + let sets = events + .read() + .map(|v| &v.0) + .map(openxr::ActiveActionSet::new) + .collect::>(); + if sets.is_empty() { + return; + } - let mut last_frame_delta = Duration::ZERO; - let mut sleep_duration = Duration::ZERO; - while let Some(token) = sk.step() { - let _span = debug_span!("StereoKit step"); + if let Err(err) = session.sync_actions(&sets) { + warn!("error while syncing actionsets: {}", err.to_string()); + } + } + + bevy_app.insert_resource(objects); + + fn bevy_step(world: &mut World) { + let _span = debug_span!("Bevy step"); let _span = _span.enter(); - - camera::update(token); + // camera::update(token); #[cfg(feature = "wayland")] wayland.frame_event(); destroy_queue::clear(); - objects.update(&sk, token); + let time = world.get_resource_mut::().map(|mut s| { + let t = openxr::Time::from_nanos( + s.predicted_display_time.as_nanos() + s.predicted_display_period.as_nanos(), + ); + s.predicted_display_time = t; + t + }); + world.run_schedule(XrFirst); + if world + .run_system_cached(openxr_session_running) + .unwrap_or(true) + { + let _ = world.run_system_cached(sync_sets); + } + let thread = world + .run_system_cached(should_run_frame_loop) + .unwrap_or(true) + .then(|| world.remove_resource::()) + .flatten() + .map(|mut waiter| { + TOKIO.spawn_blocking(move || { + let _span = debug_span!("frame eeping").entered(); + let result = waiter.wait(); + (waiter, result) + }) + }); + world.run_schedule(InputUpdate); + debug_span!("update_objects").in_scope(|| { + let session = world.remove_resource::(); + let mut objects = world.remove_resource::().unwrap(); + objects.update(session.as_deref(), time); + world.insert_resource(objects); + if let Some(session) = session { + world.insert_resource(session); + } + }); input::process_input(); - nodes::root::Root::send_frame_events(Time::get_step_unscaled()); - adaptive_sleep( - &mut last_frame_delta, - &mut sleep_duration, - Duration::from_micros(250), - ); - - #[cfg(feature = "wayland")] - wayland.update(); - drawable::draw(token); - audio::update(); - } - - info!("Cleanly shut down StereoKit"); - #[cfg(feature = "wayland")] - drop(wayland); -} - -fn adaptive_sleep( - last_frame_delta: &mut Duration, - sleep_duration: &mut Duration, - sleep_duration_increase: Duration, -) { - let frame_delta = Duration::from_secs_f64(Time::get_step_unscaled()); - if *last_frame_delta < frame_delta { - if let Some(frame_delta_delta) = frame_delta.checked_sub(*last_frame_delta) { - if let Some(new_sleep_duration) = sleep_duration.checked_sub(frame_delta_delta) { - *sleep_duration = new_sleep_duration; + nodes::root::Root::send_frame_events(world.resource::