🌱 A minimal programming language and compiler. git.urbach.dev/cli/q
high-performance programming-language compiler
readme.md
Q logo

The Q Programming Language

Features · Quickstart · Examples · Links

A minimal, dependency-free language that compiles to tiny, fast machine code.

Features #

  • 🚄 High performance - comparable to Rust and Zig.
  • 🚀 Fast compilation - 5-10x faster than most compilers.
  • 📦 Lightweight executables - 1 KB for simple programs.
  • 🔍 Static analysis - integrated linter catches common mistakes.
  • 🛡️ Pointer safety - pointers cannot be nil.
  • ♻️ Resource safety - use-after-free is a compile error.
  • 🧠 Simple syntax - control flow is easily understood.
  • 💬 Friendly errors - clear and concise compiler messages.
  • 🌐 General purpose - apps, servers, games, kernels, etc.
  • 🧩 Multiple architectures - x86-64 and arm64.
  • 🖥️ Multiple platforms - Linux, Mac and Windows.
  • 📖 Readable source - less than 1% of LLVM's code size.
  • 🧘 Zero dependencies - no external tools or libraries.

Quickstart #

Warning

Q is in early development. Design and implementation are changing continuously.

Install #

git clone https://git.urbach.dev/cli/q
cd q
go build
ln -s $PWD/q ~/.local/bin/

Run #

q examples/hello

Build #

q build examples/hello

Cross-compile with -os:

q build examples/hello -os windows

Inspect #

q ssa examples/hello   # SSA form
q asm examples/hello   # Assembly output

Examples #

hello #

import io

main() {
	io.write("Hello\n")
}

echo #

echo() {
	buffer := new(byte, 4096)

	loop {
		n, _ := io.read(buffer)

		if n == 0 {
			return
		}

		io.write(buffer[..n])
	}
}

fibonacci #

fibonacci(n int) -> int {
	if n <= 1 {
		return n
	}

	return fibonacci(n - 1) + fibonacci(n - 2)
}

fizzbuzz #

fizzbuzz(x int) {
	switch {
		x % 15 == 0 { io.write("FizzBuzz") }
		x % 5 == 0  { io.write("Buzz") }
		x % 3 == 0  { io.write("Fizz") }
		_           { io.write(x) }
	}
}

See more in the examples directory.

Docs #

Project #

Editors #

Community #

© 2025 Eduard Urbach