Tzo is a simple Virtual Stack Machine that I’ve been working on since 2020. Its primary use case is to be implemented and embedded in games for a potentially wide variety of use cases, sacrificing performance for simplicity of implementation. Tzo is very similar to WebAssembly: it has a light core of operations that lack serious input/output, and it is intended to be extended through foreign functions in a runtime environment. I’ve made several implementations of Tzo:
- Tzo in TypeScript is the reference implementation, written in TypeScript/JavaScript.
- Tzo-c is an implementation in C.
- Tzo-Rust is the obligatory ‘rewrite in Rust’.
- Tzo-godot is an experimental Godot GDExtension to allow you to use Tzo within Godot.
Tzo in and of itself is not particularly useful, but projects like QuestMark - a hypertext fiction and conversation tree language - show how it can be used as a useful intermediary language. Perhaps the easiest way to play around with QuestMark today is this experimental IDE, which allows you to author conversations in a Yarn-compatible language, as well as the QuestMark language itself - both get compiled down to Tzo.
See also the Tzo topic on GitHub for related projects.