diff --git a/.cargo/config.toml b/.cargo/config.toml index 721ed55..4cc0f10 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,2 +1,5 @@ [build] rustflags = ["-Z", "threads=16"] + +[env] +JEMALLOC_SYS_WITH_MALLOC_CONF="zero:true,dirty_decay_ms:60000,junk:false,muzzy_decay_ms:60000,percpu_arena:percpu,retain:false,trust_madvise=true,dds:disabled,process_madvise_max_batch:100" # prof:true,prof_leak:true,lg_prof_sample:19,lg_prof_interval:30 diff --git a/.gitignore b/.gitignore index eb5a316..a6087fd 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ target +.external-store diff --git a/Cargo.lock b/Cargo.lock index c04dc24..1400365 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,29 +20,42 @@ [[package]] name = "accesskit" -version = "0.21.1" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf203f9d3bd8f29f98833d1fbef628df18f759248a547e7e01cfbf63cda36a99" +checksum = "d3b7f7f85a7e5f68090000ed7622545829afd484d210358702ae4cb97dd0c320" +dependencies = [ + "uuid", +] [[package]] name = "accesskit_consumer" -version = "0.31.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db81010a6895d8707f9072e6ce98070579b43b717193d2614014abd5cb17dd43" +checksum = "53cf47daed85312e763fbf85ceca136e0d7abc68e0a7e12abe11f48172bc3b10" dependencies = [ "accesskit", - "hashbrown 0.15.5", + "hashbrown 0.16.1", +] + +[[package]] +name = "accesskit_consumer" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d10a236f96f87d70732e44520046785431ef01d5bcd6b041317bfadd2f88245" +dependencies = [ + "accesskit", + "hashbrown 0.16.1", ] [[package]] name = "accesskit_macos" -version = "0.22.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0089e5c0ac0ca281e13ea374773898d9354cc28d15af9f0f7394d44a495b575" +checksum = "ce02dc63b43f0c9296af9ac946312a2dc8814427d7a64d2d600971dac55b6076" dependencies = [ "accesskit", - "accesskit_consumer", - "hashbrown 0.15.5", + "accesskit_consumer 0.38.0", + "hashbrown 0.16.1", "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", @@ -50,23 +63,23 @@ [[package]] name = "accesskit_windows" -version = "0.29.2" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d63dd5041e49c363d83f5419a896ecb074d309c414036f616dc0b04faca971" +checksum = "eff7009f1a532e917d66970a1e80c965140c6cfbbabbdde3d64e5431e6c78e21" dependencies = [ "accesskit", - "accesskit_consumer", - "hashbrown 0.15.5", + "accesskit_consumer 0.35.0", + "hashbrown 0.16.1", "static_assertions", - "windows 0.61.3", - "windows-core 0.61.2", + "windows", + "windows-core", ] [[package]] name = "accesskit_winit" -version = "0.29.2" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cfabe59d0eaca7412bfb1f70198dd31e3b0496fee7e15b066f9c36a1a140a0" +checksum = "1fe9a94394896352cc4660ca2288bd4ef883d83238853c038b44070c8f134313" dependencies = [ "accesskit", "accesskit_macos", @@ -104,22 +117,28 @@ ] [[package]] -name = "alsa" -version = "0.9.1" +name = "allocator-api2" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alsa" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812947049edcd670a82cd5c73c3661d2e58468577ba8489de58e1a73c04cbd5d" dependencies = [ "alsa-sys", - "bitflags 2.11.1", + "bitflags 2.13.1", "cfg-if", "libc", ] [[package]] name = "alsa-sys" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +checksum = "ad7569085a265dd3f607ebecce7458eaab2132a84393534c95b18dcbc3f31e04" dependencies = [ "libc", "pkg-config", @@ -132,16 +151,15 @@ checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.11.1", + "bitflags 2.13.1", "cc", "jni 0.22.4", "libc", "log", - "ndk 0.9.0", + "ndk", "ndk-context", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", - "simd_cesu8", "thiserror 2.0.18", ] @@ -359,18 +377,18 @@ [[package]] name = "bevy" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd310426290cec560221f9750c2f4484be4a8eeea7de3483c423329b465c40e" +checksum = "950238d3049d81006a6fd6b898a34cfc01bb5462a7668795a54d640aed19fd0a" dependencies = [ "bevy_internal", ] [[package]] name = "bevy_a11y" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887b25c84f384ffe3278a17cf0e4b405eaa3c8fbc3db24d05d560a11780676d" +checksum = "e86f2cb45b000a9d121a5a7606f9af4a49e72b8b6a3885dc2acac2f0897a04f1" dependencies = [ "accesskit", "bevy_app", @@ -381,18 +399,18 @@ [[package]] name = "bevy_android" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c58de772ac1148884112e8a456c4f127a94b95a0e42ab5b160b7a11895a241" +checksum = "e6e5e2a949be318bf7184eb084622892afcc1e8b2af44973ac53ab53201756e0" dependencies = [ "android-activity", ] [[package]] name = "bevy_animation" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be5bf5b285f0d3fab983b4505e62e195e06930a29007ffc95bdabde834e163a2" +checksum = "7da2fcd94cc32ba1c875c62e88506c0ba4775555a413e34cd172ea95fa26098e" dependencies = [ "bevy_animation_macros", "bevy_app", @@ -423,9 +441,9 @@ [[package]] name = "bevy_animation_macros" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cf35516d0e7ac9ec25df533be1bf8cbaa20596a8e65f36838a3f7803a267d6d" +checksum = "4fa3d816d7788e27da936b9c7ec27f9828906d53cb1d06e26c58cac5c5ee799f" dependencies = [ "bevy_macro_utils", "quote", @@ -434,9 +452,9 @@ [[package]] name = "bevy_anti_alias" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726cc494eb7d6a84ce6291c23636fd451fa4846604dc059fa93febca4e60a928" +checksum = "815414ea2e11afe1f2396d89279cfa0986907ef3ec673ec936d9fa695b2bfbf9" dependencies = [ "bevy_app", "bevy_asset", @@ -456,9 +474,9 @@ [[package]] name = "bevy_app" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def9f41aa5bf9b9dec8beda307a332798609cffb9d44f71005e0cfb45164f2f6" +checksum = "671ae6f3a8d84f9ed696c531a138558596e041231a8414b6efeafa8469e841f9" dependencies = [ "bevy_derive", "bevy_ecs", @@ -466,7 +484,6 @@ "bevy_reflect", "bevy_tasks", "bevy_utils", - "cfg-if", "console_error_panic_hook", "ctrlc", "downcast-rs 2.0.2", @@ -479,9 +496,9 @@ [[package]] name = "bevy_asset" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f86fed15972b9fb1a3f7b092cf0390e67131caaedab15a2707c043e3a3c886" +checksum = "43a05907de6a362d2c609a7a1d1b4dca3b58b768f746b719ca1a3c7dfa87d391" dependencies = [ "async-broadcast", "async-channel", @@ -498,7 +515,7 @@ "bevy_reflect", "bevy_tasks", "bevy_utils", - "bitflags 2.11.1", + "bitflags 2.13.1", "blake3", "crossbeam-channel", "derive_more", @@ -522,9 +539,9 @@ [[package]] name = "bevy_asset_macros" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cb8d948365b06561b43b7d709282e62a6abb756baac5d8e295206d5e156168" +checksum = "c9444998cc37b51dfd1572c23a501865733ea65619a7d88b47aa654ae2290a4f" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -534,9 +551,9 @@ [[package]] name = "bevy_audio" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d68da32468ce7f4bb2863b71326acfaaa88e9aef8da8306257cd487d40cede4" +checksum = "06af3bd91de885f2a5c024569779a7fb43349df611d92f7b795c66c8797378db" dependencies = [ "bevy_app", "bevy_asset", @@ -544,17 +561,15 @@ "bevy_math", "bevy_reflect", "bevy_transform", - "coreaudio-sys", - "cpal", "rodio", "tracing", ] [[package]] name = "bevy_camera" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ed9eed054e14341852236d06a7244597b1ace39ff9ae023fbd188ffde88619" +checksum = "20105c3e77c2fb391bf3ded3a473d60e4058b837c9bf4e3412225833e524c75a" dependencies = [ "bevy_app", "bevy_asset", @@ -577,10 +592,25 @@ ] [[package]] -name = "bevy_color" -version = "0.18.1" +name = "bevy_clipboard" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb41e8310a85811d14a4e75cfc2d6c07ac70661d6a4883509fc960f622970a8" +checksum = "6dc5fb913f25c5a16a2a1aa2942ba3f1365a6d0f2db3c0ea5bc0be01f85dca5d" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_log", + "bevy_platform", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_color" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e2dfc0091be6eb62fec9158b2d3e6f21b002be7bdb42dd3b8322e949c8426b0" dependencies = [ "bevy_math", "bevy_reflect", @@ -594,9 +624,9 @@ [[package]] name = "bevy_core_pipeline" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0810e85c2436e50c67448d48a83bf0bb1b5849899619ae2c7ea817221e9172" +checksum = "885d640bbff6c4fa3beadbb043d0d1ae53b2fda864da18a2bf2670fb90428865" dependencies = [ "bevy_app", "bevy_asset", @@ -606,6 +636,8 @@ "bevy_diagnostic", "bevy_ecs", "bevy_image", + "bevy_light", + "bevy_log", "bevy_math", "bevy_platform", "bevy_reflect", @@ -614,19 +646,16 @@ "bevy_transform", "bevy_utils", "bevy_window", - "bitflags 2.11.1", + "bitflags 2.13.1", + "indexmap", "nonmax", - "radsort", - "smallvec", - "thiserror 2.0.18", - "tracing", ] [[package]] name = "bevy_derive" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "318ee0532c3da93749859d18f89a889c638fbc56aabac4d866583df7b951d103" +checksum = "293df2b2f7ed65ef2ce02b2e7359faac1a9a92a8cc96c182c9de77eb06049ae0" dependencies = [ "bevy_macro_utils", "quote", @@ -635,19 +664,22 @@ [[package]] name = "bevy_dev_tools" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f1464a3f5ef5c23d917987714ee89881f9f791e9ff97ecf6600ee846b9569e" +checksum = "db815000affd21545a6d6986f180a66393aee8c84330843e854d376c8537b10f" dependencies = [ "bevy_app", "bevy_asset", "bevy_camera", "bevy_color", + "bevy_core_pipeline", "bevy_diagnostic", "bevy_ecs", "bevy_image", "bevy_input", + "bevy_log", "bevy_math", + "bevy_pbr", "bevy_picking", "bevy_reflect", "bevy_render", @@ -664,9 +696,9 @@ [[package]] name = "bevy_diagnostic" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8543a0f7afd56d3499ba80ffab6ef0bad12f93c2d2ca9aa7b1f1b8816c3980" +checksum = "a73e11555051f37c3e0e9ef7775e77108f2482310242996fb5bb6ef8b685b78e" dependencies = [ "atomic-waker", "bevy_app", @@ -682,9 +714,9 @@ [[package]] name = "bevy_ecs" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9cf7a3ee41342dd7b5a5d82e200d0e8efb933169247fce853b4ad633d51e87d" +checksum = "4654b9b3535fa7813d2878a50e1b5ad80a361dc1c913b96ded57667f65d70a01" dependencies = [ "arrayvec", "bevy_ecs_macros", @@ -693,7 +725,7 @@ "bevy_reflect", "bevy_tasks", "bevy_utils", - "bitflags 2.11.1", + "bitflags 2.13.1", "bumpalo", "concurrent-queue", "derive_more", @@ -709,10 +741,10 @@ ] [[package]] -name = "bevy_ecs_macros" -version = "0.18.1" +name = "bevy_ecs_macro_logic" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908baf585e2ea16bd53ef0da57b69580478af0059d2dbdb4369991ac9794b618" +checksum = "ee0b98a74141ce8dce4654c60020ebbaefab32646f42af6bbae55f282ae65ff7" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -721,10 +753,23 @@ ] [[package]] -name = "bevy_egui" -version = "0.39.1" +name = "bevy_ecs_macros" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d0a7e4806f3f242326d2c6157531c36d710f3bf320ebc0a1678e44635ed0eac" +checksum = "4dc958a194d226d618404e0fea99a3c8b4146207a00a3ba07fa712bf71607240" +dependencies = [ + "bevy_ecs_macro_logic", + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_egui" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "903546b33a4c3ff4c8d3a6221280fa4566ee38e55dec9eecaa52de745c204c36" dependencies = [ "arboard", "bevy_app", @@ -754,10 +799,11 @@ "crossbeam-channel", "egui", "encase", - "getrandom 0.3.4", + "getrandom 0.4.2", "image", "itertools 0.14.0", "js-sys", + "smithay-clipboard", "thread_local", "wasm-bindgen", "wasm-bindgen-futures", @@ -769,9 +815,9 @@ [[package]] name = "bevy_encase_derive" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fee46eeddcbc00a805ae00ffa973f224671fc5cf0fe1a796963804faeade90" +checksum = "14dc5bf9e6cb46c4401a66625b5f7eb9654a7f3c8586423c428b79586a1c55cd" dependencies = [ "bevy_macro_utils", "encase_derive_impl", @@ -779,9 +825,9 @@ [[package]] name = "bevy_feathers" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cb29be8f8443c5cc44e1c4710bbe02877e73703c60228ca043f20529a5496c6" +checksum = "e744e047f9328a9c072982569fabbbc837db0474fd902473b5f438f8688c30b6" dependencies = [ "accesskit", "bevy_a11y", @@ -791,6 +837,7 @@ "bevy_color", "bevy_derive", "bevy_ecs", + "bevy_input", "bevy_input_focus", "bevy_log", "bevy_math", @@ -798,6 +845,7 @@ "bevy_platform", "bevy_reflect", "bevy_render", + "bevy_scene", "bevy_shader", "bevy_text", "bevy_ui", @@ -809,9 +857,9 @@ [[package]] name = "bevy_gilrs" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611827ab0ce43b88c0a695e6603901b5f34687efecaf526c861456c9d8e6fedb" +checksum = "7998fe83c89d527efa83c85c574a17f7bb6e34881d638ecb7f706d9d79e82f3c" dependencies = [ "bevy_app", "bevy_ecs", @@ -825,9 +873,9 @@ [[package]] name = "bevy_gizmos" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aaff0dd5f405c83d290c5cd591835f1ae8009894947ab19dadcb323062bd7e7" +checksum = "9c0cbd55cc33b6412777d60d8c24a96bee148c82a5731f35ac85b2df4a7cf957" dependencies = [ "bevy_app", "bevy_asset", @@ -835,19 +883,22 @@ "bevy_color", "bevy_ecs", "bevy_gizmos_macros", - "bevy_light", + "bevy_input", + "bevy_log", "bevy_math", + "bevy_mesh", "bevy_reflect", "bevy_time", "bevy_transform", "bevy_utils", + "bevy_window", ] [[package]] name = "bevy_gizmos_macros" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6960ea308d7e94adcac5c712553ff86614bba6b663511f3f3812f6bec028b51e" +checksum = "9903f2614f53bacacb92bef1e407afe3a27a4abddb500bfd479909c5d7b254df" dependencies = [ "bevy_macro_utils", "quote", @@ -856,20 +907,24 @@ [[package]] name = "bevy_gizmos_render" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a8d18c089102de4c5e9326023ad96ba618a6961029f8102a33640b966883237" +checksum = "dd569456c4b19bafa6d37c1bd9cc743fdadda3a2f23d79d2ceb0a088ea8d475f" dependencies = [ "bevy_app", "bevy_asset", "bevy_camera", + "bevy_color", "bevy_core_pipeline", "bevy_ecs", "bevy_gizmos", "bevy_image", + "bevy_log", + "bevy_material", "bevy_math", "bevy_mesh", "bevy_pbr", + "bevy_reflect", "bevy_render", "bevy_shader", "bevy_sprite_render", @@ -881,9 +936,9 @@ [[package]] name = "bevy_gltf" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f37fb52655d0439656ca0a1db027d46926e463c81d893d4b1639668e5d7f1c1" +checksum = "84e21ad83b7dc8d456491ea3d50057685d8c4cca8bc52a1b4a7161c86c369842" dependencies = [ "async-lock", "base64", @@ -895,15 +950,14 @@ "bevy_ecs", "bevy_image", "bevy_light", + "bevy_material", "bevy_math", "bevy_mesh", - "bevy_pbr", "bevy_platform", "bevy_reflect", - "bevy_render", - "bevy_scene", "bevy_tasks", "bevy_transform", + "bevy_world_serialization", "fixedbitset", "gltf", "itertools 0.14.0", @@ -913,13 +967,14 @@ "smallvec", "thiserror 2.0.18", "tracing", + "wgpu-types", ] [[package]] name = "bevy_image" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a71daf9b2afdd032c2b1122d1d501f99126218cb3e9983b3604ec381daa35f22" +checksum = "37bc41f69a0c6ade2e7961602517545b39ab8e42bc8c4a729bd24ffee3bcd904" dependencies = [ "bevy_app", "bevy_asset", @@ -929,10 +984,10 @@ "bevy_platform", "bevy_reflect", "bevy_utils", - "bitflags 2.11.1", + "bitflags 2.13.1", "bytemuck", "futures-lite", - "guillotiere", + "guillotiere 0.6.2", "half", "image", "ktx2", @@ -946,9 +1001,9 @@ [[package]] name = "bevy_input" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc8ffbd02df34dfc52faf420a5263985973765e228043adf542fd0d790a6b21" +checksum = "fd221cf0732f5bf06caf594bdb233361ac735d4d416cf5849757b64bf4e8472a" dependencies = [ "bevy_app", "bevy_ecs", @@ -963,9 +1018,9 @@ [[package]] name = "bevy_input_focus" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d48a5bceccb9157549a39ab3de4017f5368b65db6471605e9a3f1c19d91bbc" +checksum = "0e1a14f56c6e722048ec9dc20dbbc6f46b8037f61e319ea776829199278da166" dependencies = [ "bevy_app", "bevy_ecs", @@ -980,9 +1035,9 @@ [[package]] name = "bevy_internal" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a11df62e49897def470471551c02f13c6fb488e55dddb5ab7ef098132e07754" +checksum = "d52a85632a749f956f92b7b391c31ce1f229e57b06de879d1b60a3bb91e4e240" dependencies = [ "bevy_a11y", "bevy_android", @@ -992,6 +1047,7 @@ "bevy_asset", "bevy_audio", "bevy_camera", + "bevy_clipboard", "bevy_color", "bevy_core_pipeline", "bevy_derive", @@ -1008,6 +1064,7 @@ "bevy_input_focus", "bevy_light", "bevy_log", + "bevy_material", "bevy_math", "bevy_mesh", "bevy_pbr", @@ -1028,37 +1085,44 @@ "bevy_transform", "bevy_ui", "bevy_ui_render", + "bevy_ui_widgets", "bevy_utils", "bevy_window", "bevy_winit", + "bevy_world_serialization", ] [[package]] name = "bevy_light" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d9d2ac64390a9baacb3c0fa0f5456ac1553959d5a387874c102a09aab8b92cc" +checksum = "bd7b5009e9cc765c30b21daf2277ea4423cbd347b05280ea0943b50c5a80cd42" dependencies = [ "bevy_app", "bevy_asset", "bevy_camera", "bevy_color", "bevy_ecs", + "bevy_gizmos", "bevy_image", + "bevy_log", "bevy_math", "bevy_mesh", "bevy_platform", "bevy_reflect", "bevy_transform", "bevy_utils", + "half", + "smallvec", "tracing", + "wgpu-types", ] [[package]] name = "bevy_log" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2aac1187f83a1ab2eae887564f7fb14b4abb3fbe8b2267a6426663463923120" +checksum = "2017a5fe12ea230d00cfdca00c65c262924be26e0324f7e0033c64f8cc265888" dependencies = [ "android_log-sys", "bevy_app", @@ -1074,21 +1138,55 @@ [[package]] name = "bevy_macro_utils" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b147843b81a7ec548876ff97fa7bfdc646ef2567cb465566259237b39664438" +checksum = "746a19912c6dc1bbe79188778573e8a253d5832c696b2fcb95578c17b29ff7ba" dependencies = [ "proc-macro2", "quote", "syn", - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit", +] + +[[package]] +name = "bevy_material" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "423710403b4a4d8e9ee872c6ac8108787f2396422b582d15a660a40731ddfbf0" +dependencies = [ + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_material_macros", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_shader", + "bevy_utils", + "encase", + "smallvec", + "thiserror 2.0.18", + "tracing", + "variadics_please", + "wgpu-types", +] + +[[package]] +name = "bevy_material_macros" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6928e167592472f6ee900f80de199cc2dafd31d4f082a86e8d594b81b973e3d" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn", ] [[package]] name = "bevy_math" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e931fa969f89c83498b22c97432383afe90e90fd1a5e04fa07be8da4d3bcac84" +checksum = "d7c280440d2a5bc07ea393b5346b5712eec73ea30f0133097b8b13dade385beb" dependencies = [ "approx", "arrayvec", @@ -1106,23 +1204,26 @@ [[package]] name = "bevy_mesh" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "288f590c8173d4cca3cae5f2ba579accd5ed1a35dd3fab338f427eb39d55f05e" +checksum = "c59863e6f37ef0ba1f37021bce9dd940f9dc31d15e03f548cda5fd3e674f409e" dependencies = [ "bevy_app", "bevy_asset", "bevy_derive", "bevy_ecs", - "bevy_image", + "bevy_encase_derive", "bevy_math", "bevy_mikktspace", "bevy_platform", "bevy_reflect", "bevy_transform", - "bitflags 2.11.1", + "bitflags 2.13.1", "bytemuck", "derive_more", + "encase", + "glam", + "half", "hexasphere", "thiserror 2.0.18", "tracing", @@ -1131,16 +1232,17 @@ [[package]] name = "bevy_mikktspace" -version = "0.17.0-dev" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef8e4b7e61dfe7719bb03c884dc270cd46a82efb40f93e9933b990c5c190c59" +checksum = "bff34eb29ff4b8a8688bc7299f14fb6b597461ca80fec03ed7d22939ab33e48f" [[package]] name = "bevy_pbr" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ab6944ffc6fd71604c0fbca68cc3e2a3654edfcdbfd232f9d8b88e3d20fdc0" +checksum = "38ebc777de2d7f45888c68e8e04949bfb8a40aee62f700283fc340f525e67f52" dependencies = [ + "arrayvec", "bevy_app", "bevy_asset", "bevy_camera", @@ -1149,34 +1251,39 @@ "bevy_derive", "bevy_diagnostic", "bevy_ecs", + "bevy_gltf", "bevy_image", "bevy_light", "bevy_log", + "bevy_material", "bevy_math", "bevy_mesh", "bevy_platform", "bevy_reflect", "bevy_render", "bevy_shader", + "bevy_tasks", "bevy_transform", "bevy_utils", - "bitflags 2.11.1", + "bitflags 2.13.1", "bytemuck", "derive_more", "fixedbitset", + "indexmap", "nonmax", "offset-allocator", "smallvec", "static_assertions", "thiserror 2.0.18", "tracing", + "wgpu-types", ] [[package]] name = "bevy_picking" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7d524dbc8f2c9e73f7ab70c148c8f7886f3c24b8aa8c252a38ba68ed06cbf10" +checksum = "93468ac5937f76be3af763d496f01e899edf6d9c1a1d39a87ae4ce8eba36f78b" dependencies = [ "bevy_app", "bevy_asset", @@ -1198,13 +1305,14 @@ [[package]] name = "bevy_platform" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec6b36504169b644acd26a5469fd8d371aa6f1d73ee5c01b1b1181ae1cefbf9b" +checksum = "3120670bb2308980f723477c9d82476fcda31f08be9b256c3f0acdee82a65094" dependencies = [ "critical-section", "foldhash 0.2.0", "futures-channel", + "futures-lite", "hashbrown 0.16.1", "js-sys", "portable-atomic", @@ -1214,13 +1322,14 @@ "wasm-bindgen", "wasm-bindgen-futures", "web-time", + "windows-sys 0.61.2", ] [[package]] name = "bevy_post_process" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f77a4e894aea992e3d6938f1d5898a1cdbb87dba6eebfb95cb4038d0a2600e9" +checksum = "57379b51aa0f1b2066c956263e1f12686d22cf8939cf9644eebf2ee42d3dd460" dependencies = [ "bevy_app", "bevy_asset", @@ -1235,12 +1344,7 @@ "bevy_reflect", "bevy_render", "bevy_shader", - "bevy_transform", "bevy_utils", - "bevy_window", - "bitflags 2.11.1", - "nonmax", - "radsort", "smallvec", "thiserror 2.0.18", "tracing", @@ -1248,15 +1352,15 @@ [[package]] name = "bevy_ptr" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a9329e8dc4e01ced480eeec4902e6d7cb56e56ec37f6fbc4323e5c937290a7" +checksum = "b511e89f7078fd21fdea77061a0ca3e737297c7011bb10c073e0aecb17c9fea6" [[package]] name = "bevy_reflect" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1dfeb67a9fe4f59003a84f5f99ba6302141c70e926601cbc6abfd4a1eea9ca9" +checksum = "92abd59cbba1524c1847e9a50f74d94e6b7836c80a8edfa9c47e59f7fd81021d" dependencies = [ "assert_type_match", "bevy_platform", @@ -1283,9 +1387,9 @@ [[package]] name = "bevy_reflect_derive" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475f68c93e9cd5f17e9167635c8533a4f388f12d38245a202359e4c2721d87ba" +checksum = "90fa4e6b97fd2d582dd5ed96762a70d04505a477c833cf4f69d016dcd03d2d04" dependencies = [ "bevy_macro_utils", "indexmap", @@ -1297,9 +1401,9 @@ [[package]] name = "bevy_render" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243523e33fe5dfcebc4240b1eb2fc16e855c5d4c0ea6a8393910740956770f44" +checksum = "a89b2cc850a4c3fd12a6a088a4fc3e80118b2e1b569da8936f6d4d99ca1b6ee7" dependencies = [ "async-channel", "bevy_app", @@ -1311,6 +1415,9 @@ "bevy_ecs", "bevy_encase_derive", "bevy_image", + "bevy_log", + "bevy_material", + "bevy_material_macros", "bevy_math", "bevy_mesh", "bevy_platform", @@ -1322,15 +1429,15 @@ "bevy_transform", "bevy_utils", "bevy_window", - "bitflags 2.11.1", + "bitflags 2.13.1", "bytemuck", "derive_more", "downcast-rs 2.0.2", "encase", - "fixedbitset", "glam", "image", "indexmap", + "itertools 0.14.0", "js-sys", "naga", "nonmax", @@ -1338,18 +1445,19 @@ "send_wrapper", "smallvec", "thiserror 2.0.18", - "tracing", "variadics_please", "wasm-bindgen", + "weak-table", "web-sys", "wgpu", + "wgpu-types", ] [[package]] name = "bevy_render_macros" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b6325e9c495a71270446784611e8d7f446f927eac8506c4c099fd10cb4c3ed" +checksum = "e0eb5cffe5253a6ab4e4b84b2e40a6a2f4673deb16fd63ab9dfc4a015449873a" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -1359,48 +1467,62 @@ [[package]] name = "bevy_scene" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cc1047d85ec8048261b63ef675c12f1e6b5782dc0b422fbcee0c140d026bd4" +checksum = "28a3c891148c40e1352fc41001c0e1894ba63fc4e2d3aca33447343c4122b782" dependencies = [ "bevy_app", "bevy_asset", - "bevy_camera", "bevy_derive", "bevy_ecs", + "bevy_log", "bevy_platform", "bevy_reflect", - "bevy_transform", + "bevy_scene_macros", "bevy_utils", - "derive_more", - "ron", - "serde", + "smallvec", "thiserror 2.0.18", - "uuid", + "tracing", + "variadics_please", +] + +[[package]] +name = "bevy_scene_macros" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4bc33a36a4e9e344985a96cd8b4abc816cf2c5d2fa002d72fd7bcd11396589c" +dependencies = [ + "bevy_ecs_macro_logic", + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "bevy_shader" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eea95f0273c32be13d6a0b799a93bc256ad7830759ede595c404d5234302da2" +checksum = "fa0ac51378bb6a021165ee334f846b515cd06082e24ce962adce58ad7df1c39a" dependencies = [ "bevy_asset", "bevy_platform", "bevy_reflect", + "bevy_utils", "naga", "naga_oil", "serde", "thiserror 2.0.18", "tracing", + "wgpu-naga-bridge", "wgpu-types", ] [[package]] name = "bevy_sprite" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ec5bc0cbdee551b610a46f41d30374bbe42b8951ffc676253c6243ab2b9395" +checksum = "c679b88cc655881d403929bcdf02d30f688fd8916eb1635e6e7f8585d8ae6894" dependencies = [ "bevy_app", "bevy_asset", @@ -1409,6 +1531,7 @@ "bevy_derive", "bevy_ecs", "bevy_image", + "bevy_log", "bevy_math", "bevy_mesh", "bevy_picking", @@ -1423,9 +1546,9 @@ [[package]] name = "bevy_sprite_render" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b82cb08905e7ddcea2694a95f757ae7f1fd01e6a7304076bad595d2158e4bfe0" +checksum = "e5a65ca9a286dd5815ca4d2d41d4f83bdbb22c8a639d10b4c33eac114b369c36" dependencies = [ "bevy_app", "bevy_asset", @@ -1435,6 +1558,7 @@ "bevy_derive", "bevy_ecs", "bevy_image", + "bevy_material", "bevy_math", "bevy_mesh", "bevy_platform", @@ -1445,7 +1569,7 @@ "bevy_text", "bevy_transform", "bevy_utils", - "bitflags 2.11.1", + "bitflags 2.13.1", "bytemuck", "derive_more", "fixedbitset", @@ -1455,9 +1579,9 @@ [[package]] name = "bevy_state" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae0682968e97d29c1eccc8c6bb6283f2678d362779bc03f1bb990967059473b" +checksum = "8c22e694ea52e42994aea6ed2d0b378fa1e9d5a9b615db88626e33508bc03f35" dependencies = [ "bevy_app", "bevy_ecs", @@ -1471,9 +1595,9 @@ [[package]] name = "bevy_state_macros" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73d32f90f9cfcef5a44401db7ce206770daaa1707b0fb95eb7a96a6933f54f1b" +checksum = "835f45091fa0df1ff3cb10f4ca5a397d4e9249b550f1be6893b08a2a06d6eed7" dependencies = [ "bevy_macro_utils", "quote", @@ -1482,9 +1606,9 @@ [[package]] name = "bevy_tasks" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384eb04d80aa38664d69988fd30cbbe03e937ecb65c66aa6abe60ce0bca826aa" +checksum = "fa34e6b9b804851ec08a41c0346c859d82e2fa98c906d74b965ee61bbbb688e4" dependencies = [ "async-channel", "async-executor", @@ -1496,17 +1620,18 @@ "derive_more", "futures-lite", "heapless", - "pin-project", + "web-task", ] [[package]] name = "bevy_text" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc5233291dfc22e584de2535f2e37ae9766d37cb5a01652de2133ba202dcb9b" +checksum = "38e1d7eb8b10229f424b4fc56c864a26c32ac02b8cd184e2cc25eceea7b5e892" dependencies = [ "bevy_app", "bevy_asset", + "bevy_clipboard", "bevy_color", "bevy_derive", "bevy_ecs", @@ -1516,9 +1641,11 @@ "bevy_platform", "bevy_reflect", "bevy_utils", - "cosmic-text", + "parley", "serde", "smallvec", + "smol_str", + "swash", "sys-locale", "thiserror 2.0.18", "tracing", @@ -1527,9 +1654,9 @@ [[package]] name = "bevy_time" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ef9af4e523195e561074cf60fbfad0f4cb8d1db504855fee3c4ce8896c7244" +checksum = "c21e3be2aa4426ea1e0a7036d3d1dbbded84c319459d9f3e2a616b33563372f2" dependencies = [ "bevy_app", "bevy_ecs", @@ -1542,13 +1669,12 @@ [[package]] name = "bevy_transform" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3bb3de7842fef699344beb03f22bdbff16599d788fe0f47fbb3b1e6fa320eb" +checksum = "c95fefe69c9223d10e6b52a0fdf12811bab9d0c7dcb27570cb86824b451f180d" dependencies = [ "bevy_app", "bevy_ecs", - "bevy_log", "bevy_math", "bevy_reflect", "bevy_tasks", @@ -1560,9 +1686,9 @@ [[package]] name = "bevy_ui" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1691a411014085e0d35f8bb8208e5f973edd7ace061a4b1c41c83de21579dc70" +checksum = "e5519c799ecf14e2eeece8b9b823250a00c9df14523e2638b647fccfe4ff0d20" dependencies = [ "accesskit", "bevy_a11y", @@ -1575,17 +1701,21 @@ "bevy_image", "bevy_input", "bevy_input_focus", + "bevy_log", "bevy_math", "bevy_picking", "bevy_platform", "bevy_reflect", "bevy_sprite", "bevy_text", + "bevy_time", "bevy_transform", "bevy_utils", "bevy_window", "derive_more", + "parley", "smallvec", + "swash", "taffy", "thiserror 2.0.18", "tracing", @@ -1594,9 +1724,9 @@ [[package]] name = "bevy_ui_render" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2c35402d8a052f512e3fec1f36b26e83eee713fcca57f965c244ee795e1fcb0" +checksum = "4f1d3921936d88bd2638dd4d87bff8fc3b9908a046a50658548045102249f93e" dependencies = [ "bevy_app", "bevy_asset", @@ -1606,6 +1736,7 @@ "bevy_derive", "bevy_ecs", "bevy_image", + "bevy_input_focus", "bevy_math", "bevy_mesh", "bevy_platform", @@ -1620,14 +1751,15 @@ "bevy_utils", "bytemuck", "derive_more", + "indexmap", "tracing", ] [[package]] name = "bevy_ui_widgets" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a63cb818b0de41bdb14990e0ce1aaaa347f871750ab280f80c427e83d72712" +checksum = "d5fc616ccc51b36dea5cb1de91ed82569b41649923388e5ba82cb7d2f1ef18d8" dependencies = [ "accesskit", "bevy_a11y", @@ -1640,25 +1772,31 @@ "bevy_math", "bevy_picking", "bevy_reflect", + "bevy_text", "bevy_ui", + "bevy_window", + "parley", + "smol_str", ] [[package]] name = "bevy_utils" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2111910cd7a4b1e6ce07eaaeb6f68a2c0ea0ca609ed0d0d506e3eb161101435b" +checksum = "3aceea6c7ffdd568f866d5ca4dfe50c33440c54f7bc230c13a9ba7ab0c91aed1" dependencies = [ + "async-channel", "bevy_platform", "disqualified", + "indexmap", "thread_local", ] [[package]] name = "bevy_window" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df06e6993a0896bae2fe7644ae6def29a1a92b45dfb1bcebbd92af782be3638" +checksum = "efcc255b43db156fba393b2ff8fa552aac5e7e02ae4c6298eacdbab655ddf988" dependencies = [ "bevy_app", "bevy_asset", @@ -1675,9 +1813,9 @@ [[package]] name = "bevy_winit" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2de1c13d32ab8528435b58eca7ab874a1068184c6d6f266ee11433ae99d4069" +checksum = "308c9eb04f74f340593b3def6a7c1778fd42581d779c6db836d690c7d471f94c" dependencies = [ "accesskit", "accesskit_winit", @@ -1698,7 +1836,6 @@ "bevy_tasks", "bevy_window", "bytemuck", - "cfg-if", "js-sys", "tracing", "wasm-bindgen", @@ -1708,15 +1845,39 @@ ] [[package]] -name = "bindgen" -version = "0.72.1" +name = "bevy_world_serialization" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +checksum = "de58ae74410d4f940e3f00484f58603b4f1a53a7d84ebe3fca258d2a3aa96620" dependencies = [ - "bitflags 2.11.1", + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_derive", + "bevy_ecs", + "bevy_platform", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "derive_more", + "ron", + "serde", + "thiserror 2.0.18", + "uuid", +] + +[[package]] +name = "bindgen" +version = "0.71.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +dependencies = [ + "bitflags 2.13.1", "cexpr", "clang-sys", "itertools 0.13.0", + "log", + "prettyplease", "proc-macro2", "quote", "regex", @@ -1727,18 +1888,18 @@ [[package]] name = "bit-set" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51" [[package]] name = "bitflags" @@ -1748,9 +1909,9 @@ [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" dependencies = [ "bytemuck", "serde_core", @@ -1771,12 +1932,6 @@ ] [[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" @@ -1857,7 +2012,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "log", "polling", "rustix 0.38.44", @@ -1866,18 +2021,43 @@ ] [[package]] +name = "calloop" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" +dependencies = [ + "bitflags 2.13.1", + "polling", + "rustix 1.1.4", + "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", + "calloop 0.13.0", "rustix 0.38.44", "wayland-backend", "wayland-client", ] [[package]] +name = "calloop-wayland-source" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop 0.14.4", + "rustix 1.1.4", + "wayland-backend", + "wayland-client", +] + +[[package]] name = "cc" version = "1.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1948,6 +2128,26 @@ ] [[package]] +name = "codespan-reporting" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] + +[[package]] +name = "color" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ec7c5eb7a16992b1904d76c517d170ab353b0e0b3d5a0c81a8a0cd1037893cf" +dependencies = [ + "bytemuck", +] + +[[package]] name = "combine" version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2056,7 +2256,7 @@ dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", - "core-graphics-types 0.1.3", + "core-graphics-types", "foreign-types", "libc", ] @@ -2073,17 +2273,6 @@ ] [[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.11.1", - "core-foundation 0.10.1", - "libc", -] - -[[package]] name = "core_maths" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2094,69 +2283,46 @@ [[package]] name = "coreaudio-rs" -version = "0.11.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +checksum = "7d5d7dca3ebcf65a035582c9ad4385371a9d9ee6537474d2a278f4e1e475bb58" dependencies = [ - "bitflags 1.3.2", - "core-foundation-sys", - "coreaudio-sys", -] - -[[package]] -name = "coreaudio-sys" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" -dependencies = [ - "bindgen", -] - -[[package]] -name = "cosmic-text" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cadaea21e24c49c0c82116f2b465ae6a49d63c90e428b0f8d9ae1f638ac91f" -dependencies = [ - "bitflags 2.11.1", - "fontdb", - "harfrust", - "linebender_resource_handle", - "log", - "rangemap", - "rustc-hash 1.1.0", - "self_cell", - "skrifa 0.39.0", - "smol_str", - "swash", - "sys-locale", - "unicode-bidi", - "unicode-linebreak", - "unicode-script", - "unicode-segmentation", + "bitflags 2.13.1", + "libc", + "objc2-audio-toolbox", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", ] [[package]] name = "cpal" -version = "0.15.3" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" +checksum = "d8942da362c0f0d895d7cac616263f2f9424edc5687364dfd1d25ef7eba506d7" dependencies = [ "alsa", - "core-foundation-sys", "coreaudio-rs", "dasp_sample", "jni 0.21.1", "js-sys", "libc", "mach2", - "ndk 0.8.0", + "ndk", "ndk-context", - "oboe", + "num-derive", + "num-traits", + "objc2 0.6.4", + "objc2-audio-toolbox", + "objc2-avf-audio", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.54.0", + "windows", ] [[package]] @@ -2309,7 +2475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -2370,9 +2536,9 @@ [[package]] name = "ecolor" -version = "0.33.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71ddb8ac7643d1dba1bb02110e804406dd459a838efcb14011ced10556711a8e" +checksum = "6758be723a3f298bbfda4db75748bc2ba0abafe096b6383c7c32da264764fbc3" dependencies = [ "bytemuck", "emath", @@ -2380,14 +2546,16 @@ [[package]] name = "egui" -version = "0.33.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3" +checksum = "2796c98d50b79631281d516343a6f6e93c0666462ca36e2c93b39f25d7793325" dependencies = [ + "accesskit", "ahash", - "bitflags 2.11.1", + "bitflags 2.13.1", "emath", "epaint", + "itertools 0.14.0", "log", "nohash-hasher", "profiling", @@ -2403,9 +2571,9 @@ [[package]] name = "emath" -version = "0.33.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32" +checksum = "cd4ec073c9898516584d8c6cfdcee95b530b3d941cd5031ef4050aa36812308b" dependencies = [ "bytemuck", ] @@ -2448,8 +2616,13 @@ "bevy", "bevy_egui", "crossbeam", + "libc", "memmap2", + "smallvec", "thiserror 2.0.18", + "tikv-jemalloc-ctl", + "tikv-jemallocator", + "tracing", ] [[package]] @@ -2457,31 +2630,39 @@ version = "0.1.0" dependencies = [ "engine-core", + "memmap2", ] [[package]] name = "epaint" -version = "0.33.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009d0dd3c2163823a0abdb899451ecbc78798dec545ee91b43aff1fa790bab62" +checksum = "4e60a8888b51da911df23918fd7301359b1d43a406a0ff3b8863af093dd7fc6c" dependencies = [ - "ab_glyph", "ahash", "bytemuck", "ecolor", "emath", "epaint_default_fonts", + "font-types", + "harfrust 0.7.0", "log", "nohash-hasher", "parking_lot", "profiling", + "self_cell", + "skrifa 0.42.1", + "smallvec", + "unicode-general-category", + "unicode-segmentation", + "vello_cpu", ] [[package]] name = "epaint_default_fonts" -version = "0.33.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fbe202b6578d3d56428fa185cdf114a05e49da05f477b3c7f0fbb221f1862" +checksum = "13ee4e1f553a3584c301f3a56ff1a775f1384781396cea301c8d952e9b93f560" [[package]] name = "equivalent" @@ -2568,6 +2749,12 @@ ] [[package]] +name = "fearless_simd" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97b65636e5b9ef369943878ac74335ba1c55c1cb6adbf1e2c293c624248d693" + +[[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2609,15 +2796,6 @@ [[package]] name = "font-types" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "font-types" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7" @@ -2626,26 +2804,17 @@ ] [[package]] -name = "fontconfig-parser" -version = "0.5.8" +name = "fontique" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" +checksum = "7c20b425addb8661e97fe1d51c4d8bcec3ec29ed6ad0db983976a7521276b8f7" dependencies = [ - "roxmltree", -] - -[[package]] -name = "fontdb" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" -dependencies = [ - "fontconfig-parser", - "log", + "hashbrown 0.17.1", + "linebender_resource_handle", "memmap2", - "slotmap", - "tinyvec", - "ttf-parser", + "parlance", + "read-fonts 0.39.2", + "smallvec", ] [[package]] @@ -2755,7 +2924,7 @@ checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ "rustix 1.1.4", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -2765,11 +2934,9 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -2779,10 +2946,12 @@ checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", "wasip2", "wasip3", + "wasm-bindgen", ] [[package]] @@ -2816,7 +2985,22 @@ "vec_map", "wasm-bindgen", "web-sys", - "windows 0.62.2", + "windows", +] + +[[package]] +name = "git2" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddddbf932745a6be37109b6112d3ee09696106f848449069d3a57bba937ab82e" +dependencies = [ + "bitflags 2.13.1", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", ] [[package]] @@ -2832,9 +3016,9 @@ [[package]] name = "glam" -version = "0.30.10" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19fc433e8437a212d1b6f1e68c7824af3aed907da60afa994e7f542d18d12aa9" +checksum = "f70749695b063ecbf6b62949ccccde2e733ec3ecbbd71d467dca4e5c6c97cca0" dependencies = [ "bytemuck", "encase", @@ -2844,6 +3028,22 @@ ] [[package]] +name = "glifo" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d99fc21d493812643aae86d53b7bbd02f376434a90317e8a790bc209fdd6605e" +dependencies = [ + "bytemuck", + "foldhash 0.2.0", + "hashbrown 0.17.1", + "log", + "peniko", + "skrifa 0.42.1", + "smallvec", + "vello_common", +] + +[[package]] name = "glob" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2851,9 +3051,9 @@ [[package]] name = "glow" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5" dependencies = [ "js-sys", "slotmap", @@ -2907,34 +3107,17 @@ ] [[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.11.1", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.11.1", -] - -[[package]] name = "gpu-allocator" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" +checksum = "51255ea7cfaadb6c5f1528d43e92a82acb2b96c43365989a28b2d44ee38f8795" dependencies = [ + "ash", + "hashbrown 0.16.1", "log", "presser", - "thiserror 1.0.69", - "windows 0.58.0", + "thiserror 2.0.18", + "windows", ] [[package]] @@ -2943,7 +3126,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -2954,7 +3137,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] @@ -2974,11 +3157,21 @@ ] [[package]] +name = "guillotiere" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b17e70c989c36bad147b27a58d148c0741c51448aa5653436547323e524d0ab" +dependencies = [ + "euclid", +] + +[[package]] name = "half" version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ + "bytemuck", "cfg-if", "crunchy", "num-traits", @@ -2987,14 +3180,26 @@ [[package]] name = "harfrust" -version = "0.4.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0caaee032384c10dd597af4579c67dee16650d862a9ccbe1233ff1a379abc07" +checksum = "551ed25397e4b444e89686602877d5cf3a7f6e3d548dcac37a8357d1e195f4df" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "bytemuck", "core_maths", - "read-fonts 0.36.0", + "read-fonts 0.39.2", + "smallvec", +] + +[[package]] +name = "harfrust" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0431e8e389aa0f1e72bb9d1c2db8957a1a7a3580e8ed97db819c14837aac9b3e" +dependencies = [ + "bitflags 2.13.1", + "bytemuck", + "read-fonts 0.39.2", "smallvec", ] @@ -3022,6 +3227,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ + "allocator-api2", "equivalent", "foldhash 0.2.0", "serde", @@ -3033,6 +3239,9 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash 0.2.0", +] [[package]] name = "heapless" @@ -3059,9 +3268,9 @@ [[package]] name = "hexasphere" -version = "16.0.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a164ceff4500f2a72b1d21beaa8aa8ad83aec2b641844c659b190cb3ea2e0b" +checksum = "177ea6330876de4ef08e184f827b98acc037614a4ce409902c5b0d53a9c2e951" dependencies = [ "constgebra", "glam", @@ -3089,6 +3298,21 @@ ] [[package]] +name = "icu_locale" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5a396343c7208121dc86e35623d3dfe19814a7613cfd14964994cdc9c9a2e26" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_locale_data", + "icu_provider", + "potential_utf", + "tinystr", + "zerovec", +] + +[[package]] name = "icu_locale_core" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3096,12 +3320,19 @@ dependencies = [ "displaydoc", "litemap", + "serde", "tinystr", "writeable", "zerovec", ] [[package]] +name = "icu_locale_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fdcc9ac77c6d74ff5cf6e65ef3181d6af32003b16fce3a77fb451d2f695993" + +[[package]] name = "icu_normalizer" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3149,6 +3380,8 @@ dependencies = [ "displaydoc", "icu_locale_core", + "serde", + "stable_deref_trait", "writeable", "yoke", "zerofrom", @@ -3157,6 +3390,27 @@ ] [[package]] +name = "icu_segmenter" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0794db0b1a86193ac9c48768d0e6c52c54448e0870ad87907d456ee0dac964" +dependencies = [ + "icu_collections", + "icu_locale", + "icu_provider", + "icu_segmenter_data", + "potential_utf", + "utf8_iter", + "zerovec", +] + +[[package]] +name = "icu_segmenter_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a2c462a4d927d512f5f882a033ddd62f33a05bb9f230d98f736ac3dc85938f" + +[[package]] name = "id-arena" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3221,7 +3475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "inotify-sys", "libc", ] @@ -3298,7 +3552,7 @@ "simd_cesu8", "thiserror 2.0.18", "walkdir", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3383,11 +3637,23 @@ [[package]] name = "ktx2" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7f53bdf698e7aa7ec916411bbdc8078135da11b66db5182675b2227f6c0d07" +checksum = "1d50be8a24c37debdf3170be6ca396d5b5b165f37f94837891adac735ca416b8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", +] + +[[package]] +name = "kurbo" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b60dfc32f652b926df6192e55525b16d186c69d47876c3ead4da5cc9f8450e2" +dependencies = [ + "arrayvec", + "euclid", + "polycool", + "smallvec", ] [[package]] @@ -3420,13 +3686,27 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] +name = "libgit2-sys" +version = "0.18.5+1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005d6ae6eac1912906073e069f7db60b1fa98e052a68227824afe3e3a1c59ca2" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + +[[package]] name = "libloading" version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3441,13 +3721,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "libc", "plain", "redox_syscall 0.7.5", ] [[package]] +name = "libssh2-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "220e4f05ad4a218192533b300327f5150e809b54c4ec83b5a1d91833601811b9" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + +[[package]] name = "libudev-sys" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3458,6 +3752,18 @@ ] [[package]] +name = "libz-sys" +version = "1.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] name = "linebender_resource_handle" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3498,9 +3804,9 @@ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "lvedit" @@ -3511,18 +3817,9 @@ [[package]] name = "mach2" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" -dependencies = [ - "libc", -] - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" dependencies = [ "libc", ] @@ -3544,29 +3841,14 @@ [[package]] name = "memmap2" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] [[package]] -name = "metal" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" -dependencies = [ - "bitflags 2.11.1", - "block", - "core-graphics-types 0.2.0", - "foreign-types", - "log", - "objc", - "paste", -] - -[[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3594,16 +3876,16 @@ [[package]] name = "naga" -version = "27.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" +checksum = "b2bf919621e7975acb27d881bae2fb993e0d45c8e0446e85e6272971e00dc8df" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.11.1", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", - "codespan-reporting", + "codespan-reporting 0.13.1", "half", "hashbrown 0.16.1", "hexf-parse", @@ -3621,11 +3903,11 @@ [[package]] name = "naga_oil" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310c347db1b30e69581f3b84dc9a5c311ed583f67851b39b77953cb7a066c97f" +checksum = "319f03062940ed85c03da020042618356bb8ca5263020322930883b05e30208e" dependencies = [ - "codespan-reporting", + "codespan-reporting 0.12.0", "data-encoding", "indexmap", "naga", @@ -3638,28 +3920,14 @@ [[package]] name = "ndk" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" -dependencies = [ - "bitflags 2.11.1", - "jni-sys 0.3.1", - "log", - "ndk-sys 0.5.0+25.2.9519653", - "num_enum", - "thiserror 1.0.69", -] - -[[package]] -name = "ndk" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "jni-sys 0.3.1", "log", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "raw-window-handle", "thiserror 1.0.69", @@ -3673,15 +3941,6 @@ [[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 0.3.1", -] - -[[package]] -name = "ndk-sys" version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" @@ -3695,7 +3954,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "libc", @@ -3707,7 +3966,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "libc", @@ -3754,6 +4013,16 @@ ] [[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] name = "num-derive" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3765,6 +4034,26 @@ ] [[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] name = "num-traits" version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3775,6 +4064,16 @@ ] [[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] name = "num_enum" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3797,15 +4096,6 @@ ] [[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" @@ -3836,14 +4126,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "libc", "objc2 0.5.2", "objc2-core-data", "objc2-core-image", "objc2-foundation 0.2.2", - "objc2-quartz-core", + "objc2-quartz-core 0.2.2", ] [[package]] @@ -3852,19 +4142,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-graphics", "objc2-foundation 0.3.2", ] [[package]] +name = "objc2-audio-toolbox" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6948501a91121d6399b79abaa33a8aa4ea7857fe019f341b8c23ad6e81b79b08" +dependencies = [ + "bitflags 2.13.1", + "libc", + "objc2 0.6.4", + "objc2-core-audio", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-avf-audio" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a380031deed8e99db00065c45937da434ca987c034e13b87e4441f9e4090be" +dependencies = [ + "objc2 0.6.4", + "objc2-foundation 0.3.2", +] + +[[package]] name = "objc2-cloud-kit" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -3883,12 +4198,35 @@ ] [[package]] +name = "objc2-core-audio" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" +dependencies = [ + "dispatch2", + "objc2 0.6.4", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-core-audio-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c" +dependencies = [ + "bitflags 2.13.1", + "objc2 0.6.4", +] + +[[package]] name = "objc2-core-data" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -3900,8 +4238,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", + "block2 0.6.2", "dispatch2", + "libc", "objc2 0.6.4", ] @@ -3911,7 +4251,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "dispatch2", "objc2 0.6.4", "objc2-core-foundation", @@ -3927,7 +4267,7 @@ "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal", + "objc2-metal 0.2.2", ] [[package]] @@ -3954,7 +4294,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "dispatch", "libc", @@ -3967,7 +4307,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", + "block2 0.6.2", + "libc", "objc2 0.6.4", "objc2-core-foundation", ] @@ -3978,7 +4320,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "libc", "objc2-core-foundation", ] @@ -3989,7 +4331,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", ] @@ -4012,23 +4354,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] [[package]] +name = "objc2-metal" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" +dependencies = [ + "bitflags 2.13.1", + "block2 0.6.2", + "objc2 0.6.4", + "objc2-foundation 0.3.2", +] + +[[package]] name = "objc2-quartz-core" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal", + "objc2-metal 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.13.1", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-metal 0.3.2", ] [[package]] @@ -4047,7 +4414,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-cloud-kit", @@ -4056,7 +4423,7 @@ "objc2-core-location", "objc2-foundation 0.2.2", "objc2-link-presentation", - "objc2-quartz-core", + "objc2-quartz-core 0.2.2", "objc2-symbols", "objc2-uniform-type-identifiers", "objc2-user-notifications", @@ -4079,7 +4446,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -4087,29 +4454,6 @@ ] [[package]] -name = "oboe" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -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" @@ -4135,6 +4479,24 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] name = "orbclient" version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4188,7 +4550,40 @@ "libc", "redox_syscall 0.5.18", "smallvec", - "windows-link 0.2.1", + "windows-link", +] + +[[package]] +name = "parlance" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b6937eda350acc1a5d05872c3cbf99fe78619c269096e2be3d4a350058639d5" + +[[package]] +name = "parley" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fad031076f48f0d4d85ce1aea9b94b4e715a4d636a030a123038f8f5b5e4343" +dependencies = [ + "fontique", + "harfrust 0.6.2", + "hashbrown 0.17.1", + "icu_normalizer", + "icu_properties", + "icu_segmenter", + "linebender_resource_handle", + "parlance", + "parley_data", + "skrifa 0.42.1", +] + +[[package]] +name = "parley_data" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ab9ace3fad1b9ed603ddac5b595e69931fc50263d7e04e4055015b77b02da5" +dependencies = [ + "icu_properties", ] [[package]] @@ -4198,6 +4593,19 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] +name = "peniko" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "839c8299360d2e998bdb106dc0a6cd71dcc5f4df51df1b620361bf50e283cca6" +dependencies = [ + "bytemuck", + "color", + "kurbo", + "linebender_resource_handle", + "smallvec", +] + +[[package]] name = "percent-encoding" version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4271,7 +4679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "crc32fast", "fdeflate", "flate2", @@ -4293,6 +4701,15 @@ ] [[package]] +name = "polycool" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50596ddc09eb5ad5f75cacd40209568e66df71baf86e1499a0e99c4cff12a5a6" +dependencies = [ + "arrayvec", +] + +[[package]] name = "portable-atomic" version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4313,6 +4730,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ + "serde_core", + "writeable", "zerovec", ] @@ -4326,15 +4745,6 @@ ] [[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] name = "presser" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4356,7 +4766,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.25.11+spec-1.1.0", + "toml_edit", ] [[package]] @@ -4424,38 +4834,25 @@ [[package]] name = "rand" -version = "0.9.4" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", + "getrandom 0.4.2", "rand_core", ] [[package]] name = "rand_core" -version = "0.9.5" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "rand_distr" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" +checksum = "4d431c2703ccf129de4d45253c03f49ebb22b97d6ad79ee3ecfc7e3f4862c1d8" dependencies = [ "num-traits", "rand", @@ -4468,26 +4865,21 @@ checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" [[package]] -name = "rangemap" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68" - -[[package]] name = "raw-window-handle" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] -name = "read-fonts" -version = "0.36.0" +name = "raw-window-metal" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eaa2941a4c05443ee3a7b26ab076a553c343ad5995230cc2b1d3e993bdc6345" +checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135" dependencies = [ - "bytemuck", - "core_maths", - "font-types 0.10.1", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", ] [[package]] @@ -4497,7 +4889,17 @@ checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ "bytemuck", - "font-types 0.11.3", + "font-types", +] + +[[package]] +name = "read-fonts" +version = "0.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" +dependencies = [ + "bytemuck", + "font-types", ] [[package]] @@ -4521,7 +4923,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] @@ -4530,7 +4932,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] @@ -4570,12 +4972,16 @@ [[package]] name = "rodio" -version = "0.20.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ceb6607dd738c99bc8cb28eff249b7cd5c8ec88b9db96c0608c1480d140fb1" +checksum = "d0a536bb79db59098ef71a4dd4246c02eb87b316deceb1b68e0cde7167ec01eb" dependencies = [ "cpal", + "dasp_sample", "lewton", + "num-rational", + "thiserror 2.0.18", + "tracing", ] [[package]] @@ -4584,7 +4990,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "once_cell", "serde", "serde_derive", @@ -4593,10 +4999,14 @@ ] [[package]] -name = "roxmltree" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" +name = "rpmalloc-sys" +version = "0.1.0" +dependencies = [ + "bindgen", + "git2", + "libc", + "num_cpus", +] [[package]] name = "rustc-hash" @@ -4625,7 +5035,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -4638,7 +5048,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.12.1", @@ -4690,7 +5100,7 @@ "ab_glyph", "log", "memmap2", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", "tiny-skia", ] @@ -4794,16 +5204,6 @@ [[package]] name = "skrifa" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9eb0b904a04d09bd68c65d946617b8ff733009999050f3b851c32fb3cfb60e" -dependencies = [ - "bytemuck", - "read-fonts 0.36.0", -] - -[[package]] -name = "skrifa" version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" @@ -4813,6 +5213,16 @@ ] [[package]] +name = "skrifa" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" +dependencies = [ + "bytemuck", + "read-fonts 0.39.2", +] + +[[package]] name = "slab" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4829,9 +5239,9 @@ [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smithay-client-toolkit" @@ -4839,9 +5249,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.11.1", - "calloop", - "calloop-wayland-source", + "bitflags 2.13.1", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", "cursor-icon", "libc", "log", @@ -4859,6 +5269,44 @@ ] [[package]] +name = "smithay-client-toolkit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.13.1", + "calloop 0.14.4", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.4", + "thiserror 2.0.18", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" +dependencies = [ + "libc", + "smithay-client-toolkit 0.20.0", + "wayland-backend", +] + +[[package]] name = "smol_str" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4878,11 +5326,11 @@ [[package]] name = "spirv" -version = "0.3.0+sdk-1.3.268.0" +version = "0.4.0+sdk-1.4.341.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] @@ -4962,23 +5410,23 @@ [[package]] name = "sysinfo" -version = "0.37.2" +version = "0.38.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" +checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f" dependencies = [ "libc", "memchr", "ntapi", "objc2-core-foundation", "objc2-io-kit", - "windows 0.61.3", + "windows", ] [[package]] name = "taffy" -version = "0.9.2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ba83ebaf2954d31d05d67340fd46cebe99da2b7133b0dd68d70c65473a437b" +checksum = "aea22054047c16c3f34d3ac473a2170be1424b1115b2a3adcf28cfb067c88859" dependencies = [ "arrayvec", "grid", @@ -5059,6 +5507,37 @@ ] [[package]] +name = "tikv-jemalloc-ctl" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a184c43b8ab2f41df2733b55556e3f5f632f4aeaa205b1bb018f574b7f5f142" +dependencies = [ + "libc", + "paste", + "tikv-jemalloc-sys", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a2825c78386b4ae0314074867860ba9577875de945f05992c38815cbec327f0" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249f09e49ab1609436f34c776e84231bead18d6a955f119f939bdc1d847561bd" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + +[[package]] name = "tiny-skia" version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5090,6 +5569,7 @@ checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", + "serde_core", "zerovec", ] @@ -5110,15 +5590,6 @@ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" @@ -5128,26 +5599,14 @@ [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow 0.7.15", -] - -[[package]] -name = "toml_edit" version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ "indexmap", - "toml_datetime 1.1.1+spec-1.1.0", + "toml_datetime", "toml_parser", - "winnow 1.0.3", + "winnow", ] [[package]] @@ -5156,7 +5615,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.3", + "winnow", ] [[package]] @@ -5165,6 +5624,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -5248,9 +5708,6 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" -dependencies = [ - "core_maths", -] [[package]] name = "twox-hash" @@ -5271,10 +5728,10 @@ checksum = "214ca0b2191785cbc06209b9ca1861e048e39b5ba33574b3cedd58363d5bb5f6" [[package]] -name = "unicode-bidi" -version = "0.3.18" +name = "unicode-general-category" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" +checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f" [[package]] name = "unicode-ident" @@ -5283,18 +5740,6 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] -name = "unicode-linebreak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" - -[[package]] -name = "unicode-script" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" - -[[package]] name = "unicode-segmentation" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5360,12 +5805,46 @@ ] [[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] name = "vec_map" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] +name = "vello_common" +version = "0.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d672facaa2d697285a786cd9d44d614cd2ce54cdc022504bf339f8fff3b750" +dependencies = [ + "bytemuck", + "fearless_simd", + "guillotiere 0.7.0", + "hashbrown 0.17.1", + "log", + "peniko", + "smallvec", + "thiserror 2.0.18", +] + +[[package]] +name = "vello_cpu" +version = "0.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "588691169aed86b5c8fb487266afee01323234e6fd0a3f2aaec0eaa8e4007f23" +dependencies = [ + "bytemuck", + "glifo", + "hashbrown 0.17.1", + "vello_common", +] + +[[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5482,7 +5961,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "hashbrown 0.15.5", "indexmap", "semver", @@ -5508,7 +5987,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -5520,7 +5999,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "cursor-icon", "wayland-backend", ] @@ -5542,19 +6021,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-scanner", ] [[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] name = "wayland-protocols-plasma" version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -5567,7 +6072,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -5593,10 +6098,17 @@ dependencies = [ "dlib", "log", + "once_cell", "pkg-config", ] [[package]] +name = "weak-table" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323f4da9523e9a669e1eaf9c6e763892769b1d38c623913647bfdc1532fe4549" + +[[package]] name = "web-sys" version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5607,6 +6119,18 @@ ] [[package]] +name = "web-task" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdc136a53ccd64a1211f107ccc34404769fbcc0f165f1afa065f5d88ab93538" +dependencies = [ + "async-task", + "cfg-if", + "js-sys", + "wasm-bindgen", +] + +[[package]] name = "web-time" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5640,12 +6164,13 @@ [[package]] name = "wgpu" -version = "27.0.1" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" +checksum = "76e8840e1ba2881d4cbb18d2147627a56af426ff064c0401eb0c8410c6325d07" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.1", + "bytemuck", "cfg-if", "cfg_aliases", "document-features", @@ -5667,14 +6192,14 @@ [[package]] name = "wgpu-core" -version = "27.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" +checksum = "2f519832254e56965a9940c4af57dcb75f702b6f6fa4a0b172f685395843a4d7" dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.11.1", + "bitflags 2.13.1", "bytemuck", "cfg_aliases", "document-features", @@ -5694,55 +6219,54 @@ "wgpu-core-deps-wasm", "wgpu-core-deps-windows-linux-android", "wgpu-hal", + "wgpu-naga-bridge", "wgpu-types", ] [[package]] name = "wgpu-core-deps-apple" -version = "27.0.0" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" +checksum = "f5e39e26c4c0e07589e67d18546cf79ff45383659fc72fca4dd293358a0347f3" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-wasm" -version = "27.0.0" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1027dcf3b027a877e44819df7ceb0e2e98578830f8cd34cd6c3c7c2a7a50b7" +checksum = "af1fb1798be2a912497d4c224f72d39bb0cb34af50e8bcc29865bc339c943059" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "27.0.0" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +checksum = "4e592c1bbef6ad047647ae6e666ebd8cee7a32bb4544d9700ec96cbf73230257" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "27.0.4" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" +checksum = "97ace1c17727311c22a46e4e3faf56ea6de81af99dcc839bdfb54857b94d448d" dependencies = [ "android_system_properties", "arrayvec", "ash", "bit-set", - "bitflags 2.11.1", - "block", + "bitflags 2.13.1", + "block2 0.6.2", "bytemuck", "cfg-if", "cfg_aliases", - "core-graphics-types 0.2.0", "glow", "glutin_wgl_sys", - "gpu-alloc", "gpu-allocator", "gpu-descriptor", "hashbrown 0.16.1", @@ -5751,10 +6275,13 @@ "libc", "libloading", "log", - "metal", "naga", - "ndk-sys 0.6.0+11769913", - "objc", + "ndk-sys", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-metal 0.3.2", + "objc2-quartz-core 0.3.2", "once_cell", "ordered-float", "parking_lot", @@ -5763,28 +6290,42 @@ "profiling", "range-alloc", "raw-window-handle", + "raw-window-metal", "renderdoc-sys", "smallvec", "thiserror 2.0.18", "wasm-bindgen", + "wayland-sys", "web-sys", + "wgpu-naga-bridge", "wgpu-types", - "windows 0.58.0", - "windows-core 0.58.0", + "windows", + "windows-core", + "windows-result", +] + +[[package]] +name = "wgpu-naga-bridge" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95226013f547544b223281cd16a4fb549aa9dcb562adbda0faae4c73ffbbc161" +dependencies = [ + "naga", + "wgpu-types", ] [[package]] name = "wgpu-types" -version = "27.0.1" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" +checksum = "84bf84cd9ca8ca45e2b223a3868f1adf9bfc0c66aeac212e76ee7e40fdadf8f5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "bytemuck", "js-sys", "log", + "raw-window-handle", "serde", - "thiserror 2.0.18", "web-sys", ] @@ -5821,56 +6362,14 @@ [[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.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections 0.2.0", - "windows-core 0.61.2", - "windows-future 0.2.1", - "windows-link 0.1.3", - "windows-numerics 0.2.0", -] - -[[package]] -name = "windows" version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ - "windows-collections 0.3.2", - "windows-core 0.62.2", - "windows-future 0.3.2", - "windows-numerics 0.3.1", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", + "windows-collections", + "windows-core", + "windows-future", + "windows-numerics", ] [[package]] @@ -5879,43 +6378,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-core 0.62.2", -] - -[[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.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", + "windows-core", ] [[package]] @@ -5924,22 +6387,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", - "windows-threading 0.1.0", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] @@ -5948,20 +6400,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core 0.62.2", - "windows-link 0.2.1", - "windows-threading 0.2.1", -] - -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "windows-core", + "windows-link", + "windows-threading", ] [[package]] @@ -5977,17 +6418,6 @@ [[package]] name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" @@ -5999,61 +6429,18 @@ [[package]] name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - -[[package]] -name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", -] - -[[package]] -name = "windows-numerics" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core 0.62.2", - "windows-link 0.2.1", -] - -[[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]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", + "windows-core", + "windows-link", ] [[package]] @@ -6062,26 +6449,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -6090,7 +6458,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -6126,7 +6494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -6162,20 +6530,11 @@ [[package]] name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-threading" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -6277,10 +6636,10 @@ "ahash", "android-activity", "atomic-waker", - "bitflags 2.11.1", + "bitflags 2.13.1", "block2 0.5.1", "bytemuck", - "calloop", + "calloop 0.13.0", "cfg_aliases", "concurrent-queue", "core-foundation 0.9.4", @@ -6290,7 +6649,7 @@ "js-sys", "libc", "memmap2", - "ndk 0.9.0", + "ndk", "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", @@ -6302,7 +6661,7 @@ "redox_syscall 0.4.1", "rustix 0.38.44", "sctk-adwaita", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", "smol_str", "tracing", "unicode-segmentation", @@ -6322,15 +6681,6 @@ [[package]] name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" @@ -6402,7 +6752,7 @@ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", - "bitflags 2.11.1", + "bitflags 2.13.1", "indexmap", "log", "serde", @@ -6482,7 +6832,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "dlib", "log", "once_cell", @@ -6586,6 +6936,7 @@ "displaydoc", "yoke", "zerofrom", + "zerovec", ] [[package]] @@ -6594,6 +6945,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ + "serde", "yoke", "zerofrom", "zerovec-derive", diff --git a/Cargo.toml b/Cargo.toml index aa13b53..4aab51b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "3" -members = ["engine-core", "engine-testing", "lvedit"] +members = ["engine-core", "engine-testing", "external/rpmalloc-sys", "lvedit"] [profile.dev] opt-level = 1 diff --git a/engine-core/Cargo.toml b/engine-core/Cargo.toml index 29c8007..fd65bf6 100644 --- a/engine-core/Cargo.toml +++ b/engine-core/Cargo.toml @@ -4,11 +4,16 @@ edition = "2024" [dependencies] -bevy_egui = "0.39.1" +bevy_egui = "0.41.0" crossbeam = { version = "0.8.4", features = ["crossbeam-channel"] } +libc = "0.2.186" memmap2 = "0.9.10" +smallvec = "1.15.2" thiserror = "2.0.18" +tracing = "0.1.44" +tikv-jemallocator = { version = "0.7.0", features = ["override_allocator_on_supported_platforms"] } +tikv-jemalloc-ctl = {version = "0.7.0", features = ["stats"] } [dependencies.bevy] -version = "0.18.1" +version = "0.19" features = ["bevy_dev_tools"] diff --git a/engine-core/src/debug.rs b/engine-core/src/debug.rs index 4f23ac1..105f40e 100644 --- a/engine-core/src/debug.rs +++ b/engine-core/src/debug.rs @@ -1,3 +1,5 @@ +use std::sync::atomic::Ordering; + use bevy::{ app::{Plugin, Startup, Update}, ecs::{ @@ -8,25 +10,25 @@ query::Without, resource::Resource, schedule::IntoScheduleConfigs, - system::{Commands, Local, Query, Res, ResMut, SystemState}, + system::{Query, Res, ResMut}, world::World, }, input::{common_conditions::input_just_pressed, keyboard::KeyCode}, log::{ - self, Level, - tracing::{ - field::{Field, ValueSet, Visit}, - span, - }, + Level, tracing_subscriber::{Layer, Registry}, }, }; use bevy_egui::{ - EguiContext, EguiContexts, EguiPrimaryContextPass, PrimaryEguiContext, - egui::{self, Grid, ScrollArea, Widget}, + EguiContext, EguiContexts, EguiPrimaryContextPass, + egui::{self, Grid, LayerId, ScrollArea, Ui, UiBuilder, Widget}, +}; +use tracing::{ + field::{Field, Visit}, + info, }; -use crate::{EXTERNAL_SYSTEMS_CMDS, spawn_egui_camera}; +use crate::{EXTERNAL_SYSTEMS_CMDS, global_allocator::ALLOCATION_SIZE_ORDER, spawn_egui_camera}; pub struct DebugPlugin; @@ -71,7 +73,7 @@ fn on_event( &self, event: &bevy::log::tracing::Event<'_>, - ctx: bevy::log::tracing_subscriber::layer::Context<'_, Registry>, + _ctx: bevy::log::tracing_subscriber::layer::Context<'_, Registry>, ) { if !event.metadata().is_event() { return; @@ -107,6 +109,7 @@ is_open: bool, log_window_open: bool, world_tree_view_open: bool, + memory_debugger: bool, } impl Plugin for DebugPlugin { @@ -124,6 +127,7 @@ debug_ui_log_window, debug_ui_system_top_panel, debug_ui_world_tree_view, + memory_debugger, ) .run_if(|resource: Res| resource.into_inner().is_open), ); @@ -131,6 +135,7 @@ } fn toggle_debug_system(mut resource: ResMut) { + info!("toggeling dev tools"); resource.is_open ^= true; } @@ -138,9 +143,19 @@ mut contexts: EguiContexts, mut ui_state: ResMut, ) -> Result { - egui::TopBottomPanel::top("top_panel").show(contexts.ctx_mut()?, |ui| { + let ctx = contexts.ctx_mut()?; + let mut viewport_ui = Ui::new( + ctx.clone(), + "viewport".into(), + UiBuilder::new() + .layer_id(LayerId::background()) + .max_rect(ctx.viewport_rect()), + ); + egui::Panel::top("top_panel").show(&mut viewport_ui, |ui| { ui.menu_button("Widgets", |ui| { ui.toggle_value(&mut ui_state.log_window_open, "Log window"); + ui.toggle_value(&mut ui_state.world_tree_view_open, "World view"); + ui.toggle_value(&mut ui_state.memory_debugger, "Mem debugger"); }) }); @@ -170,16 +185,63 @@ Ok(()) } +fn size_to_category(size: usize) -> (&'static str, usize) { + match size.ilog2() { + 10..20 => ("KiB", 2usize.pow(10)), + 20..30 => ("MiB", 2usize.pow(20)), + 30..40 => ("GiB", 2usize.pow(30)), + 40..50 => ("TiB", 2usize.pow(40)), + 50..60 => ("PiB", 2usize.pow(50)), + 60..70 => ("EiB", 2usize.pow(60)), + _ => ("B", 1), + } +} + +fn memory_debugger(mut contexts: EguiContexts, mut ui_state: ResMut) -> Result { + egui::Window::new("Mem Debug") + .open(&mut ui_state.memory_debugger) + .show(contexts.ctx_mut()?, |ui| { + use tikv_jemalloc_ctl::{epoch, stats}; + epoch::advance().unwrap(); + let allocated = stats::allocated::read().unwrap(); + let (alloc_postfix, alloc_constant) = size_to_category(allocated); + let resident = stats::resident::read().unwrap(); + let (res_postfix, res_constant) = size_to_category(allocated); + ui.label(format!( + "allocated: {}{}", + allocated / alloc_constant, + alloc_postfix + )); + ui.label(format!( + "resident: {}{}", + resident / res_constant, + res_postfix + )); + ScrollArea::vertical().show(ui, |ui| { + for (i, order) in ALLOCATION_SIZE_ORDER.iter().enumerate() { + let order_val = 2usize.pow(i as u32); + let (postfix, constant) = size_to_category(order_val); + ui.label(format!( + "~{}{}: {}", + order_val / constant, + postfix, + order.load(Ordering::Relaxed) + )); + } + }); + }); + Ok(()) +} + fn debug_ui_world_tree_view( mut contexts: EguiContexts, entities: Query>, archetypes: &Archetypes, components: &Components, - cmds: Commands, mut ui_state: ResMut, ) -> Result { egui::Window::new("World View") - .open(&mut ui_state.log_window_open) + .open(&mut ui_state.world_tree_view_open) .show(contexts.ctx_mut()?, |ui| { ScrollArea::vertical().show(ui, |ui| { Grid::new("World Grid") diff --git a/engine-core/src/ephemeral_pool.rs b/engine-core/src/ephemeral_pool.rs index 59d9000..64536ec 100644 --- a/engine-core/src/ephemeral_pool.rs +++ b/engine-core/src/ephemeral_pool.rs @@ -1,6 +1,6 @@ use std::{alloc::Allocator, io}; -use memmap2::{MmapMut, MmapRaw}; +use memmap2::MmapMut; use thiserror::Error; #[derive(Error, Debug)] @@ -22,12 +22,12 @@ unsafe impl Allocator for EphemralPoolAllocatorUnit { fn allocate( &self, - layout: std::alloc::Layout, + _layout: std::alloc::Layout, ) -> Result, std::alloc::AllocError> { todo!() } - unsafe fn deallocate(&self, ptr: std::ptr::NonNull, layout: std::alloc::Layout) { + unsafe fn deallocate(&self, _ptr: std::ptr::NonNull, _layout: std::alloc::Layout) { todo!() } } diff --git a/engine-core/src/global_allocator.rs b/engine-core/src/global_allocator.rs new file mode 100644 index 0000000..9842292 --- /dev/null +++ b/engine-core/src/global_allocator.rs @@ -0,0 +1,74 @@ +#[cfg(debug_assertions)] +use std::sync::atomic::AtomicUsize; +use std::{ + alloc::{GlobalAlloc, System}, + ptr::null_mut, + sync::atomic::{AtomicPtr, Ordering::Relaxed}, +}; + +struct AllocatorHandler { + prim_entry: AtomicPtr, +} + +struct FreeBlockHeader { + size: usize, + next: AtomicPtr, +} + +const INITIAL_POOL_SIZE: usize = 0x10; +struct InitialFreePool { + header: FreeBlockHeader, + rest: [u8; INITIAL_POOL_SIZE], +} + +static INITIAL_POOL: InitialFreePool = InitialFreePool { + header: FreeBlockHeader { + size: INITIAL_POOL_SIZE, + next: AtomicPtr::new(null_mut()), + }, + rest: [0; _], +}; + +/* +thread_local! { + static ALLOCATOR_STACK: SmallVec<[15;]> +}*/ + +#[global_allocator] +static GLOBAL_ALLOCATOR_HANDLER: AllocatorHandler = AllocatorHandler { + prim_entry: AtomicPtr::new((&INITIAL_POOL.header) as *const _ as *mut _), +}; + +#[cfg(debug_assertions)] +pub static ALLOCATION_SIZE_ORDER: [AtomicUsize; 64] = unsafe { std::mem::zeroed() }; + +unsafe impl GlobalAlloc for AllocatorHandler { + unsafe fn alloc(&self, layout: std::alloc::Layout) -> *mut u8 { + if let Some(a) = ALLOCATION_SIZE_ORDER.get(layout.size().ilog2() as usize) { + a.fetch_add(1, Relaxed); + } + System.alloc(layout) + } + + unsafe fn dealloc(&self, ptr: *mut u8, layout: std::alloc::Layout) { + if let Some(a) = ALLOCATION_SIZE_ORDER.get(layout.size().ilog2() as usize) { + a.fetch_sub(1, Relaxed); + } + System.dealloc(ptr, layout); + } + unsafe fn alloc_zeroed(&self, layout: std::alloc::Layout) -> *mut u8 { + if let Some(a) = ALLOCATION_SIZE_ORDER.get(layout.size().ilog2() as usize) { + a.fetch_add(1, Relaxed); + } + System.alloc_zeroed(layout) + } + unsafe fn realloc(&self, ptr: *mut u8, layout: std::alloc::Layout, new_size: usize) -> *mut u8 { + if let Some(a) = ALLOCATION_SIZE_ORDER.get(layout.size().ilog2() as usize) { + a.fetch_sub(1, Relaxed); + } + if let Some(a) = ALLOCATION_SIZE_ORDER.get(new_size.ilog2() as usize) { + a.fetch_add(1, Relaxed); + } + System.realloc(ptr, layout, new_size) + } +} diff --git a/engine-core/src/lib.rs b/engine-core/src/lib.rs index 43665ca..cfb132d 100644 --- a/engine-core/src/lib.rs +++ b/engine-core/src/lib.rs @@ -1,4 +1,16 @@ +#![allow(unsafe_op_in_unsafe_fn)] #![feature(allocator_api)] +#![feature(backtrace_frames)] +#![feature(const_trait_impl)] +#![feature(const_default)] +#![feature(const_array)] +#![feature(const_closures)] +#![feature(const_block_items)] +#![feature(const_clone)] +#![feature(const_drop_guard)] +#![feature(const_iter)] +#![feature(const_try)] +#![feature(const_try_residual)] use std::sync::OnceLock; @@ -10,19 +22,19 @@ ecs::{ error::Result, resource::Resource, - schedule::IntoScheduleConfigs, - system::{Commands, IntoSystem, Res, ResMut, ScheduleSystem, System, SystemInput}, + system::{Commands, Res}, }, - input::{common_conditions::input_just_pressed, keyboard::KeyCode}, log::{LogPlugin, info}, }; pub use bevy_egui; -use bevy_egui::{EguiContexts, EguiPlugin, EguiPrimaryContextPass, egui}; +use bevy_egui::EguiPlugin; pub use crossbeam; +pub mod small_vec; use crate::debug::{DebugLogLayer, DebugPlugin}; pub mod debug; pub mod ephemeral_pool; +pub mod global_allocator; pub static EXTERNAL_SYSTEMS_CMDS: OnceLock< crossbeam::channel::Sender Result>>, @@ -82,6 +94,7 @@ pub fn vengine_app() -> App { let mut app = App::new(); + app.add_plugins(VEngine); app } diff --git a/engine-core/src/small_vec.rs b/engine-core/src/small_vec.rs new file mode 100644 index 0000000..8f2129f --- /dev/null +++ b/engine-core/src/small_vec.rs @@ -0,0 +1,23 @@ +use std::{ + alloc::{Allocator, Global}, + array, + mem::MaybeUninit, +}; + +pub struct SmallVec { + inline_storage: [MaybeUninit; N], + + allocator: A, +} + +impl SmallVec { + const fn new() -> Self + where + A: [const] Default, + { + Self { + inline_storage: array::from_fn(const |_| MaybeUninit::uninit()), + allocator: A::default(), + } + } +} diff --git a/engine-testing/Cargo.toml b/engine-testing/Cargo.toml index b994660..c8c553a 100644 --- a/engine-testing/Cargo.toml +++ b/engine-testing/Cargo.toml @@ -5,3 +5,4 @@ [dependencies] engine-core = {path = "../engine-core"} +memmap2 = "0.9.11" diff --git a/engine-testing/src/main.rs b/engine-testing/src/main.rs index a39c16b..0a0a460 100644 --- a/engine-testing/src/main.rs +++ b/engine-testing/src/main.rs @@ -3,7 +3,10 @@ bevy_egui::EguiPrimaryContextPass, vengine_app, }; +use memmap2::{MmapMut, MmapRaw}; fn main() { + let mmap: MmapRaw = MmapMut::map_anon(0x100).unwrap().into(); + println!("{:x}", mmap.as_ptr().addr()); vengine_app().run(); } diff --git a/external/rpmalloc-sys/Cargo.toml b/external/rpmalloc-sys/Cargo.toml new file mode 100644 index 0000000..53bdb00 --- /dev/null +++ b/external/rpmalloc-sys/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "rpmalloc-sys" +version = "0.1.0" +edition = "2024" + +[dependencies] +libc = "0.2.186" + +[features] +statistics = [] +override = [] + +[build-dependencies] +bindgen = "0.71.0" +git2 = {version = "0.21.0", features = ["https", "ssh"]} +num_cpus = "1.17.0" diff --git a/external/rpmalloc-sys/build.rs b/external/rpmalloc-sys/build.rs new file mode 100644 index 0000000..d602722 --- /dev/null +++ b/external/rpmalloc-sys/build.rs @@ -0,0 +1,149 @@ +#![feature(path_absolute_method)] + +use std::collections::HashSet; +use std::env; +use std::fs::create_dir_all; +use std::path::PathBuf; +use std::process::Command; + +use git2::Repository; + +fn get_repo(url: &str, refspec: &str) -> Repository { + let name = url.rsplit_once("/").map(|l| l.1).unwrap_or(url); + let path = { + let mut tmp = env::current_dir().expect("invalid working dir"); + tmp.push(".external-store"); + create_dir_all(&tmp).expect("unable to create directory"); + tmp.push(name); + tmp + }; + + let repo = Repository::open(&path) + .unwrap_or_else(|_| Repository::clone(url, &path).expect("failed to clone")); + + repo.remote("origin", url).ok(); + repo.remote_set_url("origin", url).ok(); + let mut remote = repo.find_remote("origin").expect("no origin remote"); + remote + .fetch(&[refspec], None, None) + .expect("unable to fetch from remote"); + let (object, reference) = repo.revparse_ext(refspec).expect("unable to find refspec"); + repo.checkout_tree(&object, None) + .expect("failed to checkout"); + + if let Some(reference) = reference.as_ref() { + repo.set_head(reference.name().expect("unable to get name of reference")) + .ok(); + } else { + repo.set_head_detached(object.id()).ok(); + } + + drop(reference); + drop(remote); + drop(object); + + repo +} + +fn main() { + println!("cargo:rerun-if-env-changed=CARGO_CFG_FEATURE"); + println!("cargo:rerun-if-changes=Cargo.toml"); + println!("cargo:rerun-if-changes=build.rs"); + let featureset: HashSet = env::var("CARGO_CFG_FEATURE") + .unwrap() + .split(",") + .map(|v| v.to_owned()) + .collect(); + if featureset.contains("statistics") { + unsafe { env::set_var("ENABLE_STATISTICS", "1") }; + } + + let repo = get_repo("https://github.com/mjansson/rpmalloc.git", "2.0.1"); + + let path = { + let mut path = PathBuf::from(repo.path()); + path.pop(); + path + }; + + //let tmp_curdir = env::current_dir().expect("unable to get current dir"); + env::set_current_dir(&path).expect("failed to set dir"); + + let os = env::var("CARGO_CFG_TARGET_OS").expect("os not set"); + let arch = env::var("CARGO_CFG_TARGET_ARCH") + .expect("architecture not set") + .replace("_", "-"); + + let cmd = Command::new("python3") + .args(["./configure.py", "--toolchain", "clang", "--lto", "-a"]) + .arg(&arch) + .arg("-t") + .arg(&os) + .args(["-c", "release"]) + .spawn() + .expect("failed to start configure") + .wait() + .expect("failed to run configure"); + + if cmd.code() != Some(0) { + panic!("failed to configure with exit code: {:?}", cmd.code()); + } + + let cmd = Command::new("ninja") + .arg("-j") + .arg(format!("{}", num_cpus::get())) + .spawn() + .expect("failed to spawn ninja") + .wait() + .expect("failed to wait on ninja"); + + if cmd.code() != Some(0) { + panic!("failed to compile with exit code: {:?}", cmd.code()); + } + + let libpath = { + let mut path = path.clone(); + path.push("lib"); + path.push(&os); + path.push("release"); + path.push(&arch); + path + }; + println!( + "cargo:rustc-link-search={}", + libpath + .absolute() + .unwrap() + .to_str() + .expect("unable to convert path to string") + ); + println!("cargo:rustc-link-lib=rpmalloc"); + let headerpath = { + let mut path = path.clone(); + path.push("rpmalloc"); + path.push("rpmalloc.h"); + path + }; + + let bindings = bindgen::Builder::default().header( + headerpath + .to_str() + .expect("unable to convert path to string"), + ); + + let bindings = if featureset.contains("statistics") { + bindings.clang_arg("-DENABLE_STATISTICS=1") + } else { + bindings + }; + + let bindings = bindings + .parse_callbacks(Box::new(bindgen::CargoCallbacks::new())) + .generate() + .expect("Unable to generate bindings"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + .write_to_file(out_path.join("bindings.rs")) + .expect("Couldn't write bindings!"); +} diff --git a/external/rpmalloc-sys/src/lib.rs b/external/rpmalloc-sys/src/lib.rs new file mode 100644 index 0000000..d8680b9 --- /dev/null +++ b/external/rpmalloc-sys/src/lib.rs @@ -0,0 +1,68 @@ +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] + +use std::ffi::{c_int, c_void}; + +use libc::size_t; + +include!(concat!(env!("OUT_DIR"), "/bindings.rs")); +#[cfg(feature = "override")] +#[allow(unsafe_op_in_unsafe_fn)] +mod set_up_statics { + use super::*; + /* + #[unsafe(no_mangle)] + unsafe extern "C" fn malloc(size: size_t) -> *mut c_void { + rpmalloc(size) + } + #[unsafe(no_mangle)] + unsafe extern "C" fn calloc(num: size_t, size: size_t) -> *mut c_void { + rpcalloc(num, size) + } + #[unsafe(no_mangle)] + unsafe extern "C" fn posix_memalign( + ptr: *mut *mut c_void, + alignment: size_t, + size: size_t, + ) -> c_int { + rpposix_memalign(ptr, alignment, size) + } + #[unsafe(no_mangle)] + unsafe extern "C" fn aligned_alloc(alignment: size_t, size: size_t) -> *mut c_void { + rpaligned_alloc(alignment, size) + } + #[unsafe(no_mangle)] + unsafe extern "C" fn realloc(ptr: *mut c_void, size: size_t) -> *mut c_void { + rprealloc(ptr, size) + } + #[unsafe(no_mangle)] + unsafe extern "C" fn free(ptr: *mut c_void) { + rpfree(ptr) + } + #[unsafe(no_mangle)] + unsafe extern "C" fn malloc_usable_size(ptr: *const c_void) -> size_t { + rpmalloc_usable_size(ptr as _) + }*/ + unsafe extern "C" { + fn malloc(size: size_t) -> *mut c_void; + fn calloc(num: size_t, size: size_t) -> *mut c_void; + fn posix_memalign(ptr: *mut *mut c_void, alignment: size_t, size: size_t) -> c_int; + fn aligned_alloc(alignment: size_t, size: size_t) -> *mut c_void; + fn realloc(ptr: *mut c_void, size: size_t) -> *mut c_void; + fn free(ptr: *mut c_void); + } + #[used] + static USED_MALLOC: unsafe extern "C" fn(usize) -> *mut c_void = malloc; + #[used] + static USED_CALLOC: unsafe extern "C" fn(usize, usize) -> *mut c_void = calloc; + #[used] + static USED_POSIX_MEMALIGN: unsafe extern "C" fn(*mut *mut c_void, usize, usize) -> c_int = + posix_memalign; + #[used] + static USED_ALIGNED_ALLOC: unsafe extern "C" fn(usize, usize) -> *mut c_void = aligned_alloc; + #[used] + static USED_REALLOC: unsafe extern "C" fn(*mut c_void, usize) -> *mut c_void = realloc; + #[used] + static USED_FREE: unsafe extern "C" fn(*mut c_void) = free; +}