Skip to content

Latest commit

Β 

History

History
229 lines (174 loc) Β· 14.6 KB

Changelog.md

File metadata and controls

229 lines (174 loc) Β· 14.6 KB

Changelog

This document tracks changes of released library versions.

See also Pulse for recent activities.
Cutting-edge API docs of the master branch are available here.

🌊 indicates a breaking change. Deprecations are not marked breaking.

Quick navigation

8 December 2024

🌻 Features

  • #[godot_api(secondary)] for multiple impl blocks (#927)
  • DynGd<T, D> smart pointer for Rust-side dynamic dispatch (#953, #958)
  • Callable::from_local_fn() + Callable::from_sync_fn() (#965)
  • Add Variant::object_id() (#914)

🧹 Quality of life

  • #[gdextension] macro: rename entry_point -> entry_symbol and write docs (#959)
  • Use GDExtensionCallableCustomInfo2 instead of deprecated GDExtensionCallableCustomInfo (#952)
  • sys::short_type_name, conversions and relaxed GodotType (#957)
  • Clippy (elided lifetimes) + rustfmt (#956)
  • Add test verifying that custom callables don't crash when Err is returned (#950)
  • Minor signal cleanup; prevent #[signal] from being used in secondary impl blocks (#964)

πŸ› οΈ Bugfixes

  • Fix #[godot_dyn] causing error when implemented for two traits (#962)
  • Prevent abort on double-panic if single-threading check fails (#965)

πŸ“š Documentation

  • #[gdextension] macro: rename entry_point -> entry_symbol and write docs (#959)
  • Helpful doc aliases: func, var, init, .. (#960)

15 November 2024

See devlog article for highlights.

🌻 Features

  • Godot 4.3 support in CI and api-4-3 feature (#859)
  • 🌊 Drop support for Godot 4.0 (#820)
  • 🌊 Ergonomic arguments
    • AsObjectArg trait enabling implicit conversions for object parameters (#800)
    • Pass-by-ref for non-Copy builtins (#900, #906)
    • String argument conversion + AsArg trait (#940)
    • Callable is now passed by-ref (#944)
    • Require AsObjectArg pass-by-ref, consistent with AsArg (#847, #947)
  • Godot docs from RustDoc comments
    • Generate documentation from doc comments (#748)
    • Generate valid XML from doc comments (#861)
    • Include register-docs feature in CI (#819)
  • RPC attributes
    • Add #[rpc] attribute to user-defined functions (#902)
  • Registration APIs
    • 🌊 Add OnReady::node() + #[init(node = "...")] attribute (#807)
    • Support Unicode class names (Godot 4.4+) (#891)
    • Unicode support in ClassName::new_cached(); adjust test (#899)
    • Derive Ord and PartialOrd for ClassName (#928)
    • Implement Debug for InitState and OnReady (#879)
  • Enums
    • #[derive(GodotClass)] enums can now have complex ordinal expressions (#843)
    • Enums can now be bit-combined with known masks (#857)
    • Add as_str and godot_name to non-bitfield enums (#898)
  • Required virtual functions
    • Detect whether virtual functions are required to override (#904)
    • 🌊 Required virtual methods should be required at compile-time (#771)
  • Conversions + operators
    • Implement GodotConvert for Vec<T>, [T; N] and &[T] (#795)
    • Implement From<&[char]> for GString (#862)
    • Add From<[Elem; N]> for Packed Array and Optimize From<Vec<Elem>> (#827)
    • Handle typed array metadata (#855)
    • Vector conversion functions (#824)
    • Add Mul operator for Quaternion + Vector3 (#894)

🧹 Quality of life

  • Renames and removals
    • 🌊 Remove deprecated symbols from before v0.1 (#808)
    • Deprecate instance utilities in godot::global (#901)
    • Shorten #[init(default = ...)] to #[init(val = ...)] (#844)
    • #[class] attribute: rename hidden -> internal, deprecate editor_plugin (#884)
    • Cleanup around godot::meta argument conversions (#948)
    • Remove to_2d() + to_3d(); clean up ApiParam (#943)
    • 🌊 Simplify property hint APIs (#838)
  • Validation
    • Fix validation for api-* mutual exclusivity (#809)
    • Validate that virtual extension classes require #[class(tool)] (#850)
    • Validate that editor plugin classes require #[class(tool)] (#852)
    • Best-effort checks for Array<Integer> conversions; fix Debug for variants containing typed arrays (#853)
    • 🌊 Disallow Export if class doesn't inherit Node or Resource (#839)
    • 🌊 Validate that Nodes can only be exported from Node-derived classes (#841)
  • CI and tooling
    • Cargo-deny maintenance: update to advisories/licenses v2 (#829)
    • CI runner updates (#941)
    • Skip notify-docs job when running in a fork (#945)
    • Allow manually triggering full-ci workflow (mostly useful for forks) (#933)
  • Code generation and Godot APIs
    • Allow codegen for UniformSetCacheRD for Godot >=4.3 (#816)
    • Enable ResourceLoader::load_threaded_* with experimental-threads (#856)
    • Dependency update, more tests for vector angle functions (#860)
  • Upstream follow-up
    • 🌊 Support GDExtensionScriptInstanceInfo3 in 4.3 (#849)
    • Support meta char16 and char32 (#895)
    • Add GodotConvert impl for *const u8 pointers (#866)
    • Update list of experimental classes (#897)
    • Update hint_string tests to account for Godot 4.4 floats with .0 formatting (#936)
  • Panics
    • Disable panic hooks in Release mode (#889)
    • In debug, include location information in error message on panic (#926)
  • Refactoring
    • Rewrite #[var] + #[export] registration to use type-safe API behind scenes (#840)
    • Get rid of placeholder names like "foo" (#888)

πŸ› οΈ Bugfixes

  • Argument passing
    • Set null into Godot Engint APIs nullable parameters as default (#823)
    • Fix Ex* builder parameters: ObjectArg<T> -> impl AsObjectArg<T> (#830)
  • Godot doc generation from RustDoc
    • Fix doc comments not showing up if only some class members are documented (#815)
    • Fix register-docs feature not being tested (#942)
  • Registration
    • Fix Array<T> registered without element type (#836)
    • Virtual methods now take Option<Gd<T>> (unless whitelisted) (#883)
    • Make arrays exportable only when their inner type is exportable (#875)
    • Display script-virtual methods as _method instead of method in Godot docs (#918)
    • Implement the safe_ident strategy for virtual call parameter identifier generation (#822)
  • FFI and memory safety
    • Fix user-after-free in AsObjectArg pass-by-value (in default-param methods) (#846)
    • RawGd::move_return_ptr with PtrcallType::Virtual leaks reference (#848)
    • Don't abort on panic inside Callable (#873)
  • Tooling and dependencies
    • Dev-dependencies are enabling full codegen (#842)
    • OpenXR is not available on Web (#872)
    • Fix enum_test.rs accidentally excluded from itest (#931)
    • Codegen-rustfmt: use 2021 edition (#937)
  • Math
    • Vecor3::sign() gives incorrect results due to i32 conversion (#865)

πŸ“ˆ Performance

  • RawGd: cache pointer to internal storage (#831)
  • ClassName now dynamic and faster (#834)
  • Pass-by-ref for non-Copy builtins (backend) (#906)

πŸ“š Documentation

  • Builtin docs (impl blocks, navigation table, link to Godot) (#821)
  • Add docs for #[rpc] (#949)
  • Overview about type conversions (#833)
  • Document godot::meta argument conversions (#948)
  • Add a doc to point users to kwarg builders (#876)
  • Resolve doc warning with global enums (#896)
  • ReadMe update + clippy error (#929)

22 July 2024

🧹 Quality of life

  • Add helpful error for renamed Wasm module (#799)
  • More thoroughly document unsafe in godot-ffi (#774)

πŸ› οΈ Bugfixes

  • Map Vector3i.Axis enum to builtin Vector3Axis (#797)
  • Prevent out! from actually formatting the input if disabled (#801)
  • Disable main_thread_id assertion for Android debug build (#780)
  • GdCell::borrow_mut should block on main thread if shared ref exists (#787)

πŸ“š Documentation

  • Typos + code reordering (#802)
  • Add crates.io ReadMe + docs logo (#804)

15 July 2024

🌻 Features

  • Add more normalized functions (#761)
  • Add conversion from Vec<$Element> to $PackedArray types (#785)
  • Add snapped to integer vectors (#768)
  • Add determinant to Transform2D (#770)
  • Support #[export(range = (radians_as_degrees, suffix=XX))] (#783)
  • Add support for nothreads Wasm builds (Godot 4.3+) (#794)

🧹 Quality of life

  • Reorder compile errors for #[derive(GodotClass)] (#773)
  • Change Global to use Once (#752)
  • Prevent global CallError tracker from growing indefinitely (#798)

πŸ› οΈ Bugfixes

  • Change logic to disable OpenXR for iOS (#781)
  • Pointer is already *const u32 on aarch64 (#788)
  • Handle panics in virtual interface methods (#757)

πŸ“š Documentation

  • Document why Basis columns are a, b, and c (#776)

24 June 2024

Initial release on crates.io. See devlog article.