Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Small and fast JIT/AOT compiler with zero dependencies


Vox programming language

Vox is a multiparadigm programming language inspired by D (60%), Jai (30%), and Zig (10%).

Main features

  • Fast compilation
  • Strong metaprogramming
  • Can be used for scripting and standalone programs (both JIT and AOT compilation)
  • No dependencies (except D compiler)

Similarities to the D language

  • Same syntax for most portions of the language (struct, function, enum, for, while, if, UFCS, slices, arrays)
  • Conditional compilation
  • Templates, Variadic templates, and functions
  • C interoperability
  • Modules / Packages

Differences from the D language

  • No GC, minimal runtime, no classes (only structs), no exceptions
  • More compile-time features, faster CTFE
  • Using templates for heavy calculations is discouraged, instead, CTFE can be used for introspection, and code generation.
  • Macros (WIP)
  • No C++ interoperability



  • windows-x64 - host and target
  • linux-x64 - host and target
  • macos-x64 - only jit-mode


  • linux-arm64
  • wasm
  • windows-arm64?
  • spirv (Vulkan/OpenCL/OpenGL shaders)

Project goals

  • Strong focus on application extensions
  • Maximize user productivity
  • Maximize application performance
  • AOT and JIT, plugin support, runtime compilation, embedded compiler, tiered compilation
  • Static typing
  • Great error messages
  • Fast / Incremental compilation
  • Minimize effort needed for installation, setup, integration
    • Minimal dependencies/encapsulate dependency into module or package
    • Runtime as a library/minimal runtime/no runtime
    • Embedding/extern C
    • Code driven compilation, extending compiler from inside of the program being compiled
  • Processor intrinsics
  • Conditional compilation
  • CTFE, Templates, Introspection, Code generation

Syntax examples

i32 fib(i32 number) {
    if (number < 1) return 0;
    if (number < 3) return 1;
    return fib(number-1) + fib(number-2);

struct Point {
    i32 x;
    i32 y;

T min[T](T a, T b) {
    if (a < b) return a;
    return b;

Running & testing

In main.d uncomment one of the following lines:

//version = bench; // Runs benchmark
//version = devtest; // Run single test with fine-tuned logging. Useful for development. Uses tester.runDevTests(). Toggle options there for precise analisys while developing.
//version = test; // Runs test suite. Uses tester.runAllTests().

and run with: source> dmd -m64 -i main.d && main


ldc2 -d-version=bench -m64 -O3 -release -boundscheck=off -enable-inlining -flto=full -i main.d && main

Debug CLI build:

dmd -i -g -m64 -version=cli main.d -of=vox.exe

Release CLI build:

ldc2 -d-version=cli -m64 -O3 -release -boundscheck=off -enable-inlining -flto=full -mcpu=native -i main.d -of=vox.exe

Debug shared library build:

ldc2 -m64 -shared -g -d-debug -fvisibility=hidden -link-defaultlib-shared=false -i c_api.d -of=libvox.dll

Compiling with Profile Guided Optimization:

ldc2 -d-version=test -m64 -release -fprofile-instr-generate -mcpu=native -i main.d -of=vox_instrumented.exe
ldc-profdata merge default.profraw -output vox.profdata
ldc2 -d-version=cli -m64 -O3 -release -boundscheck=off -enable-inlining -flto=full -mcpu=native -fprofile-instr-use=vox.profdata -i main.d -of=vox.exe

Using Commandline interface

Getting help

Gives the full list of flags

vox --help

Input files

Each file must begin with --- <path>, three dashes, space, and name.

Files can be nested inside directories --- dir/dir2/file.txt.


--- main.vx
import kernel32;
void main() { ExitProcess(42); }
--- kernel32.vx
@extern(module, "kernel32")
noreturn ExitProcess(u32 uExitCode);

Can be compiled with vox program.har

CLI Tools

The compiler contains embedded tools:

PDB dump

Prints content of vox.pdb file into stdout.

vox pdb-dump vox.pdb

Syntax highlighting


To get some syntax highlighting on GitHub define .gitattributes file in the repository with the following content (docs):

*.vx linguist-language=D

All .vx files will be highlighted and classified as D.


Compiler overview


  • Impl size: 40k LoC of D, 3MB exe
  • Time to compile: 4s debug / 45s release
  • Test suite: 95ms for 361 tests
  • Time to compile 10MLoC of fibonacci: 8s on Windows, 7.5s on Linux

For more in detail description of implementation see