NATIVE. EXPRESSIVE. PURPOSEFUL.

VOID
Language

Native code.
Clear intent. Bigger possibilities.

A general-purpose language for games, desktop applications, tools and systems software. Built with C++20 and LLVM, designed to keep your ideas in focus.

VOID · In active development

scores.voidVOID
# Count scores that meet the minimum.
func entry(minimum: i32) -> i32:
    var scores = [12, 18, 25]
    var qualified = 0
    for score in scores:
        if score >= minimum:
            qualified += 1
    return qualified
NATIVE ORC JIT Verified source example
$ voidc run scores.void 18
2
Real source. Shared LLVM JIT + AOT pipeline.
◇ Native compilation⌘ Readable syntax↗ General purpose

SAME IDEAS.
BIGGER WORLDS.

A LANGUAGE FOR YOUR NEXT IDEA

Clear source.
Real capabilities.

Build games, applications, tools and systems with a language designed to keep everyday code approachable and its behavior explicit.

01

Native execution

Compile to native code through one shared LLVM JIT/AOT pipeline. Run compiled source during development or emit objects for a linked executable.

Explore native compilation
02

Types that express intent

Value structs, managed objects, concrete generics and structural interfaces give data and behavior clear, predictable boundaries.

Understand values and objects
03

Readable, useful syntax

Name arguments, use pure defaults and let typed if-expressions produce values. String-only interpolation keeps text readable without implicit numeric conversion.

Explore pattern matching
04

Memory with clear ownership

Precise tracing garbage collection manages object memory. Scope-owned with/deinit cleanup releases resources deterministically; GC does not replace that lifetime.

Learn resource cleanup
05

Async work, kept together

Use async/await for cooperative tasks and task groups for related work. Scope exit joins children; cooperative scheduling is distinct from CPU parallelism.

Follow structured tasks
06

Independent native workers

Use spawn for supported CPU work on bounded native workers. The current subset transfers safe values and restricts shared mutable references.

See the worker boundary

SMALL PROGRAMS. USEFUL IDEAS.

See the shape
of VOID.

Complete source, a single integer input and a verified result. These programs use the current synchronous entry adapter; public builds are not available yet.

One choice, a concrete type.

Generic type inference keeps the chosen stock count an integer. A typed if-expression chooses stock or zero. Both branches are checked; only the selected value executes, without an implicit type conversion.

choose.voidDownload source
func choose<t>(use_first: bool, first: t, second: t) -> t:
    return if use_first:
        first
    else:
        second

func entry(stock: i32) -> i32:
    return choose(stock > 0, stock, 0)
Input 5Expected result 5
Understand generic functions

Give each state a name.

A shipment is waiting or ready with an item count. Pattern matching handles both states and names the payload only where it exists.

shipment.voidDownload source
enum shipment:
    waiting
    ready(items: i32)

func entry(items: i32) -> i32:
    var state = shipment.waiting
    if items > 0:
        state = shipment.ready(items)
    return match state:
        shipment.waiting: 0
        shipment.ready(var packed): packed
Input 5Expected result 5
Explore enums and patterns

FEEDBACK THAT UNDERSTANDS YOUR CODE

One language service.
Closer to your ideas.

Editor feedback comes from the compiler’s understanding of VOID source, so navigation and code intelligence follow the language’s own rules.

Understand. Navigate. Refine.

Completion, hover information, signature help, definitions and references, and document and workspace symbols are implemented in the compiler-owned language server. Project queries follow the selected entry’s reachable source graph. Nearest-main discovery and nested module paths keep that context explicit; documentation comments and interpolation references stay tied to source.

Guarded rename covers supported functions and bindings. Conservative four-space formatting preserves tokens, comments and imports; it does not promise a full reflow or general code actions.

Explore editor tooling

Meet your editor where it is.

VS Code and Neovim adapters include guards for version-sensitive edits. Vim uses yegappan/lsp for the shared language service, with rename disabled because its edit-safety contract differs.

These integrations have local Linux execution evidence. VSCodium is an integration target with execution still unverified. New Windows/macOS editor combinations and clean-machine distribution also remain unverified.

See current development
Implemented locally; broader validation is pending.

New capabilities are locally verified; broader platform and fresh interactive-editor validation are ongoing. No public compiler or editor builds are distributed here.

ROOM TO GROW

Built with intention.
More ahead.

A useful standard library, a package ecosystem, broader native integration and smoother live development are part of the direction.

Explore the working foundation, current priorities and longer-term goals, with clear boundaries and no promised release dates.

Explore the roadmap

YOUR NEXT IDEA STARTS HERE

Make room for possibility.

Explore VOID on GitHub ↗