# Kest > Kest is a small, fast, statically typed language for the gameplay half of a game, run by a bytecode machine a native engine embeds through one C header. A whole program is one or more `.kest` files; `kest run file.kest` runs one. Every program on these pages is checked and run against the compiler they describe. ## Docs - [Getting started](https://rawframe-project.github.io/kest/docs/getting-started.md): Kest is a statically typed language for the gameplay half of a game: rules, AI, quests and simulation. - [Language basics](https://rawframe-project.github.io/kest/docs/language-basics.md): How a Kest file is laid out, its names, numbers, operators and control flow. - [Data](https://rawframe-project.github.io/kest/docs/data.md): Structs, fixed runs, arrays, stores and references, enums, sets of flags, optionals and vectors: what each is, what it costs, and what copies. - [Text](https://rawframe-project.github.io/kest/docs/text.md): `text` is UTF-8 bytes and a length. - [Functions](https://rawframe-project.github.io/kest/docs/functions.md): Overloading, calling a function on a value, generics, function values, blocks, bodies that wait between frames, and walking a struct's fields. - [Promises](https://rawframe-project.github.io/kest/docs/promises.md): A function may promise three things about itself after its result: `no.alloc`, `no.host` and `deterministic`. - [Determinism](https://rawframe-project.github.io/kest/docs/determinism.md): A replay, a rollback or a lockstep game between two machines needs the same program to compute the same world everywhere. - [The standard library](https://rawframe-project.github.io/kest/docs/standard-library.md): Every module is Kest source under `lib/std`, compiled with the program each time, so there is no library version to mismatch. - [Embedding Kest](https://rawframe-project.github.io/kest/docs/embedding.md): A host is any C or C++ program that runs Kest: an engine, a tool, a server. - [Host memory](https://rawframe-project.github.io/kest/docs/host-memory.md): What a host may hold of the program's memory, how it lends the program its own, how a world lives across frames, and how a running game reloads its rules. - [Running untrusted code](https://rawframe-project.github.io/kest/docs/untrusted-code.md): A host that runs code it did not write (a mod, a player's script, a level from the internet) starts the machine differently and gives it ceilings. - [Release builds](https://rawframe-project.github.io/kest/docs/release-builds.md): Kest has two engines for one language. - [The command line](https://rawframe-project.github.io/kest/docs/command-line.md): `kest` is the compiler, the runner and every tool, and it is a host like any other: it provides the doors `std.io` and `std.os` declare. - [Diagnostics](https://rawframe-project.github.io/kest/docs/diagnostics.md): The compiler reports every error it can find in one pass, not the first. - [Versions and editions](https://rawframe-project.github.io/kest/docs/editions.md): `kest --version` prints five numbers, and each moves for a different reason. - [Coming from Lua or Rust](https://rawframe-project.github.io/kest/docs/coming-from-lua-or-rust.md): What is different in Kest, ordered by how often it trips people up. - [Examples](https://rawframe-project.github.io/kest/docs/examples.md): Every program under `examples/` checks its own answers and exits with which check failed, so `kest run examples/.kest` answering 0 means it works. - [Standard library reference](https://rawframe-project.github.io/kest/docs/std.md): Every module of `lib/std`, as `kest doc` prints it: each declaration as it is written, with the comment above it. ## Optional - [Changelog](https://rawframe-project.github.io/kest/docs/changelog.md): what each release changed - [Everything in one file](https://rawframe-project.github.io/kest/llms-full.txt): every page above, in order