More
Before anything else
Zag is being experimented with, so please don’t expect stability: any release may change or remove anything, and it comes with no warranty.
Only its repository and zag-lang.org speak for Zag. If something said elsewhere, for example in an article, a search result or an AI summary, doesn’t match them, you should likely trust them, not the other source. We aren’t responsible for what others say.
Licences
Code
Apache-2.0 with the LLVM exception: the compiler, the tools, the libraries and this website’s code. Programs you compile owe nothing; a fork keeps the notices and may not use the name.
Writing and logos
CC BY 4.0: the repo’s text, this website’s text and the logos. Copy them, translate, remix, use them anywhere, with credit, exactly as:
- This repo’s text
Zag GitHub repo text: https://zag-lang.org, https://github.com/Soclets/Zag-lang - This website’s text
Zag website text: https://zag-lang.org, https://github.com/Soclets/Zag-lang - The logos
Zag logo(s): https://zag-lang.org, https://github.com/Soclets/Zag-lang
As the licence asks, also say they are under CC BY 4.0, and whether you changed them.
Names and logo
Zag™ (formerly Nerve and CyborgPL), Zomp™ (formerly Synapse) and Ricochet™ (formerly Kinesin) are names of this project, and the Zag cloud logo is its mark. They are trademarks, not registered.
You may use the names and logo anywhere (in articles, talks, comparisons, links, your own projects about Zag) as long as you don’t pretend to be us: nothing that says or suggests it is the official Zag, made or endorsed by this project, when it isn’t.
Credits
Zag™ is designed by Tankun Sriket, who makes every decision in DECISIONS.md. Everything below helped build it.
Claude, by Anthropic, wrote most of the code and documents here under the owner’s direction, as five Claude Code sessions: design claude (the design notes, the decision log, the reference interpreter and the benchmarks in bench/), compiler claude (Zomp, in zomp/), std claude (the standard library, written in Zag), check claude (the program generator, differential testing and translation validation in check/) and website claude (website/, this site). Two more work in their own repos: synthia claude on Synthia, and RRx2-TV claude on RRx2’s translation validator. Each signs its commits with its house name; the models behind them include Claude Opus 5 and Claude Opus 5.5.
Languages and tools
- Rust and Cargo: the reference interpreter, Zomp and the verification harness.
- LLVM 22: Zomp’s code generator, through llvm-sys and Inkwell.
- Z3 (Microsoft Research) and cvc5: the SMT solvers behind Zomp’s proofs, and the independent check of them.
- Alive2: check claude’s first translation validation, proving LLVM’s rewrites of Zomp’s code.
- Clang: the C programs Zomp is benchmarked against, and the C side of the GPU benchmark.
- Metal and Xcode’s Metal Toolchain, by Apple: the GPU side of the GPU benchmark.
- The compilers and runtimes of the benchmark’s other languages (26 with C): C++, Rust, Go, Zig, Swift, Nim, Fortran (gfortran), OCaml, Dart, Java, Kotlin, C# (.NET), JavaScript and TypeScript (Node), Julia, LuaJIT, PyPy, Elixir, Erlang, Lust, Python, Ruby, Lua, Perl and R.
- Python: the benchmark runners.
- Bungee, by The Bungee Project Authors (SIL Open Font License 1.1): the letters of the Zag logo, turned into outlines.
- Fredoka, by The Fredoka Project Authors (SIL Open Font License 1.1): this site’s text.
- Node.js and npm: this site’s build.
- Homebrew: LLVM, Z3, cvc5, Alive2 and most of the benchmark’s toolchains on the build machine.
- Git, GitHub and the GitHub CLI: hosting and history.
- Cloudflare Workers and Wrangler: this site.
- macOS and Xcode’s command-line tools, by Apple.
Data
- The Unicode Character Database 17.0.0 and UAX #29: grapheme clusters in
strandchar. - The comparison on Home draws on each language’s own documentation, named under the table.
Rust crates
Zomp’s, from zomp/Cargo.lock. The reference interpreter and the verification harness use no crates.
anyhow 1.0.104, bitflags 2.13.2, cc 1.4.7, find-msvc-tools 0.1.13, inkwell 0.10.0, inkwell_internals 0.15.0, lazy_static 1.5.0, libc 0.2.189, llvm-sys 221.1.0, proc-macro2 1.0.107, quote 1.0.47, regex-lite 0.1.9, semver 1.0.28, shlex 2.0.1, syn 3.0.6, thiserror 2.0.20, thiserror-impl 2.0.20, unicode-ident 1.0.26, unicode-segmentation 1.13.3.
Website packages
This site: React, React Router, isbot, Vite, Shiki (with its TextMate grammar engine), which colours the code, and Cloudflare’s Wrangler.
Every package in this site’s package-lock.json (233)
@babel/code-frame 7.29.7, @babel/compat-data 7.29.7, @babel/core 7.29.7, @babel/generator 7.29.8, @babel/helper-compilation-targets 7.29.7, @babel/helper-globals 7.29.7, @babel/helper-module-imports 7.29.7, @babel/helper-module-transforms 7.29.7, @babel/helper-string-parser 7.29.7, @babel/helper-validator-identifier 7.29.7, @babel/helper-validator-option 7.29.7, @babel/helpers 7.29.10, @babel/parser 7.29.9, @babel/template 7.29.7, @babel/traverse 7.29.10, @babel/types 7.29.8, @cloudflare/kv-asset-handler 0.5.0, @cloudflare/unenv-preset 2.16.2, @cloudflare/workerd-darwin-64 1.20261012.1, @cloudflare/workerd-darwin-arm64 1.20261012.1, @cloudflare/workerd-linux-64 1.20261012.1, @cloudflare/workerd-linux-arm64 1.20261012.1, @cloudflare/workerd-windows-64 1.20261012.1, @cspotcode/source-map-support 0.8.1, @emnapi/runtime 1.11.3, @esbuild/aix-ppc64 0.28.2, @esbuild/android-arm 0.28.2, @esbuild/android-arm64 0.28.2, @esbuild/android-x64 0.28.2, @esbuild/darwin-arm64 0.28.2, @esbuild/darwin-x64 0.28.2, @esbuild/freebsd-arm64 0.28.2, @esbuild/freebsd-x64 0.28.2, @esbuild/linux-arm 0.28.2, @esbuild/linux-arm64 0.28.2, @esbuild/linux-ia32 0.28.2, @esbuild/linux-loong64 0.28.2, @esbuild/linux-mips64el 0.28.2, @esbuild/linux-ppc64 0.28.2, @esbuild/linux-riscv64 0.28.2, @esbuild/linux-s390x 0.28.2, @esbuild/linux-x64 0.28.2, @esbuild/netbsd-arm64 0.28.2, @esbuild/netbsd-x64 0.28.2, @esbuild/openbsd-arm64 0.28.2, @esbuild/openbsd-x64 0.28.2, @esbuild/openharmony-arm64 0.28.2, @esbuild/sunos-x64 0.28.2, @esbuild/win32-arm64 0.28.2, @esbuild/win32-ia32 0.28.2, @esbuild/win32-x64 0.28.2, @img/colour 1.1.0, @img/sharp-darwin-arm64 0.35.5, @img/sharp-darwin-x64 0.35.5, @img/sharp-freebsd-wasm32 0.35.5, @img/sharp-libvips-darwin-arm64 1.3.4, @img/sharp-libvips-darwin-x64 1.3.4, @img/sharp-libvips-linux-arm 1.3.4, @img/sharp-libvips-linux-arm64 1.3.4, @img/sharp-libvips-linux-ppc64 1.3.4, @img/sharp-libvips-linux-riscv64 1.3.4, @img/sharp-libvips-linux-s390x 1.3.4, @img/sharp-libvips-linux-x64 1.3.4, @img/sharp-libvips-linuxmusl-arm64 1.3.4, @img/sharp-libvips-linuxmusl-x64 1.3.4, @img/sharp-linux-arm 0.35.5, @img/sharp-linux-arm64 0.35.5, @img/sharp-linux-ppc64 0.35.5, @img/sharp-linux-riscv64 0.35.5, @img/sharp-linux-s390x 0.35.5, @img/sharp-linux-x64 0.35.5, @img/sharp-linuxmusl-arm64 0.35.5, @img/sharp-linuxmusl-x64 0.35.5, @img/sharp-wasm32 0.35.5, @img/sharp-webcontainers-wasm32 0.35.5, @img/sharp-win32-arm64 0.35.5, @img/sharp-win32-ia32 0.35.5, @img/sharp-win32-x64 0.35.5, @jridgewell/gen-mapping 0.3.13, @jridgewell/remapping 2.3.5, @jridgewell/resolve-uri 3.1.2, @jridgewell/sourcemap-codec 1.6.0, @jridgewell/trace-mapping 0.3.9, @jridgewell/trace-mapping 0.3.31, @oxc-project/types 0.154.0, @poppinss/colors 4.1.6, @poppinss/dumper 0.6.5, @poppinss/exception 1.2.3, @react-router/dev 8.4.0, @react-router/node 8.4.0, @remix-run/node-fetch-server 0.14.2, @remix-run/route-pattern 0.22.1, @rolldown/binding-android-arm-eabi 1.2.14, @rolldown/binding-android-arm64 1.2.14, @rolldown/binding-darwin-arm64 1.2.14, @rolldown/binding-darwin-x64 1.2.14, @rolldown/binding-freebsd-x64 1.2.14, @rolldown/binding-linux-arm-gnueabihf 1.2.14, @rolldown/binding-linux-arm64-gnu 1.2.14, @rolldown/binding-linux-arm64-musl 1.2.14, @rolldown/binding-linux-ppc64-gnu 1.2.14, @rolldown/binding-linux-s390x-gnu 1.2.14, @rolldown/binding-linux-x64-gnu 1.2.14, @rolldown/binding-linux-x64-musl 1.2.14, @rolldown/binding-openharmony-arm64 1.2.14, @rolldown/binding-win32-arm64-msvc 1.2.14, @rolldown/binding-win32-x64-msvc 1.2.14, @rolldown/pluginutils 1.0.1, @shikijs/core 4.4.3, @shikijs/engine-javascript 4.4.3, @shikijs/engine-oniguruma 4.4.3, @shikijs/langs 4.4.3, @shikijs/primitive 4.4.3, @shikijs/themes 4.4.3, @shikijs/types 4.4.3, @shikijs/vscode-textmate 10.0.2, @sindresorhus/is 7.2.0, @speed-highlight/core 1.2.24, @types/hast 3.0.5, @types/mdast 4.0.4, @types/unist 3.0.3, @ungap/structured-clone 1.4.0, babel-dead-code-elimination 1.0.12, baseline-browser-mapping 2.11.28, blake3-wasm 2.1.5, browserslist 4.29.3, caniuse-lite 1.0.30001816, ccount 2.0.1, character-entities-html4 2.1.0, character-entities-legacy 3.0.0, chokidar 5.0.0, comma-separated-tokens 2.0.3, confbox 0.3.1, convert-source-map 2.0.0, cookie 1.1.1, cookie-es 3.1.1, debug 4.4.3, dedent 1.7.2, dequal 2.0.3, detect-libc 2.1.2, devlop 1.1.0, electron-to-chromium 1.5.456, error-stack-parser-es 1.0.5, es-module-lexer 2.3.2, esbuild 0.28.2, escalade 3.2.0, exit-hook 5.1.0, exsolve 1.1.3, fdir 6.5.0, fsevents 2.3.3, gensync 1.0.0-beta.2, hast-util-to-html 9.0.5, hast-util-whitespace 3.0.0, html-void-elements 3.0.0, isbot 5.2.2, js-tokens 4.0.0, jsesc 3.1.0, json5 2.2.3, kleur 4.1.5, lightningcss 1.33.0, lightningcss-android-arm64 1.33.0, lightningcss-darwin-arm64 1.33.0, lightningcss-darwin-x64 1.33.0, lightningcss-freebsd-x64 1.33.0, lightningcss-linux-arm-gnueabihf 1.33.0, lightningcss-linux-arm64-gnu 1.33.0, lightningcss-linux-arm64-musl 1.33.0, lightningcss-linux-x64-gnu 1.33.0, lightningcss-linux-x64-musl 1.33.0, lightningcss-win32-arm64-msvc 1.33.0, lightningcss-win32-x64-msvc 1.33.0, lodash 4.18.1, lru-cache 5.1.1, mdast-util-to-hast 13.2.1, micromark-util-character 2.1.1, micromark-util-encode 2.0.1, micromark-util-sanitize-uri 2.0.1, micromark-util-symbol 2.0.1, micromark-util-types 2.0.3, miniflare 5.20261012.0-beta, ms 2.1.3, nanoid 3.3.20, node-releases 2.0.58, oniguruma-parser 0.12.2, oniguruma-to-es 4.3.6, p-map 7.1.1, path-to-regexp 6.3.0, pathe 2.0.3, picocolors 1.1.1, picomatch 4.0.7, pkg-types 2.3.3, postcss 8.5.30, property-information 7.2.0, react 19.3.1, react-dom 19.3.1, react-refresh 0.18.0, react-router 8.4.0, readdirp 5.1.1, regex 6.1.0, regex-recursion 6.0.2, regex-utilities 2.3.0, rolldown 1.2.14, scheduler 0.28.0, semver 6.3.1, semver 7.8.5, sharp 0.35.5, shiki 4.4.3, source-map-js 1.2.2, space-separated-tokens 2.0.2, stringify-entities 4.0.4, supports-color 10.2.2, tinyglobby 0.2.17, trim-lines 3.0.1, tslib 2.8.1, undici 7.29.1, unenv 2.0.0-rc.24, unist-util-is 6.0.1, unist-util-position 5.0.0, unist-util-stringify-position 4.0.0, unist-util-visit 5.1.0, unist-util-visit-parents 6.0.2, update-browserslist-db 1.3.4, valibot 1.5.0, vfile 6.0.3, vfile-message 4.0.3, vite 8.3.4, workerd 1.20261012.1, wrangler 4.151.0, ws 8.21.0, yallist 3.1.1, youch 4.1.0-beta.10, youch-core 0.3.3, zwitch 2.0.4.
Ideas taken from other languages
- Rust: ownership and borrowing, lifetime groups (
'athere,@xhere), interfaces and<T: Ordered>bounds (Rust’s traits), diagnostics “helpful like Rust’s”,::for stepping into another strike (Rust’s paths, which took it from C++), and, as spellings of Zag’s words,&and&mutforlendandlend.mut(andlent,lent.muton a parameter),*const Tand*mut Tfor the pointer types. - C++:
incl.C, reading a C header, from#include <>(owner: “I wanna add C++’s#include <>”). - C:
'i' += 1;and'i'++;as spellings ofchange 'i' = 'i' plus 1;; with Rust and Go,/and%rounding toward zero (div.trunc,mod.trunc). - Python:
**forpow. - Ada:
and then/or else, hereand.then/or.else. - Swift, Zig and C: points of comparison in the SIMD, wrapping-arithmetic and enum decisions.
- IEEE 754:
bin16,bin32andbin64arithmetic and rounding. - Google Brain:
brain16is bfloat16, the 16-bit format from Google Brain. - Lua: the name Lunae.
- Kespar, another of the owner’s languages: the prover’s design notes and its first provisional limits.
- Xag, the owner’s C++ language: the reference for everything outside the prover, and the licence.
Copyright 2026 Tankun Sriket.