diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d91457df6..e9444d38d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## [0.9.0-alpha.2](https://github.com/makspll/bevy_mod_scripting/compare/v0.9.0-alpha.1...v0.9.0-alpha.2) - 2025-01-05 + +### Added + +- Dynamic function registry and dynamic function calls +- `bevy_mod_scripting_functions` crate added, containing built-in dynamic functions callable from scripts +- Lua dynamic function call mechanism +- Dynamic functions automatically register their argument and return types with the type registry +- Added set of `IntoScript`, `FromScript`, `IntoScriptRef`, and `FromScriptRef` traits +- Added `ScriptAllocator` to manage lifetimes of non-world stored types (such as `Vec2` created via scripts etc..) +- Added `AccessMap` dynamic safety mechanism, every access is now small, and does not require mutexing the entire world + +### Changed +- Complete plugin re-write, expect breakages everywhere +- `prelude` imports removed +- `ScriptValue` abstraction replacing the concept of a generic event argument type. Each event payload is a `ScriptValue` +- `world` is now a static reference, `world:function` calls must be replaced with `world.function` calls +- Documentation generation was temporarilly removed +- `Teal` and `Tealr` was removed +- `bevy_mod_scripting_derive`, `bevy_mod_scripting_common` and other derive crates as well as `bevy_event_priority` and `bevy_script_api` crates were removed +- Temporarilly suspended full rhai and rune support until next non-alpha release +- Removed Deferred reflection mechanism +- Added `mdbook` documentation book +- Removed `APIProvider` traits in favour of various configuration resources +- Specific registration of `Vec` and `Option` via `register_lua_vec` etc.. is no longer necessary, reflection *just* works on all registered types +- Expanded core library of `ReflectReference` functions +- Removed `LuaProxyable` abstraction and all custom type data, everything is now driven via normal reflection +- All references are now represented via either references to the world or to a `ScriptAllocator` +- Accessing anything in the world requires claiming the appropriate `AccessMap` locks to do so safely (which is abstracted away with various utility functions) +- And much more + ## [0.8.0-alpha.2](https://github.com/makspll/bevy_mod_scripting/compare/v0.8.0-alpha.1...v0.8.0-alpha.2) - 2024-12-03 ### Fixed @@ -69,4 +100,4 @@ - Fixed broken example links in `readme.md` ## v0.1.0 -Initial version \ No newline at end of file +Initial version diff --git a/Cargo.toml b/Cargo.toml index 0d5cd8b365..d2a0e17d92 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting" -version = "0.9.0-alpha.1" +version = "0.9.0-alpha.2" authors = ["Maksymilian Mozolewski "] edition = "2021" license = "MIT OR Apache-2.0" @@ -52,15 +52,15 @@ rune = ["bevy_mod_scripting_rune"] [dependencies] bevy = { workspace = true } bevy_mod_scripting_core = { workspace = true } -bevy_mod_scripting_lua = { path = "crates/languages/bevy_mod_scripting_lua", version = "0.9.0-alpha.1", optional = true } -bevy_mod_scripting_rhai = { path = "crates/languages/bevy_mod_scripting_rhai", version = "0.9.0-alpha.1", optional = true } -bevy_mod_scripting_rune = { path = "crates/languages/bevy_mod_scripting_rune", version = "0.9.0-alpha.1", optional = true } +bevy_mod_scripting_lua = { path = "crates/languages/bevy_mod_scripting_lua", version = "0.9.0-alpha.2", optional = true } +bevy_mod_scripting_rhai = { path = "crates/languages/bevy_mod_scripting_rhai", version = "0.9.0-alpha.2", optional = true } +bevy_mod_scripting_rune = { path = "crates/languages/bevy_mod_scripting_rune", version = "0.9.0-alpha.2", optional = true } bevy_mod_scripting_functions = { workspace = true } [workspace.dependencies] bevy = { version = "0.15.0", default-features = false } -bevy_mod_scripting_core = { path = "crates/bevy_mod_scripting_core", version = "0.9.0-alpha.1" } -bevy_mod_scripting_functions = { path = "crates/bevy_mod_scripting_functions", version = "0.9.0-alpha.1" } +bevy_mod_scripting_core = { path = "crates/bevy_mod_scripting_core", version = "0.9.0-alpha.2" } +bevy_mod_scripting_functions = { path = "crates/bevy_mod_scripting_functions", version = "0.9.0-alpha.2" } test_utils = { path = "crates/test_utils" } mlua = { version = "0.10" } rhai = { version = "1.20.1" } diff --git a/crates/bevy_mod_scripting_core/CHANGELOG.md b/crates/bevy_mod_scripting_core/CHANGELOG.md index 4b1601dd9f..74f69d3607 100644 --- a/crates/bevy_mod_scripting_core/CHANGELOG.md +++ b/crates/bevy_mod_scripting_core/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.9.0-alpha.2](https://github.com/makspll/bevy_mod_scripting/compare/bevy_mod_scripting_core-v0.9.0-alpha.1...bevy_mod_scripting_core-v0.9.0-alpha.2) - 2025-01-05 + +### Added + +- complete plugin re-write + +### Other + +- ditch alpha pre-releases ([#162](https://github.com/makspll/bevy_mod_scripting/pull/162)) + ## [0.8.0-alpha.2](https://github.com/makspll/bevy_mod_scripting/compare/bevy_mod_scripting_core-v0.8.0-alpha.1...bevy_mod_scripting_core-v0.8.0-alpha.2) - 2024-12-03 ### Other diff --git a/crates/bevy_mod_scripting_core/Cargo.toml b/crates/bevy_mod_scripting_core/Cargo.toml index 4645480fa3..3eb6054938 100644 --- a/crates/bevy_mod_scripting_core/Cargo.toml +++ b/crates/bevy_mod_scripting_core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_core" -version = "0.9.0-alpha.1" +version = "0.9.0-alpha.2" authors = ["Maksymilian Mozolewski "] edition = "2021" license = "MIT OR Apache-2.0" diff --git a/crates/bevy_mod_scripting_functions/CHANGELOG.md b/crates/bevy_mod_scripting_functions/CHANGELOG.md new file mode 100644 index 0000000000..b99f1b3558 --- /dev/null +++ b/crates/bevy_mod_scripting_functions/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.9.0-alpha.2](https://github.com/makspll/bevy_mod_scripting/compare/bevy_mod_scripting_functions-v0.9.0-alpha.1...bevy_mod_scripting_functions-v0.9.0-alpha.2) - 2025-01-05 + +### Added + +- complete plugin re-write diff --git a/crates/bevy_mod_scripting_functions/Cargo.toml b/crates/bevy_mod_scripting_functions/Cargo.toml index 2d733efd9e..5edbd17979 100644 --- a/crates/bevy_mod_scripting_functions/Cargo.toml +++ b/crates/bevy_mod_scripting_functions/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_functions" -version = "0.9.0-alpha.1" +version = "0.9.0-alpha.2" edition = "2021" authors = ["Maksymilian Mozolewski "] license = "MIT OR Apache-2.0" diff --git a/crates/languages/bevy_mod_scripting_lua/Cargo.toml b/crates/languages/bevy_mod_scripting_lua/Cargo.toml index 04f422bab3..c277aa298b 100644 --- a/crates/languages/bevy_mod_scripting_lua/Cargo.toml +++ b/crates/languages/bevy_mod_scripting_lua/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_lua" -version = "0.9.0-alpha.1" +version = "0.9.0-alpha.2" authors = ["Maksymilian Mozolewski "] edition = "2021" license = "MIT OR Apache-2.0" diff --git a/crates/languages/bevy_mod_scripting_rhai/Cargo.toml b/crates/languages/bevy_mod_scripting_rhai/Cargo.toml index f545257c15..ee0604f420 100644 --- a/crates/languages/bevy_mod_scripting_rhai/Cargo.toml +++ b/crates/languages/bevy_mod_scripting_rhai/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_rhai" -version = "0.9.0-alpha.1" +version = "0.9.0-alpha.2" authors = ["Maksymilian Mozolewski "] edition = "2021" license = "MIT OR Apache-2.0" diff --git a/crates/languages/bevy_mod_scripting_rune/Cargo.toml b/crates/languages/bevy_mod_scripting_rune/Cargo.toml index c929657bd8..7f6fecd361 100644 --- a/crates/languages/bevy_mod_scripting_rune/Cargo.toml +++ b/crates/languages/bevy_mod_scripting_rune/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_rune" -version = "0.9.0-alpha.1" +version = "0.9.0-alpha.2" edition = "2021" license = "MIT OR Apache-2.0" description = "Necessary functionality for Rune support with bevy_mod_scripting"