diff --git a/Changelog.md b/Changelog.md index 1c4567e32..d14e73c8e 100644 --- a/Changelog.md +++ b/Changelog.md @@ -5,6 +5,139 @@ This document tracks changes of released library versions. See also [Pulse](https://github.com/godot-rust/gdext/pulse/monthly) for recent activities. Cutting-edge API docs of the `master` branch are available [here](https://godot-rust.github.io/docs/gdext). +๐ŸŒŠ indicates a breaking change. Deprecations are not marked breaking. + + +## Quick navigation + +- [v0.2.0](#v020) +- [v0.1.1](#v011), [v0.1.2](#v012), [v0.1.3](#v013) + + +## [v0.2.0](https://docs.rs/godot/0.2.0) + +_15 November 2024_ + +See [devlog article](https://godot-rust.github.io/dev/november-2024-update) for highlights. + +### ๐ŸŒป Features + +- Godot 4.3 support in CI and `api-4-3` feature ([#859](https://github.com/godot-rust/gdext/pull/859)) +- ๐ŸŒŠ Drop support for Godot 4.0 ([#820](https://github.com/godot-rust/gdext/pull/820)) +- ๐ŸŒŠ Ergonomic arguments + - `AsObjectArg` trait enabling implicit conversions for object parameters ([#800](https://github.com/godot-rust/gdext/pull/800)) + - Pass-by-ref for non-`Copy` builtins ([#900](https://github.com/godot-rust/gdext/pull/900), [#906](https://github.com/godot-rust/gdext/pull/906)) + - String argument conversion + `AsArg` trait ([#940](https://github.com/godot-rust/gdext/pull/940)) + - `Callable` is now passed by-ref ([#944](https://github.com/godot-rust/gdext/pull/944)) + - Require `AsObjectArg` pass-by-ref, consistent with `AsArg` ([#847](https://github.com/godot-rust/gdext/pull/847), [#947](https://github.com/godot-rust/gdext/pull/947)) +- Godot docs from RustDoc comments + - Generate documentation from doc comments ([#748](https://github.com/godot-rust/gdext/pull/748)) + - Generate valid XML from doc comments ([#861](https://github.com/godot-rust/gdext/pull/861)) + - Include `register-docs` feature in CI ([#819](https://github.com/godot-rust/gdext/pull/819)) +- RPC attributes + - Add `#[rpc]` attribute to user-defined functions ([#902](https://github.com/godot-rust/gdext/pull/902)) +- Registration APIs + - ๐ŸŒŠ Add `OnReady::node()` + `#[init(node = "...")]` attribute ([#807](https://github.com/godot-rust/gdext/pull/807)) + - Support Unicode class names (Godot 4.4+) ([#891](https://github.com/godot-rust/gdext/pull/891)) + - Unicode support in `ClassName::new_cached()`; adjust test ([#899](https://github.com/godot-rust/gdext/pull/899)) + - Derive `Ord` and `PartialOrd` for `ClassName` ([#928](https://github.com/godot-rust/gdext/pull/928)) + - Implement `Debug` for `InitState` and `OnReady` ([#879](https://github.com/godot-rust/gdext/pull/879)) +- Enums + - `#[derive(GodotClass)]` enums can now have complex ordinal expressions ([#843](https://github.com/godot-rust/gdext/pull/843)) + - Enums can now be bit-combined with known masks ([#857](https://github.com/godot-rust/gdext/pull/857)) + - Add `as_str` and `godot_name` to non-bitfield enums ([#898](https://github.com/godot-rust/gdext/pull/898)) +- Required virtual functions + - Detect whether virtual functions are required to override ([#904](https://github.com/godot-rust/gdext/pull/904)) + - ๐ŸŒŠ Required virtual methods should be required at compile-time ([#771](https://github.com/godot-rust/gdext/pull/771)) +- Conversions + operators + - Implement `GodotConvert` for `Vec`, `[T; N]` and `&[T]` ([#795](https://github.com/godot-rust/gdext/pull/795)) + - Implement `From<&[char]>` for `GString` ([#862](https://github.com/godot-rust/gdext/pull/862)) + - Add `From<[Elem; N]>` for Packed Array and Optimize `From>` ([#827](https://github.com/godot-rust/gdext/pull/827)) + - Handle typed array metadata ([#855](https://github.com/godot-rust/gdext/pull/855)) + - Vector conversion functions ([#824](https://github.com/godot-rust/gdext/pull/824)) + - Add Mul operator for Quaternion + Vector3 ([#894](https://github.com/godot-rust/gdext/pull/894)) + +### ๐Ÿงน Quality of life + +- Renames and removals + - ๐ŸŒŠ Remove deprecated symbols from before v0.1 ([#808](https://github.com/godot-rust/gdext/pull/808)) + - Deprecate instance utilities in `godot::global` ([#901](https://github.com/godot-rust/gdext/pull/901)) + - Shorten `#[init(default = ...)]` to `#[init(val = ...)]` ([#844](https://github.com/godot-rust/gdext/pull/844)) + - `#[class]` attribute: rename `hidden` -> `internal`, deprecate `editor_plugin` ([#884](https://github.com/godot-rust/gdext/pull/884)) + - Cleanup around `godot::meta` argument conversions ([#948](https://github.com/godot-rust/gdext/pull/948)) + - Remove `to_2d()` + `to_3d()`; clean up `ApiParam` ([#943](https://github.com/godot-rust/gdext/pull/943)) + - ๐ŸŒŠ Simplify property hint APIs ([#838](https://github.com/godot-rust/gdext/pull/838)) +- Validation + - Fix validation for `api-*` mutual exclusivity ([#809](https://github.com/godot-rust/gdext/pull/809)) + - Validate that virtual extension classes require `#[class(tool)]` ([#850](https://github.com/godot-rust/gdext/pull/850)) + - Validate that editor plugin classes require `#[class(tool)]` ([#852](https://github.com/godot-rust/gdext/pull/852)) + - Best-effort checks for `Array` conversions; fix `Debug` for variants containing typed arrays ([#853](https://github.com/godot-rust/gdext/pull/853)) + - ๐ŸŒŠ Disallow `Export` if class doesn't inherit `Node` or `Resource` ([#839](https://github.com/godot-rust/gdext/pull/839)) + - ๐ŸŒŠ Validate that Nodes can only be exported from Node-derived classes ([#841](https://github.com/godot-rust/gdext/pull/841)) +- CI and tooling + - Cargo-deny maintenance: update to advisories/licenses v2 ([#829](https://github.com/godot-rust/gdext/pull/829)) + - CI runner updates ([#941](https://github.com/godot-rust/gdext/pull/941)) + - Skip `notify-docs` job when running in a fork ([#945](https://github.com/godot-rust/gdext/pull/945)) + - Allow manually triggering `full-ci` workflow (mostly useful for forks) ([#933](https://github.com/godot-rust/gdext/pull/933)) +- Code generation and Godot APIs + - Allow codegen for `UniformSetCacheRD` for Godot >=4.3 ([#816](https://github.com/godot-rust/gdext/pull/816)) + - Enable `ResourceLoader::load_threaded_*` with `experimental-threads` ([#856](https://github.com/godot-rust/gdext/pull/856)) + - Dependency update, more tests for vector angle functions ([#860](https://github.com/godot-rust/gdext/pull/860)) +- Upstream follow-up + - ๐ŸŒŠ Support `GDExtensionScriptInstanceInfo3` in 4.3 ([#849](https://github.com/godot-rust/gdext/pull/849)) + - Support meta `char16` and `char32` ([#895](https://github.com/godot-rust/gdext/pull/895)) + - Add `GodotConvert` impl for `*const u8` pointers ([#866](https://github.com/godot-rust/gdext/pull/866)) + - Update list of experimental classes ([#897](https://github.com/godot-rust/gdext/pull/897)) + - Update hint_string tests to account for Godot 4.4 floats with `.0` formatting ([#936](https://github.com/godot-rust/gdext/pull/936)) +- Panics + - Disable panic hooks in Release mode ([#889](https://github.com/godot-rust/gdext/pull/889)) + - In debug, include location information in error message on panic ([#926](https://github.com/godot-rust/gdext/pull/926)) +- Refactoring + - Rewrite `#[var]` + `#[export]` registration to use type-safe API behind scenes ([#840](https://github.com/godot-rust/gdext/pull/840)) + - Get rid of placeholder names like "foo" ([#888](https://github.com/godot-rust/gdext/pull/888)) + +### ๐Ÿ› ๏ธ Bugfixes + +- Argument passing + - Set null into Godot Engint APIs nullable parameters as default ([#823](https://github.com/godot-rust/gdext/pull/823)) + - Fix `Ex*` builder parameters: `ObjectArg` -> `impl AsObjectArg` ([#830](https://github.com/godot-rust/gdext/pull/830)) +- Godot doc generation from RustDoc + - Fix doc comments not showing up if only some class members are documented ([#815](https://github.com/godot-rust/gdext/pull/815)) + - Fix `register-docs` feature not being tested ([#942](https://github.com/godot-rust/gdext/pull/942)) +- Registration + - Fix `Array` registered without element type ([#836](https://github.com/godot-rust/gdext/pull/836)) + - Virtual methods now take `Option>` (unless whitelisted) ([#883](https://github.com/godot-rust/gdext/pull/883)) + - Make arrays exportable only when their inner type is exportable ([#875](https://github.com/godot-rust/gdext/pull/875)) + - Display script-virtual methods as `_method` instead of `method` in Godot docs ([#918](https://github.com/godot-rust/gdext/pull/918)) + - Implement the `safe_ident` strategy for virtual call parameter identifier generation ([#822](https://github.com/godot-rust/gdext/pull/822)) +- FFI and memory safety + - Fix user-after-free in `AsObjectArg` pass-by-value (in default-param methods) ([#846](https://github.com/godot-rust/gdext/pull/846)) + - `RawGd::move_return_ptr` with `PtrcallType::Virtual` leaks reference ([#848](https://github.com/godot-rust/gdext/pull/848)) + - Don't abort on panic inside Callable ([#873](https://github.com/godot-rust/gdext/pull/873)) +- Tooling and dependencies + - Dev-dependencies are enabling full codegen ([#842](https://github.com/godot-rust/gdext/pull/842)) + - OpenXR is not available on Web ([#872](https://github.com/godot-rust/gdext/pull/872)) + - Fix `enum_test.rs` accidentally excluded from itest ([#931](https://github.com/godot-rust/gdext/pull/931)) + - Codegen-rustfmt: use 2021 edition ([#937](https://github.com/godot-rust/gdext/pull/937)) +- Math + - `Vecor3::sign()` gives incorrect results due to `i32` conversion ([#865](https://github.com/godot-rust/gdext/pull/865)) + +### ๐Ÿ“ˆ Performance + +- `RawGd`: cache pointer to internal storage ([#831](https://github.com/godot-rust/gdext/pull/831)) +- `ClassName` now dynamic and faster ([#834](https://github.com/godot-rust/gdext/pull/834)) +- Pass-by-ref for non-`Copy` builtins (backend) ([#906](https://github.com/godot-rust/gdext/pull/906)) + +### ๐Ÿ“š Documentation + +- Builtin docs (impl blocks, navigation table, link to Godot) ([#821](https://github.com/godot-rust/gdext/pull/821)) +- Add docs for `#[rpc]` ([#949](https://github.com/godot-rust/gdext/pull/949)) +- Overview about type conversions ([#833](https://github.com/godot-rust/gdext/pull/833)) +- Document `godot::meta` argument conversions ([#948](https://github.com/godot-rust/gdext/pull/948)) +- Add a doc to point users to kwarg builders ([#876](https://github.com/godot-rust/gdext/pull/876)) +- Resolve doc warning with global enums ([#896](https://github.com/godot-rust/gdext/pull/896)) +- ReadMe update + clippy error ([#929](https://github.com/godot-rust/gdext/pull/929)) + ## [v0.1.3](https://docs.rs/godot/0.1.3) diff --git a/godot-bindings/Cargo.toml b/godot-bindings/Cargo.toml index efb66b524..919deea43 100644 --- a/godot-bindings/Cargo.toml +++ b/godot-bindings/Cargo.toml @@ -36,7 +36,7 @@ api-custom = ["dep:bindgen", "dep:regex", "dep:which"] api-custom-extheader = [] [dependencies] -gdextension-api = { version = "0.2", git = "https://github.com/godot-rust/godot4-prebuilt", branch = "releases" } +gdextension-api = { version = "0.2.1", git = "https://github.com/godot-rust/godot4-prebuilt", branch = "releases" } # Do not use bindgen 0.69, it contains regression that forces recompilation of code. bindgen = { optional = true, version = "0.68", default-features = false, features = ["runtime"] }