Gives Up
- Raw pointer arithmetic.
- Implicit runtime magic hidden from analysis.
- Comfort defaults that block whole-program knowledge.
Role: Landing Page / v1.0-rc1
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.
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;
}
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
Choose a mode. Each route is role-based and points at working content, not placeholders.
Compile and inspect outputs in-browser immediately.
Follow the curated tutorial sequence with runnable steps.
Start at RFC, then move into chaptered operational detail.
See architecture contracts, gates, and backend entry points.
Understand what Vexel intentionally avoids and why.
Run gates, follow ownership rules, and modify implementation safely.
Vexel states boundaries early so mismatched readers can leave quickly and correctly.
Pointer arithmetic is excluded to preserve whole-program reasoning and reliable CTE/DCE analysis.
Compile-time behavior belongs to one compiler pipeline, not scattered external generation scripts.
Landing is the gate. The pages below are the library: each with a distinct role and stable route.
Learn by running examples and inspecting emitted output.
RFC first, detailed specification second.
Frontend/backend ownership and pass-level machine model.
The explicit refusals that define the language boundary.
Operational gates, ownership rules, and implementation entry points.
Source tree, issues, and implementation history.
The frame loads docs/playground.html. Compile examples, switch backend output, and inspect build logs without leaving the site.