Skip to content

Latest commit

 

History

History
198 lines (154 loc) · 12.8 KB

Changelog.md

File metadata and controls

198 lines (154 loc) · 12.8 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

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.