From a9f41f5bcad64daca488ef8b6d79c8f524679359 Mon Sep 17 00:00:00 2001 From: Adam Lassiter Date: Sun, 22 Feb 2026 22:11:23 +0000 Subject: [PATCH] Update to use bevy 0.17.x (#70) * Update to bevy 0.17 * Update magnus 0.8 * Update examples for bevy 0.17 * Update documentation references bevy 0.16 => 0.17 * add some additional ruby installation instructions --------- Co-authored-by: Adam Co-authored-by: Jaroslaw Konik --- Cargo.toml | 10 +- README.md | 1 + book/Cargo.lock | 533 +++++++++++------------ book/src/bevy_support_matrix.md | 1 + book/src/lua/installation.md | 2 +- book/src/rhai/installation.md | 2 +- book/src/ruby/installation.md | 15 +- book/src/workflow/live_reload.md | 4 +- examples/lua/call_function_from_rust.rs | 2 +- examples/lua/function_return_value.rs | 4 +- examples/lua/side_effects.rs | 2 +- examples/rhai/call_function_from_rust.rs | 2 +- examples/rhai/function_return_value.rs | 4 +- examples/rhai/side_effects.rs | 2 +- examples/ruby/call_function_from_rust.rs | 2 +- examples/ruby/function_return_value.rs | 4 +- examples/ruby/side_effects.rs | 2 +- src/callback.rs | 10 +- src/lib.rs | 47 +- src/runtimes/ruby.rs | 18 +- src/systems.rs | 6 +- 21 files changed, 359 insertions(+), 314 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9e78d5b..baa8d90 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "bevy_scriptum" authors = ["Jaroslaw Konik "] -version = "0.9.1" +version = "0.10.0" edition = "2024" license = "MIT OR Apache-2.0" readme = "README.md" @@ -16,14 +16,14 @@ rhai = ["dep:rhai"] ruby = ["dep:magnus", "dep:rb-sys"] [dependencies] -bevy = { default-features = false, version = "0.16", features = ["bevy_asset", "bevy_log"] } +bevy = { default-features = false, version = "0.17", features = ["bevy_asset", "bevy_log"] } serde = "1.0.162" rhai = { version = "1.14.0", features = [ "sync", "internals", "unchecked", ], optional = true } -thiserror = "1.0.40" +thiserror = "1.0.69" anyhow = "1.0.82" tracing = "0.1.40" mlua = { version = "0.9.8", features = [ @@ -31,8 +31,8 @@ mlua = { version = "0.9.8", features = [ "vendored", "send", ], optional = true } -magnus = { version = "0.7.1", optional = true } -rb-sys = { version = "0.9", default-features = false, features = ["link-ruby", "ruby-static"], optional = true } +magnus = { version = "0.8.2", optional = true } +rb-sys = { version = "*", default-features = false, features = ["link-ruby", "ruby-static"], optional = true } crossbeam-channel = "0.5.15" libc = "0.2.172" diff --git a/README.md b/README.md index b073eda..145089e 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,7 @@ The examples live in `examples` directory and their corresponding scripts live i | bevy version | bevy_scriptum version | |--------------|-----------------------| +| 0.17 | 0.10 | | 0.16 | 0.8-0.9 | | 0.15 | 0.7 | | 0.14 | 0.6 | diff --git a/book/Cargo.lock b/book/Cargo.lock index 13a5e66..b5003bc 100644 --- a/book/Cargo.lock +++ b/book/Cargo.lock @@ -64,15 +64,6 @@ version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - [[package]] name = "arrayref" version = "0.3.9" @@ -192,24 +183,33 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bevy" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5cd3b24a5adb7c7378da7b3eea47639877643d11b6b087fc8a8094f2528615" +checksum = "76d3ee8652fe0577fd8a99054e147740850140d530be8e044a9be4e23a3e8a24" dependencies = [ "bevy_internal", ] [[package]] -name = "bevy_app" -version = "0.16.0" +name = "bevy_android" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b6267ac23a9947d5b2725ff047a1e1add70076d85fa9fb73d044ab9bea1f3c" +checksum = "42b2d9435e9fe8d7107bb795a6140277872ad5b992cb3934f8d28cfd11040f6f" +dependencies = [ + "android-activity", +] + +[[package]] +name = "bevy_app" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e4fc5dfe9d1d9b8233e1878353b5e66a3f5910c2131d3abf68f9a4116b2d433" dependencies = [ "bevy_derive", "bevy_ecs", @@ -230,14 +230,15 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0698040d63199391ea77fd02e039630748e3e335c3070c6d932fd96cbf80f5d6" +checksum = "357787dbfaba3f73fd185e15d6df70605bddaa774f2ebbcab1aaa031f21fb6c2" dependencies = [ "async-broadcast", "async-fs", "async-lock", "atomicow", + "bevy_android", "bevy_app", "bevy_asset_macros", "bevy_ecs", @@ -245,7 +246,6 @@ dependencies = [ "bevy_reflect", "bevy_tasks", "bevy_utils", - "bevy_window", "bitflags", "blake3", "crossbeam-channel", @@ -270,9 +270,9 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf8c00b5d532f8e5ac7b49af10602f9f7774a2d522cf0638323b5dfeee7b31c" +checksum = "afa09271d4ca0bf31fda3a9ad57273775d448a05c4046d9367f71d29968d85b4" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -282,9 +282,9 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f626531b9c05c25a758ede228727bd11c2c2c8498ecbed9925044386d525a2a3" +checksum = "f9396b256b366a43d7f61d1f230cdab0a512fb4712cbf7d688f3d6fce4c5ea8a" dependencies = [ "bevy_macro_utils", "quote", @@ -293,25 +293,25 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048a1ff3944a534b8472516866284181eef0a75b6dd4d39b6e5925715e350766" +checksum = "d1cdb0ed0c8423570fbbb7c4fc2719a203dd40928fefff45f76ef0889685a446" dependencies = [ + "atomic-waker", "bevy_app", "bevy_ecs", "bevy_platform", "bevy_tasks", "bevy_time", - "bevy_utils", "const-fnv1a-hash", "log", ] [[package]] name = "bevy_ecs" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e807b5d9aab3bb8dfe47e7a44c9ff088bad2ceefe299b80ac77609a87fe9d4" +checksum = "a7dd5229dd00d00e70ac6b2fc0a139961252f6ce07d3d268cfcac0da86d5bde4" dependencies = [ "arrayvec", "bevy_ecs_macros", @@ -324,12 +324,12 @@ dependencies = [ "bumpalo", "concurrent-queue", "derive_more", - "disqualified", "fixedbitset", "indexmap", "log", "nonmax", "serde", + "slotmap", "smallvec", "thiserror 2.0.12", "variadics_please", @@ -337,9 +337,9 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d7bb98aeb8dd30f36e6a773000c12a891d4f1bee2adc3841ec89cc8eaf54e" +checksum = "c4d83bdd2285af4867e76c691406e0a4b55611b583d0c45b6ac7bcec1b45fd48" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -349,16 +349,15 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763410715714f3d4d2dcdf077af276e2e4ea93fd8081b183d446d060ea95baaa" +checksum = "8ca955b99f4dc2059e9c8574f8d95a5dd5002809fda80d062a94a553c571a467" dependencies = [ "bevy_app", "bevy_ecs", "bevy_math", "bevy_platform", "bevy_reflect", - "bevy_utils", "derive_more", "log", "thiserror 2.0.12", @@ -366,10 +365,11 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "526ffd64c58004cb97308826e896c07d0e23dc056c243b97492e31cdf72e2830" +checksum = "8f5e645f9e1a24c9667c768b6233beaf4e241739d8ca4fbba59435cc27aabad5" dependencies = [ + "bevy_android", "bevy_app", "bevy_asset", "bevy_derive", @@ -389,13 +389,14 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7156df8d2f11135cf71c03eb4c11132b65201fd4f51648571e59e39c9c9ee2f6" +checksum = "b1a2d4ea086ac4663ab9dfb056c7b85eee39e18f7e3e9a4ae6e39897eaa155c5" dependencies = [ "android_log-sys", "bevy_app", "bevy_ecs", + "bevy_platform", "bevy_utils", "tracing", "tracing-log", @@ -406,24 +407,23 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2473db70d8785b5c75d6dd951a2e51e9be2c2311122db9692c79c9d887517b" +checksum = "62d984f9f8bd0f0d9fb020492a955e641e30e7a425f3588bf346cb3e61fec3c3" dependencies = [ "parking_lot", "proc-macro2", "quote", "syn", - "toml_edit", + "toml_edit 0.23.10+spec-1.0.0", ] [[package]] name = "bevy_math" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a3a926d02dc501c6156a047510bdb538dcb1fa744eeba13c824b73ba88de55" +checksum = "5fa74ae5d968749cc073da991757d3c7e3504ac6dbaac5f8c2a54b9d19b0b7ed" dependencies = [ - "approx", "bevy_reflect", "derive_more", "glam", @@ -439,33 +439,36 @@ dependencies = [ [[package]] name = "bevy_platform" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704db2c11b7bc31093df4fbbdd3769f9606a6a5287149f4b51f2680f25834ebc" +checksum = "4691af6d7cfd1b5deb2fc926a43a180a546cdc3fe1e5a013fcee60db9bb2c81f" dependencies = [ - "cfg-if", "critical-section", "foldhash", - "getrandom 0.2.16", + "futures-channel", + "getrandom 0.3.3", "hashbrown", + "js-sys", "portable-atomic", "portable-atomic-util", "serde", - "spin 0.9.8", + "spin 0.10.0", + "wasm-bindgen", + "wasm-bindgen-futures", "web-time", ] [[package]] name = "bevy_ptr" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f1275dfb4cfef4ffc90c3fa75408964864facf833acc932413d52aa5364ba4" +checksum = "17d24d7906c7de556033168b3485de36c59049fbaef0c2c44c715a23e0329b10" [[package]] name = "bevy_reflect" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "607ebacc31029cf2f39ac330eabf1d4bc411b159528ec08dbe6b0593eaccfd41" +checksum = "b5472b91928c0f3e4e3988c0d036b00719f19520f53a0c3f8c2af72f00e693c5" dependencies = [ "assert_type_match", "bevy_platform", @@ -489,11 +492,12 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf35e45e4eb239018369f63f2adc2107a54c329f9276d020e01eee1625b0238b" +checksum = "083784255162fa39960aa3cf3c23af0e515db2daa7f2e796ae34df993f4d3f6c" dependencies = [ "bevy_macro_utils", + "indexmap", "proc-macro2", "quote", "syn", @@ -502,11 +506,12 @@ dependencies = [ [[package]] name = "bevy_scriptum" -version = "0.8.1" +version = "0.10.0" dependencies = [ "anyhow", "bevy", "crossbeam-channel", + "libc", "magnus", "mlua", "rb-sys", @@ -525,29 +530,27 @@ dependencies = [ [[package]] name = "bevy_tasks" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444c450b65e108855f42ecb6db0c041a56ea7d7f10cc6222f0ca95e9536a7d19" +checksum = "bcbbfa5a58a16c4228434d3018c23fde3d78dcd76ec5f5b2b482a21f4b158dd3" dependencies = [ + "async-channel", "async-executor", "async-task", "atomic-waker", "bevy_platform", - "cfg-if", "crossbeam-queue", "derive_more", - "futures-channel", "futures-lite", "heapless", "pin-project", - "wasm-bindgen-futures", ] [[package]] name = "bevy_time" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456369ca10f8e039aaf273332744674844827854833ee29e28f9e161702f2f55" +checksum = "32835c3dbe082fbbe7d4f2f37f655073421f2882d4320ac2d59f922474260de4" dependencies = [ "bevy_app", "bevy_ecs", @@ -558,9 +561,9 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8479cdd5461246943956a7c8347e4e5d6ff857e57add889fb50eee0b5c26ab48" +checksum = "b41fabfeaa53f51ff5ccf4d87e66836293159d50d21f6d3e16c93efb7c30f969" dependencies = [ "bevy_app", "bevy_ecs", @@ -574,34 +577,15 @@ dependencies = [ [[package]] name = "bevy_utils" -version = "0.16.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2da3b3c1f94dadefcbe837aaa4aa119fcea37f7bdc5307eb05b4ede1921e24" +checksum = "789d04f88c764877a4552e07745b402dbc45f5d0545e6d102558f2f1752a1d89" dependencies = [ "bevy_platform", + "disqualified", "thread_local", ] -[[package]] -name = "bevy_window" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d83327cc5584da463d12b7a88ddb97f9e006828832287e1564531171fffdeb4" -dependencies = [ - "android-activity", - "bevy_app", - "bevy_ecs", - "bevy_input", - "bevy_math", - "bevy_platform", - "bevy_reflect", - "bevy_utils", - "log", - "raw-window-handle", - "serde", - "smol_str", -] - [[package]] name = "bindgen" version = "0.69.5" @@ -622,26 +606,6 @@ dependencies = [ "syn", ] -[[package]] -name = "bindgen" -version = "0.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn", -] - [[package]] name = "bitflags" version = "2.9.1" @@ -698,6 +662,20 @@ name = "bytemuck" version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "byteorder" @@ -822,6 +800,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "critical-section" version = "1.2.0" @@ -870,21 +857,23 @@ dependencies = [ [[package]] name = "derive_more" -version = "1.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "1.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ + "convert_case", "proc-macro2", "quote", + "rustc_version", "syn", "unicode-xid", ] @@ -974,9 +963,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures-channel" @@ -1019,10 +1008,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -1032,27 +1019,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] name = "glam" -version = "0.29.3" +version = "0.30.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8babf46d4c1c9d92deac9f7be466f76dfc4482b6452fc5024b5e8daf6ffeb3ee" +checksum = "19fc433e8437a212d1b6f1e68c7824af3aed907da60afa994e7f542d18d12aa9" dependencies = [ "bytemuck", "libm", - "serde", + "serde_core", ] [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "hash32" @@ -1065,12 +1054,13 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "equivalent", "serde", + "serde_core", ] [[package]] @@ -1086,9 +1076,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown", @@ -1112,15 +1102,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.14.0" @@ -1192,12 +1173,12 @@ checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libloading" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a793df0d7afeac54f95b471d3af7f0d4fb975699f972341a4b76988d49cdf0c" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1230,18 +1211,18 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "lua-src" -version = "547.0.0" +version = "550.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edaf29e3517b49b8b746701e5648ccb5785cde1c119062cbabbc5d5cd115e42" +checksum = "e836dc8ae16806c9bdcf42003a88da27d163433e3f9684c52f0301258004a4fb" dependencies = [ "cc", ] [[package]] name = "luajit-src" -version = "210.5.12+a4f56a4" +version = "210.6.6+707c12b" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a8e7962a5368d5f264d045a5a255e90f9aa3fc1941ae15a8d2940d42cac671" +checksum = "a86cc925d4053d0526ae7f5bc765dbd0d7a5d1a63d43974f4966cb349ca63295" dependencies = [ "cc", "which", @@ -1249,9 +1230,9 @@ dependencies = [ [[package]] name = "magnus" -version = "0.7.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d87ae53030f3a22e83879e666cb94e58a7bdf31706878a0ba48752994146dab" +checksum = "3b36a5b126bbe97eb0d02d07acfeb327036c6319fd816139a49824a83b7f9012" dependencies = [ "magnus-macros", "rb-sys", @@ -1261,9 +1242,9 @@ dependencies = [ [[package]] name = "magnus-macros" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3" +checksum = "47607461fd8e1513cb4f2076c197d8092d921a1ea75bd08af97398f593751892" dependencies = [ "proc-macro2", "quote", @@ -1272,11 +1253,11 @@ dependencies = [ [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -1293,25 +1274,29 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mlua" -version = "0.9.9" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d111deb18a9c9bd33e1541309f4742523bfab01d276bfa9a27519f6de9c11dc7" +checksum = "ccd36acfa49ce6ee56d1307a061dd302c564eee757e6e4cd67eb4f7204846fab" dependencies = [ "bstr", + "either", + "libc", "mlua-sys", "num-traits", - "once_cell", + "parking_lot", "rustc-hash 2.1.1", + "rustversion", ] [[package]] name = "mlua-sys" -version = "0.6.8" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380c1f7e2099cafcf40e51d3a9f20a346977587aa4d012eae1f043149a728a93" +checksum = "0f1c3a7fc7580227ece249fd90aa2fa3b39eb2b49d3aec5e103b3e85f2c3dfc8" dependencies = [ "cc", "cfg-if", + "libc", "lua-src", "luajit-src", "pkg-config", @@ -1385,12 +1370,11 @@ checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "overload", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -1433,12 +1417,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "parking" version = "2.2.1" @@ -1535,23 +1513,13 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "prettyplease" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" -dependencies = [ - "proc-macro2", - "syn", -] - [[package]] name = "proc-macro-crate" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit", + "toml_edit 0.22.26", ] [[package]] @@ -1580,20 +1548,19 @@ checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" [[package]] name = "rand" -version = "0.8.5" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" -version = "0.3.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", "rand_core", @@ -1601,45 +1568,39 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.3.3", ] [[package]] name = "rand_distr" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" dependencies = [ "num-traits", "rand", ] -[[package]] -name = "raw-window-handle" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" - [[package]] name = "rb-sys" -version = "0.9.115" +version = "0.9.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99ca6726be0eca74687047fed7dcbc2d509571f3962e190c343ac1eb40e482b3" +checksum = "c85c4188462601e2aa1469def389c17228566f82ea72f137ed096f21591bc489" dependencies = [ "rb-sys-build", ] [[package]] name = "rb-sys-build" -version = "0.9.115" +version = "0.9.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f2390cfc87b7513656656faad6567291e581542d3ec41dd0a2bf381896e0880" +checksum = "568068db4102230882e6d4ae8de6632e224ca75fe5970f6e026a04e91ed635d3" dependencies = [ - "bindgen 0.69.5", + "bindgen", "lazy_static", "proc-macro2", "quote", @@ -1650,9 +1611,9 @@ dependencies = [ [[package]] name = "rb-sys-env" -version = "0.1.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35802679f07360454b418a5d1735c89716bde01d35b1560fc953c1415a0b3bb" +checksum = "cca7ad6a7e21e72151d56fe2495a259b5670e204c3adac41ee7ef676ea08117a" [[package]] name = "redox_syscall" @@ -1665,23 +1626,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] @@ -1692,15 +1644,9 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - [[package]] name = "regex-syntax" version = "0.8.5" @@ -1738,14 +1684,15 @@ dependencies = [ [[package]] name = "ron" -version = "0.8.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" dependencies = [ "base64", "bitflags", "serde", "serde_derive", + "unicode-ident", ] [[package]] @@ -1760,6 +1707,15 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "1.0.7" @@ -1794,6 +1750,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + [[package]] name = "seq-macro" version = "0.3.6" @@ -1802,18 +1764,28 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -1831,9 +1803,9 @@ dependencies = [ [[package]] name = "shell-words" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" [[package]] name = "shlex" @@ -1850,6 +1822,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.15.0" @@ -1884,9 +1865,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.8" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" dependencies = [ "portable-atomic", ] @@ -1991,6 +1972,15 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +[[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_edit" version = "0.22.26" @@ -1998,15 +1988,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", - "toml_datetime", + "toml_datetime 0.6.9", + "winnow", +] + +[[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", +] + +[[package]] +name = "toml_parser" +version = "1.0.9+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +dependencies = [ "winnow", ] [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -2015,9 +2026,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -2026,9 +2037,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -2047,29 +2058,26 @@ dependencies = [ [[package]] name = "tracing-oslog" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528bdd1f0e27b5dd9a4ededf154e824b0532731e4af73bb531de46276e0aab1e" +checksum = "d76902d2a8d5f9f55a81155c08971734071968c90f2d9bfe645fe700579b2950" dependencies = [ - "bindgen 0.70.1", "cc", "cfg-if", - "once_cell", - "parking_lot", "tracing-core", "tracing-subscriber", ] [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -2101,6 +2109,12 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -2260,45 +2274,30 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "24.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" +checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2" dependencies = [ "bitflags", + "bytemuck", "js-sys", "log", "serde", + "thiserror 2.0.12", "web-sys", ] [[package]] name = "which" -version = "7.0.3" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d643ce3fd3e5b54854602a080f34fb10ab75e0b813ee32d00ca2b44fa74762" +checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" dependencies = [ - "either", "env_home", "rustix", "winsafe", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" version = "0.1.9" @@ -2309,10 +2308,10 @@ dependencies = [ ] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-sys" @@ -2455,9 +2454,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] diff --git a/book/src/bevy_support_matrix.md b/book/src/bevy_support_matrix.md index abb3935..aba205a 100644 --- a/book/src/bevy_support_matrix.md +++ b/book/src/bevy_support_matrix.md @@ -2,6 +2,7 @@ | bevy version | bevy_scriptum version | | ------------ | --------------------- | +| 0.17 | 0.10 | | 0.16 | 0.8-0.9 | | 0.15 | 0.7 | | 0.14 | 0.6 | diff --git a/book/src/lua/installation.md b/book/src/lua/installation.md index aa382d3..f5ca8fc 100644 --- a/book/src/lua/installation.md +++ b/book/src/lua/installation.md @@ -4,7 +4,7 @@ Add the following to your `Cargo.toml`: ```toml [dependencies] -bevy = "0.16" +bevy = "0.17" bevy_scriptum = { version = "0.9", features = ["lua"] } ``` diff --git a/book/src/rhai/installation.md b/book/src/rhai/installation.md index cf47c11..c0fce8e 100644 --- a/book/src/rhai/installation.md +++ b/book/src/rhai/installation.md @@ -4,7 +4,7 @@ Add the following to your `Cargo.toml`: ```toml [dependencies] -bevy = "0.16" +bevy = "0.17" bevy_scriptum = { version = "0.9", features = ["rhai"] } ``` diff --git a/book/src/ruby/installation.md b/book/src/ruby/installation.md index 33449b2..11a7c64 100644 --- a/book/src/ruby/installation.md +++ b/book/src/ruby/installation.md @@ -13,9 +13,20 @@ After installing `rbenv` along with its `ruby-build` plugin you can build and install a Ruby installation that will work with `bevy_scriptum` by executing: ```sh -CC=clang rbenv install 3.4.4 +CC=clang RUBY_CONFIGURE_OPTS="--disable-shared" rbenv install 3.4.4 ``` +Before building make sure you are using the correct Ruby version. +It can be done for example by executing `which ruby`. +Output should be similar to `/home/$USER/.rbenv/shims/ruby`. +If the version is not correct then refer to `rbenv` manual or documentation +relevant for your method of installation to switch to correct Ruby. +To set Ruby version for current shell for example `rbenv shell 3.4.4` can be +used. + +If ruby-static installation can't be found its advisable to run `cargo clean` +before building as `rb-sys` may have cached an incorrect Ruby version. + Above assumes that you also have `clang` installed on your system. For `clang` installation instruction consult your OS vendor provided documentation or [clang official webiste](https://clang.llvm.org). @@ -34,7 +45,7 @@ Add the following to your `Cargo.toml`: ```toml [dependencies] -bevy = "0.16" +bevy = "0.17" bevy_scriptum = { version = "0.9", features = ["ruby"] } ``` diff --git a/book/src/workflow/live_reload.md b/book/src/workflow/live_reload.md index 5bd90bf..bbfe17d 100644 --- a/book/src/workflow/live_reload.md +++ b/book/src/workflow/live_reload.md @@ -6,7 +6,7 @@ To enable live reload it should be enough to enable `file-watcher` feature within bevy dependency in `Cargo.toml` ```toml -bevy = { version = "0.16", features = ["file_watcher"] } +bevy = { version = "0.17", features = ["file_watcher"] } ``` ## Init-teardown pattern @@ -81,7 +81,7 @@ fn update( fn teardown( - mut ev_asset: EventReader>, + mut ev_asset: MessageReader>, scripting_runtime: ResMut, mut scripted_entities: Query<(Entity, &mut LuaScriptData)>, ) { diff --git a/examples/lua/call_function_from_rust.rs b/examples/lua/call_function_from_rust.rs index 14b0386..9bfde25 100644 --- a/examples/lua/call_function_from_rust.rs +++ b/examples/lua/call_function_from_rust.rs @@ -8,7 +8,7 @@ fn main() { .add_systems(Startup, startup) .add_systems(Update, call_lua_on_update_from_rust) .add_scripting::(|runtime| { - runtime.add_function(String::from("quit"), |mut exit: EventWriter| { + runtime.add_function(String::from("quit"), |mut exit: MessageWriter| { exit.write(AppExit::Success); }); }) diff --git a/examples/lua/function_return_value.rs b/examples/lua/function_return_value.rs index e2393bc..1de4b1c 100644 --- a/examples/lua/function_return_value.rs +++ b/examples/lua/function_return_value.rs @@ -8,7 +8,7 @@ fn main() { .add_systems(Startup, startup) .add_systems(Update, call_lua_on_update_from_rust) .add_scripting::(|runtime| { - runtime.add_function(String::from("quit"), |mut exit: EventWriter| { + runtime.add_function(String::from("quit"), |mut exit: MessageWriter| { exit.write(AppExit::Success); }); }) @@ -24,7 +24,7 @@ fn startup(mut commands: Commands, assets_server: Res) { fn call_lua_on_update_from_rust( mut scripted_entities: Query<(Entity, &mut LuaScriptData)>, scripting_runtime: ResMut, - mut exit: EventWriter, + mut exit: MessageWriter, ) { for (entity, mut script_data) in &mut scripted_entities { let val = scripting_runtime diff --git a/examples/lua/side_effects.rs b/examples/lua/side_effects.rs index 2bf4a86..8fc5ce6 100644 --- a/examples/lua/side_effects.rs +++ b/examples/lua/side_effects.rs @@ -33,7 +33,7 @@ fn startup(mut commands: Commands, assets_server: Res) { ),)); } -fn print_entity_names_and_quit(query: Query<&Name>, mut exit: EventWriter) { +fn print_entity_names_and_quit(query: Query<&Name>, mut exit: MessageWriter) { if !query.is_empty() { for e in &query { println!("{}", e); diff --git a/examples/rhai/call_function_from_rust.rs b/examples/rhai/call_function_from_rust.rs index 06f7810..3edf5f3 100644 --- a/examples/rhai/call_function_from_rust.rs +++ b/examples/rhai/call_function_from_rust.rs @@ -8,7 +8,7 @@ fn main() { .add_systems(Startup, startup) .add_systems(Update, call_rhai_on_update_from_rust) .add_scripting::(|runtime| { - runtime.add_function(String::from("quit"), |mut exit: EventWriter| { + runtime.add_function(String::from("quit"), |mut exit: MessageWriter| { exit.write(AppExit::Success); }); }) diff --git a/examples/rhai/function_return_value.rs b/examples/rhai/function_return_value.rs index f5072e9..93759b0 100644 --- a/examples/rhai/function_return_value.rs +++ b/examples/rhai/function_return_value.rs @@ -8,7 +8,7 @@ fn main() { .add_systems(Startup, startup) .add_systems(Update, call_rhai_on_update_from_rust) .add_scripting::(|runtime| { - runtime.add_function(String::from("quit"), |mut exit: EventWriter| { + runtime.add_function(String::from("quit"), |mut exit: MessageWriter| { exit.write(AppExit::Success); }); }) @@ -24,7 +24,7 @@ fn startup(mut commands: Commands, assets_server: Res) { fn call_rhai_on_update_from_rust( mut scripted_entities: Query<(Entity, &mut RhaiScriptData)>, scripting_runtime: ResMut, - mut exit: EventWriter, + mut exit: MessageWriter, ) { for (entity, mut script_data) in &mut scripted_entities { let val = scripting_runtime diff --git a/examples/rhai/side_effects.rs b/examples/rhai/side_effects.rs index f91ca3b..cd969e7 100644 --- a/examples/rhai/side_effects.rs +++ b/examples/rhai/side_effects.rs @@ -33,7 +33,7 @@ fn startup(mut commands: Commands, assets_server: Res) { ),)); } -fn print_entity_names_and_quit(query: Query<&Name>, mut exit: EventWriter) { +fn print_entity_names_and_quit(query: Query<&Name>, mut exit: MessageWriter) { if !query.is_empty() { for e in &query { println!("{}", e); diff --git a/examples/ruby/call_function_from_rust.rs b/examples/ruby/call_function_from_rust.rs index 039170e..b015793 100644 --- a/examples/ruby/call_function_from_rust.rs +++ b/examples/ruby/call_function_from_rust.rs @@ -8,7 +8,7 @@ fn main() { .add_systems(Startup, startup) .add_systems(Update, call_ruby_on_update_from_rust) .add_scripting::(|runtime| { - runtime.add_function(String::from("quit"), |mut exit: EventWriter| { + runtime.add_function(String::from("quit"), |mut exit: MessageWriter| { exit.write(AppExit::Success); }); }) diff --git a/examples/ruby/function_return_value.rs b/examples/ruby/function_return_value.rs index 088779a..1379dcb 100644 --- a/examples/ruby/function_return_value.rs +++ b/examples/ruby/function_return_value.rs @@ -10,7 +10,7 @@ fn main() { .add_systems(Startup, startup) .add_systems(Update, call_lua_on_update_from_rust) .add_scripting::(|runtime| { - runtime.add_function(String::from("quit"), |mut exit: EventWriter| { + runtime.add_function(String::from("quit"), |mut exit: MessageWriter| { exit.write(AppExit::Success); }); }) @@ -26,7 +26,7 @@ fn startup(mut commands: Commands, assets_server: Res) { fn call_lua_on_update_from_rust( mut scripted_entities: Query<(Entity, &mut RubyScriptData)>, scripting_runtime: ResMut, - mut exit: EventWriter, + mut exit: MessageWriter, ) { for (entity, mut script_data) in &mut scripted_entities { let val = scripting_runtime diff --git a/examples/ruby/side_effects.rs b/examples/ruby/side_effects.rs index 85c8564..8da6260 100644 --- a/examples/ruby/side_effects.rs +++ b/examples/ruby/side_effects.rs @@ -33,7 +33,7 @@ fn startup(mut commands: Commands, assets_server: Res) { ),)); } -fn print_entity_names_and_quit(query: Query<&Name>, mut exit: EventWriter) { +fn print_entity_names_and_quit(query: Query<&Name>, mut exit: MessageWriter) { if !query.is_empty() { for e in &query { println!("{}", e); diff --git a/src/callback.rs b/src/callback.rs index f19a898..c4b6615 100644 --- a/src/callback.rs +++ b/src/callback.rs @@ -1,4 +1,4 @@ -use bevy::prelude::*; +use bevy::{ecs::system::RunSystemError, prelude::*}; use core::any::TypeId; use std::sync::{Arc, Mutex}; @@ -39,7 +39,7 @@ impl CallbackSystem { &mut self, call: &FunctionCallEvent, world: &mut World, - ) -> R::Value { + ) -> Result { self.system.run(call.params.clone(), world) } } @@ -74,7 +74,9 @@ where let mut inner_system = IntoSystem::into_system(self); inner_system.initialize(world); let system_fn = move |_args: In>, world: &mut World| { - let result = inner_system.run((), world); + let result = inner_system + .run((), world) + .expect("Callback system failed to run"); inner_system.apply_deferred(world); let mut runtime = world.get_resource_mut::().expect("No runtime resource"); @@ -112,7 +114,7 @@ macro_rules! impl_tuple { ) }); - let result = inner_system.run(args, world); + let result = inner_system.run(args, world).expect("Callback system failed to run"); inner_system.apply_deferred(world); let mut runtime = world.get_resource_mut::().expect("No runtime resource"); diff --git a/src/lib.rs b/src/lib.rs index c1375b8..7aa56e6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -176,6 +176,7 @@ //! //! | bevy version | bevy_scriptum version | //! |--------------|-----------------------| +//! | 0.17 | 0.10 | //! | 0.16 | 0.8-0.9 | //! | 0.15 | 0.7 | //! | 0.14 | 0.6 | @@ -280,6 +281,12 @@ pub enum ScriptingError { NoSettingsResource, } +#[derive(SystemSet, Debug, Hash, PartialEq, Eq, Clone)] +pub enum ScriptSystemSet { + Reload, + Process, +} + /// Trait that represents a scripting runtime/engine. In practice it is /// implemented for a scripint language interpreter and the implementor provides /// function implementations for calling and registering functions within the interpreter. @@ -433,6 +440,14 @@ impl<'a, R: Runtime> ScriptingRuntimeBuilder<'a, R> { } } +#[derive(SystemSet, Debug, Hash, PartialEq, Eq, Clone)] +pub enum ScriptSystems { + Reload, + InitCallbacks, + ProcessNewScripts, + ProcessCalls, +} + impl BuildScriptingRuntime for App { /// Adds a scripting runtime. Registers required bevy systems that take /// care of processing and running the scripts. @@ -441,13 +456,14 @@ impl BuildScriptingRuntime for App { if R::needs_rdynamic_linking() && !is_rdynamic_linking() { panic!( "Missing `-rdynamic`: symbol resolution failed.\n\ - It is needed by {:?}.\n\ - Please add `println!(\"cargo:rustc-link-arg=-rdynamic\");` to your build.rs\n\ - or set `RUSTFLAGS=\"-C link-arg=-rdynamic\"`.", + It is needed by {:?}.\n\ + Please add `println!(\"cargo:rustc-link-arg=-rdynamic\");` to your build.rs\n\ + or set `RUSTFLAGS=\"-C link-arg=-rdynamic\"`.", std::any::type_name::() ); } + // Insert the runtime schedule after Update self.world_mut() .resource_mut::() .insert_after(Update, R::Schedule::default()); @@ -457,22 +473,35 @@ impl BuildScriptingRuntime for App { .init_asset::() .init_resource::>() .insert_resource(R::default()) + .configure_sets( + R::Schedule::default(), + ( + ScriptSystems::Reload, + ScriptSystems::InitCallbacks.after(ScriptSystems::Reload), + ScriptSystems::ProcessNewScripts.after(ScriptSystems::InitCallbacks), + ScriptSystems::ProcessCalls.after(ScriptSystems::ProcessNewScripts), + ), + ) .add_systems( R::Schedule::default(), ( - reload_scripts::, - process_calls:: + reload_scripts::.in_set(ScriptSystems::Reload), + init_callbacks:: .pipe(log_errors) - .after(process_new_scripts::), - init_callbacks::.pipe(log_errors), + .in_set(ScriptSystems::InitCallbacks) + .after(ScriptSystems::Reload), process_new_scripts:: .pipe(log_errors) - .after(init_callbacks::), + .in_set(ScriptSystems::ProcessNewScripts) + .after(ScriptSystems::InitCallbacks), + process_calls:: + .pipe(log_errors) + .in_set(ScriptSystems::ProcessCalls) + .after(ScriptSystems::ProcessNewScripts), ), ); let runtime = ScriptingRuntimeBuilder::::new(self.world_mut()); - f(runtime); self diff --git a/src/runtimes/ruby.rs b/src/runtimes/ruby.rs index 1ccccdd..6ccd1d4 100644 --- a/src/runtimes/ruby.rs +++ b/src/runtimes/ruby.rs @@ -171,7 +171,7 @@ fn then(r_self: magnus::Value) -> magnus::Value { } .as_value(), )) - .into_value() + .into_value_with(&ruby) } #[derive(Clone, Debug)] @@ -448,11 +448,11 @@ impl Runtime for RubyRuntime { let result = f( (), args.iter() - .map(|arg| RubyValue::new(arg.into_value())) + .map(|arg| RubyValue::new(arg.into_value_with(&ruby))) .collect(), ) .expect("failed to call callback"); - result.into_value() + result.into_value_with(&ruby) } self.execute_in_thread(Box::new(move |ruby: &Ruby| { @@ -527,8 +527,8 @@ impl FromRuntimeValueWithEngine<'_, RubyRuntime> for T { } impl IntoRuntimeValueWithEngine<'_, T, RubyRuntime> for T { - fn into_runtime_value_with_engine(value: T, _engine: &magnus::Ruby) -> RubyValue { - RubyValue::new(value.into_value()) + fn into_runtime_value_with_engine(value: T, engine: &magnus::Ruby) -> RubyValue { + RubyValue::new(value.into_value_with(engine)) } } @@ -539,9 +539,9 @@ impl FuncArgs<'_, RubyValue, RubyRuntime> for () { } impl FuncArgs<'_, RubyValue, RubyRuntime> for Vec { - fn parse(self, _engine: &magnus::Ruby) -> Vec { + fn parse(self, engine: &magnus::Ruby) -> Vec { self.into_iter() - .map(|x| RubyValue::new(x.into_value())) + .map(|x| RubyValue::new(x.into_value_with(engine))) .collect() } } @@ -562,9 +562,9 @@ macro_rules! impl_tuple { impl<'a, $($t: IntoValue,)+> FuncArgs<'a, RubyValue, RubyRuntime> for ($($t,)+) { - fn parse(self, _engine: &'a magnus::Ruby) -> Vec { + fn parse(self, engine: &'a magnus::Ruby) -> Vec { vec![ - $(RubyValue::new(self.$idx.into_value()), )+ + $(RubyValue::new(self.$idx.into_value_with(engine)), )+ ] } } diff --git a/src/systems.rs b/src/systems.rs index 7cbf81b..1154d67 100644 --- a/src/systems.rs +++ b/src/systems.rs @@ -15,7 +15,7 @@ use super::components::Script; /// Reloads scripts when they are modified. pub(crate) fn reload_scripts( mut commands: Commands, - mut ev_asset: EventReader>, + mut ev_asset: MessageReader>, mut scripts: Query<(Entity, &mut Script)>, ) { for ev in ev_asset.read() { @@ -149,7 +149,9 @@ pub(crate) fn process_calls(world: &mut World) -> Result<(), Scripti .system .lock() .expect("Failed to lock callback system mutex"); - let val = system.call(&call, world); + let val = system + .call(&call, world) + .expect("Callback system call failed"); let mut runtime = world .get_resource_mut::() .ok_or(ScriptingError::NoRuntimeResource)?;