VOID Language

Familiar syntax.
Built for games.

An independently designed game-development language with its own compiler, runtime, GC, standard library, native C output, and a compiler-side language server powered by the same semantic model as normal builds.

The language today

A complete working core, not a syntax experiment.

VOID now combines a broad object model, deterministic disposal and using, nested and readonly value types, jagged and rectangular arrays, completed closures and iterators, declaration/recursive patterns and switch expressions, user-defined and constrained generic operators, inferred and constrained generics, extension methods, static/default interface methods, structured exceptions with GC-safe unwinding and finally, nullable values, managed GC, reusable native library output, native/unsafe interoperability, precise diagnostics, source-only checking, semantic queries, and native debug information mapped back to original .void files.

Game-facing language

Classes, nested/readonly structs, inheritance, interface contracts, constructor chaining/delegation, virtual properties, constrained generics, delegates, nested/by-reference closures, iterators, jagged/rectangular arrays, custom events, conditional and switch expressions, declaration/property/recursive patterns, user-defined operators and static-interface operator contracts, nullable values, and structured try/catch/finally exception flow all work together.

Native compiler pipeline

VOID lowers to portable C, then uses the system native compiler and linker. Debug builds preserve original VOID filenames and source lines through standard native debug information.

Compiler-owned tooling

voidc check, live ranged diagnostics, hover, signature help, semantic completion, definitions, references, document/workspace symbols, and debug mapping all reuse the same compiler semantics used by real builds.

Current direction

Iterator Lifetime & Generic Operator Foundations is complete.

Iterator pattern locals now survive suspension with correct lifetime/GC behavior, user-defined unary and binary operators share normal semantic resolution, and static-interface operator contracts enable constrained generic operator dispatch. The active phase now consolidates VOID conversion semantics around one authoritative semantic engine.

Built with a purpose

Keep language intelligence inside the compiler.

The same parser, semantic model, diagnostics, and symbols now power builds, source-only checks, live diagnostics, hover, completion, navigation, references, and workspace symbols. Editor clients can stay thin instead of duplicating language logic.

?

Nullability & initialization

Nullable values, named arguments, target-typed defaults, initializers, static state, and deterministic type initialization compose normally.

✓

Source-only checking

voidc check runs the real front end without generating C, invoking a native compiler, or creating build outputs.

⌕

Semantic queries

Tools can ask the compiler for symbols, types, definitions, members, and callable parameter metadata from one analyzed session.

↦

Precise diagnostics

Tokens, syntax, and compiler errors retain end-exclusive start/end source ranges.

#

Debug source mapping

Generated C emits standard line mappings so native debug information points back to original VOID files and lines.

L

Compiler-backed LSP

Live diagnostics, hover, signatures, semantic completion, definitions, references, document/workspace symbols, and synchronized unsaved project state.

C

Native C integration

VOID lowers to C and links project-local native dependencies through its explicit unsafe ABI boundary.