AppendixGetting Started
Getting Started
What Kira is, what it prioritizes, and what is currently implemented in this repo.
Kira is a compiler and bootstrap toolchain that is trying to keep a few boundaries clear:
- readable source comes first
- inference is welcome, but only when it is unambiguous
- library and framework behavior should live in Kira code when possible
- the Zig implementation should provide language mechanisms, runtime machinery, and build orchestration without hardcoding every high-level library feature
Kira's Current Shape
In this repository, Kira is not only a parser or an early language sketch. It already includes:
kira_source,kira_lexer,kira_parser,kira_semantics, andkira_irkira_bytecodeandkira_vm_runtimefor VM executionkira_llvm_backendandkira_native_bridgefor native outputkira_hybrid_runtimeandkira_hybrid_definitionfor mixed runtime/native executionkira_build,kira_toolchain,kira_bootstrapper, andkira_clifor packaging and command flow- a first real FFI system based on per-library TOML manifests and generated Kira bindings
What Lives In Kira vs Zig
Today the repo draws this line:
- Zig owns the compiler pipeline, runtime plumbing, toolchain management, native linking, and generated binding pipeline.
- Kira source owns the app code, generated bindings, construct-defined library shapes, and higher-level patterns built on top of the language surface.
This matters most in the frontend:
- the compiler understands constructs, annotations, builder/content blocks, lifecycle hooks, and namespaced references
- that does not mean the Zig implementation is hardcoding a full UI framework
- examples like
examples/complex_language_showcaseandexamples/ui_libraryshow the intended split: the language machinery is in the compiler, while framework behavior stays library-side
Project Status
Kira currently has two important truths at once:
- The frontend understands more than the executable backends lower today.
- The executable subset is already real enough to run VM, LLVM/native, hybrid, callbacks, and Sokol proof programs.
That is why the docs separate:
- frontend/reference material
- runnable backend behavior
Read The Basics next if you want the exact boundary between the broader frontend surface and today's runnable subset.