q/docs
Eduard Urbach 96b9c1bf8d
All checks were successful
/ test (push) Successful in 17s
Updated documentation
2025-07-05 15:30:13 +02:00
..
elf.md Updated documentation 2025-07-05 14:43:53 +02:00
macho.md Added macho package 2025-06-30 20:31:07 +02:00
pe.md Added Windows support 2025-07-01 13:41:14 +02:00
readme.md Updated documentation 2025-07-05 15:30:13 +02:00

q

A programming language including compiler, assembler and linker with the following goals:

  • Fast compilation
  • High performance
  • Tiny executables

Installation

Build:

git clone https://git.urbach.dev/cli/q
cd q
go build

Symlink:

ln -s $PWD/q ~/.local/bin/q

Usage

Build:

q build examples/hello

Run:

./examples/hello/hello

Tests

To run all tests:

go run gotest.tools/gotestsum@latest

Every package must pass its unit tests.

The code coverage should ideally be around 80-100% for each package.

Integration tests that test the output of the produced executables are located in the dedicated tests directory.

Platforms

Matrix

arm64 x86-64
Linux ✔️ ✔️
Mac ✔️* ✔️
Windows ✔️* ✔️

Those marked with a star are supported in theory but there are no developer machines to test them.

Cross compilation

Compilation for a different target is supported out of the box:

q build examples/hello --os linux
q build examples/hello --os mac
q build examples/hello --os windows
q build examples/hello --arch x86
q build examples/hello --arch arm

Security

PIE

All executables are built as Position Independent Executables (PIE) supporting a dynamic base address.

Memory pages

Code and data are separated into different memory pages and loaded with different access permissions.

Read Execute Write
Code ✔️ ✔️
Data ✔️

Status

q is under heavy development and not ready for production yet.

Feel free to get in touch if you are interested in helping out.

License

Please see the license documentation.

© 2025 Eduard Urbach