Skip to content

Quxlang

Quxlang (pronounced like "k-whuh-ks-lang" /ˈkwʌks.læŋɡ/) is a systems programming langauge focused on providing fast cross-platform deterministic and reproducible builds. Quxlang is a proper noun, simliar to Erlang, the language is never called "Qux".

This website documents the current compiler surface with feature-focused pages and source examples. Quxlang remains under active development and has not yet made a stable language release, so the current reference is descriptive rather than a long-term compatibility promise.

NO WARRANTY

These docs are provided without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

Development Status

Quxlang is in early development stages, and qxc can target Windows, MacOS and Linux. Future support for various BSD, Hurd, and other open source operating systems is planned for future work.

For native targets using LLVM, it currently supports x86, x64, ARM, ARM64 and z/Architecture(s390). Other architectures like RISC-V, POWER, SPARC, LoongArch64 and are planned to get future support, with RISC-V being the priority next target.

For non-native targets, qxc currently supports the Cortado backend for generating executable jar files which can be run using java -jar <jarfile>. Note that the current VMIR to Cortado translation algorithm is extremely inefficient and has no optimization passes or escape analysis (and no, the Java JIT compiler will not help much here). The inefficiency is mainly due a large number of bad workarounds to get totally ordered pointers and pointer arithmetic working in a "correct" manner in a virtual machine that doesn't support totally ordered pointers.

CLI/CIR support is planned for the future, but there is no current code for this. It is expected to perform much better than JVM due to CIR having pointers in the intermediate representation, which makes translation relatively trivial.

Website Content

AI Usage

This documentation contains a mixture of human written and AI generated content and may contain errors. Report any issues on Discord.

Overview

Explore the language

Values and computation

Read about primitive types, arrays, references, pointers, arithmetic operators, comparison operators, and conversions.

Functions and reusable code

Read about functions, the explicit call argument model, overloads, templates, variadic packs, and lambdas.

Control flow and compile-time execution

Read about conditional statements, LOOP WHILE loops, LOOP clauses, labels, and static evaluation.

Data modeling and lifetime

Read about structures, inheritance, constructors and destructors, explicit storage lifetime, compile-time allocation, STATIC constants, NEW and DELETE, enums, flagsets, unions, variants, and MATCH.

Abstraction and configuration

Read about interfaces, generics, conditional declarations, privacy, and build options.

Interoperation, concurrency, and testing

Read about serialization, integer encodings, external procedures, assembly procedures, atomic objects, thread-local variables, tests, and explicit diagnostics.

Current documentation boundary

The language reference covers implemented source forms supported by the live parser and exercised compiler paths. Target-specific gaps, including the lack of inheritance support in the JVM backend, are stated on the affected feature pages. Other forward-looking work is intentionally not listed as a current feature. Low-level VMIR instruction specifications are included in repository engineering documents rather than as part of the source-language reference.