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 == &str comparison, saving allocation:
let s = StringName::from("hello");
if s == "hello" { ... }
Bitfield Debug impl:
assert_eq!(
format!("{flags:?}"),
"PropertyUsageFlags { EDITOR | READ_ONLY }"
);
Optional parameters – call from GDScript as method(1) or method(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 property
We 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!
As a rust-curious dev, what are the benefits to using it in Godot? Does the game run any faster than if it were programmed in CO# or GD script? Is web more stable with it?
what are the benefits to using it in Godot?
Primarily performance and type safety. You can get some type safety with typed GDScript, but it doesn’t really compare to Rust. You also get all the language constructs for free and access to the entire Rust ecosystem, as you can depend on basically any crate you like.
Does the game run any faster than if it were programmed in CO# or GD script?
Yes, you can get more performance out of your CPU-intensive code compared to GDScript. If you have complex calculations or a large amount of data to process, you will fare better with Rust. The interoperability between Rust and GDScript is also quite good, so you can mix and match as much as you like. I can’t really say how it compares to C#, as I have never tested it myself.
Is web more stable with it?
I’m not sure what you mean by more stable, but web exports are possible, which is not currently supported with C#. Rust also does not rely on a runtime like C#, which should give you a smaller export size compared to C#.


