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 textZag GitHub repo text: https://zag-lang.org, https://github.com/Soclets/Zag-lang
  • This website’s textZag website text: https://zag-lang.org, https://github.com/Soclets/Zag-lang
  • The logosZag 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

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 ('a there, @x here), 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 &mut for lend and lend.mut (and lent, lent.mut on a parameter), *const T and *mut T for 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 of change 'i' = 'i' plus 1;; with Rust and Go, / and % rounding toward zero (div.trunc, mod.trunc).
  • Python: ** for pow.
  • Ada: and then / or else, here and.then / or.else.
  • Swift, Zig and C: points of comparison in the SIMD, wrapping-arithmetic and enum decisions.
  • IEEE 754: bin16, bin32 and bin64 arithmetic and rounding.
  • Google Brain: brain16 is 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.