VX
Vexel Language Whole-program compilation with strict refusals

Role: Landing Page / v1.0-rc1

A narrow language that trades escape hatches for global reasoning.

Loading doctrine lines...

&add(a:#i32, b:#i32)->#i32 { a + b }
&^main()->#i32 { add(40, 2) }  // residual C: return 42;

Vexel rejects raw pointers and pointer arithmetic so the compiler can reason over the whole program graph. The frontend executes compile-time paths, removes dead symbols, and hands a reduced contract to backends. The point is not convenience. The point is controllable behavior under full visibility.

Gives Up

  • Raw pointer arithmetic.
  • Implicit runtime magic hidden from analysis.
  • Comfort defaults that block whole-program knowledge.

Gains

  • Compile-time execution on real program paths.
  • Aggressive dead-code elimination before codegen.
  • Backend freedom over a stable analyzed contract.

Evidence Near the Gate

Real compile artifact from examples/tutorial/quickadd.vx. Frontend folding and DCE leave a single exported behavior.

Input + command

&add(a:#i32, b:#i32) -> #i32 { a + b }
res:#i32 = add(40, 2)
&^main() -> #i32 { res }

./build/vexel -b c examples/tutorial/quickadd.vx -o vxproof

Observed output (vxproof.c)

#include "vxproof.h"

// VEXEL: kind=function export=yes reentrant=yes ref_mask=- pure=yes no_global_write=yes abi=native
int32_t main(
) {
return 42;
}

Evidence: DCE Contract Surface

Second artifact from the same compile: emitted header states live-surface semantics after dead-code elimination.

Observed output (vxproof.h)

// Generated by Vexel compiler
// Dead code elimination: only reachable functions and referenced globals/types are generated

// VEXEL: kind=function export=yes reentrant=yes ref_mask=- pure=yes no_global_write=yes abi=native
int32_t main(
);

Interpretation

- helper function add() is not emitted
- global res is folded into return value
- ABI-visible surface is reduced to main()
- backend receives residual contract, not original source topology

Route Selector

Choose a mode. Each route is role-based and points at working content, not placeholders.

Refusal Field

Vexel states boundaries early so mismatched readers can leave quickly and correctly.

No raw pointers

Pointer arithmetic is excluded to preserve whole-program reasoning and reliable CTE/DCE analysis.

No split generator culture

Compile-time behavior belongs to one compiler pipeline, not scattered external generation scripts.

If unconstrained pointer-level control is your first requirement, Vexel is intentionally the wrong language.

Library Map

Landing is the gate. The pages below are the library: each with a distinct role and stable route.

Integrated Playground

The frame loads docs/playground.html. Compile examples, switch backend output, and inspect build logs without leaving the site.

Checking playground availability...