Statically typed, hot reloadable scripting? Sign me up.
Statically typed, hot reloadable scripting? Sign me up.
With fast development cycles and a safe scripting language, Rust will find itself in every single programming niche. Server development, game development, desktop application development. If the WASM DOM bridge gets better, maybe even web development. Everything will open up.
You can prototype in the scripting language, write mature application logic in the scripting language, and for the parts that matter, move them to Rust.
I hope Roto can be that. There are lots of other Rust scripting languages that fall short.
A good scripting language will have great Rust interop, similar syntax, and allow simple calling and passing of data structures. It shouldn't weaken Rust in any way.
Alternatively, look at a project like ruff— hundreds of linter rules statically implemented in native Rust [1], maybe that would make more sense if the rules could be more tersely expressed as runtime-loadable roto scripts that have access to the Python AST and a toolkit of Rust-supplied functions for manipulating and inspecting it?
[1]: https://github.com/astral-sh/ruff/tree/main/crates/ruff_lint...
I'm less familiar with the Lua world (not a gamedev), but this is an example of the kind of thing I'm imagining— a build system / task runner that's half lua and half C/C++: https://github.com/xmake-io
Having a modern on-prem replacement for Jenkins/Rundeck built in rust and exposing a roto interface rather than yaml definitions sounds like it would be great.
- "low defect" software without much work. I'm not talking about memory management, but rather Option<T> and Result<T,E>. For the same amount of effort as writing Golang or Java or C#, you can get defect free code.
- Easy deployable to WASM without packaging a memory management runtime for the most intrusive types. Super portable, super fast.
- If you've used Unreal a lot, you've hit build issues, linker issues, segfault issues. A lot. That'll go away.
I know, practically self-documenting code!
https://github.com/tokio-rs/tokio/blob/tokio-1.45.0/examples...
I'm not trying to pick on tokio, it was just a public link demonstrating that the syntax can get to be a bit much
Is adding ‘a really too much for you?
I don’t know how are universes split but I’m in the wrong one for sure!
300Gb compile caches, 5 minute compilation, nix flakes with layer and careful adjustments for different arch and deployments, cargo slowing builds by 5 minutes every time because it insist on downloading full repo every time (and occasionally failing). API libraries maintained by some completely anonymous guy or lad from eastern country.
On top of it the bugs don’t get away. If your problem IS memory safety, then sure - chomp away. But I’ve seen u64 truncated to u32 because someone decided to thread it through JSON serialization and macro soup.
Every bear looks like a puppy when it’s a cub.
It was rather messy to use cargo on handheld ARM, it didn't spark joy so I kind of stopped trying after a while. Mostly I use Rust as a dependency I don't need to touch, but when I've programmed in it I didn't feel like cargo was that big of a thing. Maybe I would feel another way if the frame of reference was only like webpack or Pip or something.
I've been out of the loop for a while, but last I checked, the running gag was that there are more game engines written in rust than games. Have things changed? Any high profile games that were made in rust?
It's mostly a custom stack, but it's written in Rust and uses some parts of Bevy from what I understand.
https://github.com/mun-lang/mun
- Ahead of time compilation
- Statically typed
- First class hot-reloading
Not sure how both languages compare though
The downside is that it's not really possible to share types between the host application and the script as far as I know. They have something called called `StructRef` which does this a bit, but it's all runtime checks if I understand correctly.
If somebody here knows more about Mun, I'd be happy to be corrected. This is just my understanding from their documentation.