Koto is a simple and expressive programming language, usable as an extension language for Rust applications, or as a standalone scripting language.
print 'Hello, World!'
# -> Hello, World!
square = |n| n * n
'8 squared is '
# -> 8 squared is 64
.each square
.to_list
# -> [4, 16, 36, 64]
Koto was started in 2020 with the goal to create an ideal language for adding scripting to applications developed in Rust. Of particular interest were interactive systems like animation or game engines, where rapid iteration demands a lightweight programming interface that compiles and runs quickly.
The guiding design principle is that Koto should be simple, conceptually as well as visually. To that end, a focus throughout the language's development has been on reducing syntax noise and minimizing core concepts wherever possible.
Koto is a new language and should be considered to have a prominent 'use at your own risk' disclaimer.
With that said, Koto is starting to feel more stable, and although we're still
some way from a 1.0
release,
breaking changes are becoming much less frequent.
Early adopter feedback is invaluable, so if you do try out Koto please get in touch and share your experiences, positive or otherwise! You're welcome to reach out in Discussions, or on Discord, or by opening an issue.
You can read the guide, try it out in the playground or the CLI, and see how well it works in your existing Rust application.
KotoObject
trait.Koto was influenced by and is indebted to many other languages.
Plugins that provide Koto support are available for the following editors:
The next version of Helix editor will include built-in Koto support, and is available now if you're happy to build it from source.
A Tree-sitter implementation is available here. If you're using Neovim then it's easy to set up with nvim-treesitter.
An implementation of the Language Server Protocol for Koto is available here.