vtereshkov/umka-lang
FreeUmka: a statically typed embeddable scripting language
About vtereshkov/umka-lang
Umka is a statically typed embeddable scripting language that balances simplicity and flexibility with compile-time type checking, following the 'Explicit is better than implicit' principle. It features a clean syntax inspired by Go, a cross-platform bytecode compiler and virtual machine, automatic garbage collection, and C-compatible arrays and structures. Umka supports polymorphism via interfaces, multitasking based on fibers (coroutines), and type inference. It can be distributed as a static or dynamic library with a simple C API, and its source is written in C99. The language is accompanied by a playground, stable and unstable releases, editor support (Sublime Text, VS Code, Vim, Kakoune, Emacs, Unreal Engine, Zed), and comprehensive documentation. Example projects include a raytracer, a toy Lisp interpreter, and a 3D camera demo, with real-world projects like a 2D game framework (tophat), puzzle games, and a 3D orbital simulation.
Key Features
Pros & Cons
- Statically typed with compile-time error checking
- Easy to embed via a simple C API
- Good performance (e.g., 400x400 matrix multiplication benchmark)
- Go-like syntax is clean and familiar
- Cross-platform support (Windows, Linux, macOS, Emscripten)
- Built-in garbage collection reduces manual memory management
- Fibers enable cooperative multitasking without threading complexity
- Smaller community and fewer third-party libraries compared to mainstream scripting languages
- Documentation is available but less extensive than for more established languages
- Relatively new project with evolving features