vtereshkov/umka-lang logo

vtereshkov/umka-lang

Free

Umka: a statically typed embeddable scripting language

FreeFree tier
Type
Open Source

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

Clean syntax inspired by Go
Cross-platform bytecode compiler and virtual machine
Automatic garbage collection
Arrays and structures compatible with C
Polymorphism via interfaces
Multitasking based on fibers (coroutines)
Type inference
Distribution as a static or dynamic library with a simple C API
C99 source code for portability
Editor support: Sublime Text, VS Code, Vim, Kakoune, Emacs, Unreal Engine, Zed

Pros & Cons

Pros
  • 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
Cons
  • 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

Best For

Embeddable scripting in applications written in C or C++2D game development (e.g., tophat framework, SaveScum)3D simulation and visualization (e.g., SpaceSim, TractorSim3D)Educational projects and prototyping (e.g., raytracer, Lisp interpreter)Custom build systems (e.g., buum)Proof of concept operating systems (e.g., Umka OS)

FAQ

What is Umka?
Umka is a statically typed embeddable scripting language that combines simplicity and flexibility with compile-time type checking, following the principle 'Explicit is better than implicit'.
How can I get started with Umka?
You can try Umka in the online playground, download the latest release for Windows and Linux, and take a tour of the language through the documentation.
Does Umka support concurrency?
Yes, Umka supports multitasking based on fibers, which allow cooperative concurrency.
Can I embed Umka into my application?
Yes, Umka can be distributed as a static or dynamic library with a simple C API, making it easy to embed in C/C++ projects.
What platforms does Umka support?
Umka is cross-platform, with builds available for Windows, Linux, macOS, and through Emscripten for web/playground use.