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.
Other Links¶
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¶
- Getting Started explains the source-bundle model and the shortest path to a first program.
- First Program walks through one complete source file.
- The
qxcbuild.ymlOverview introduces targets, module mappings, build options, and outputs. - Language Overview gives an example-led tour of every language feature.
- Syntax at a Glance is a compact lookup page.
- Design Philosophy explains the goals behind determinism, value semantics, safety boundaries, and control flow.
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.