cross-posted from: https://vger.social/post/37291894
godot-rust goes into the next round with v0.5, just released on crates.io!
On the toolchain side:
We now support Rust edition 2024 and Godot 4.6 out of the box, as well as all versions >= 4.2.
WebAssembly support no longer needs LLVM/bindgen and is being unit-tested on CI.
It’s now possible to depend on other godot-rust crates through
rlib.Some features added in this cycle:
Typed dictionary. Also, enums in Godot collections!
let tiles: Dictionary<Vector2i, Tile> = dict! { Vector2i::new(1, 2) => Tile::GRASS, Vector2i::new(1, 3) => Tile::WATER, };Non-null engine APIs:
// Instead of... let t: Gd<Tween> = node.create_tween().unwrap(); // ...now: let t: Gd<Tween> = node.create_tween();Direct
== &strcomparison, saving allocation:let s = StringName::from("hello"); if s == "hello" { ... }Bitfield
Debugimpl:assert_eq!( format!("{flags:?}"), "PropertyUsageFlags { EDITOR | READ_ONLY }" );Optional parameters – call from GDScript as
method(1)ormethod(1, 2):#[func] fn method( required: i32, #[opt(default = 100)] optional: i32, ) { ... }Export tool button – click in Godot’s inspector to immediately execute Rust code:
#[export_tool_button(fn = Self::on_clicked, icon = "2DNodes")] click_me: PhantomVar<Callable>, // not a physical propertyWe now also have a Games page showcasing projects that users made with godot-rust! And I’m still behind on adding new entries there :)
Huge thanks to the community for making this possible! Countless bug reports, PRs, and feedback based on real-world projects have helped godot-rust immensely to reach this point.
If you like the project, consider giving us a star on GitHub. As it’s maintained entirely in free time without any financial backing, small GitHub Sponsor contributions are also very appreciated (Yarwin or TitanNano or Bromeon). Thanks to everyone supporting the project – We are excited to see what will be built on v0.5!


