bevy_koto 0.1

bevy_koto is a crate that adds Koto scripting support for the Bevy game engine.

This is an initial proof of concept, with many missing features, but it could hopefully serve as a starting point for some interesting applications.

Here's a video of the crate's demo app, showing hot-reloading of edits to the Koto scripts.

Koto 0.14

Koto 0.14 has been released, bringing API improvements and improved library documentation.


Koto is a free and open-source programming language with the goal of being an ideal scripting language for Rust applications.

If this is the first time you're reading about Koto, for some background information you could take a look at the About Koto page, or you could check out the language guide.

Changes in 0.14



  • KMap::get has been introduced as simpler alternative to KMap::data().get().cloned().


  • Markdown docs have been added for the extra libs.
  • random.pick can now be used with objects and maps that implement @[]



  • The use of CallArgs has been simplified with the introduction of From implementations for single values, arrays, and slices.
    • CallArgs::None has been removed, instead you can pass in &[].
  • The run_function/run_instance_function methods in Koto and KotoVm have been renamed to call_function and call_instance_function.


  • regex.find_all now returns null when no matches are found.
  • regex.captures now doesn't add extra by-index entries for named capture groups. map.get_index can be used to explicitly retrieve groups by index.



  • Koto::run_exported_function has been removed. Functions can be accessed via Koto::exports().get() and then called with Koto::call_function().
  • Koto::run_with_args has been removed. For equivalent behaviour, Koto::set_args can be called before calling Koto::run.



  • Arguments in paren-free function calls no longer require whitespace after commas. e.g. f 1,2,3 would previously be rejected.