Conditions are data.
Missing files, timeouts, permission failures and hostile input are named values. Programs must decide what those states mean.
Native ahead-of-time language
Freelang makes world states explicit, treats impossible states as fatal, and gives foreign authority a process boundary.
Freelang is the common name; FreedomLang is the formal name. It compiles through its own frontend and IR to native programs and WebAssembly. There is no VM, JIT, LLVM pipeline or default libc/CRT dependency in generated native programs.
The design
Freelang is designed for a world containing much more machine-written code. Repeated footguns do not become acceptable because a model can generate them quickly.
Missing files, timeouts, permission failures and hostile input are named values. Programs must decide what those states mean.
Bad tags, corrupt heap layouts and impossible control states terminate. Recovery is for modeled conditions, not for violated invariants.
GUI, audio, TLS and other foreign capability live behind bounded, versioned, process-isolated protocols rather than a convenient in-process FFI.
Execution model
Concurrency uses real operating-system processes. Capsules cross a checked same-binary boundary; joins, redirects, failures and ownership remain visible.
The Canonical Guide gives the complete execution model.
The same Freelang operations serve native backends and the reduced-authority WASM target. Browser hosts receive only the operations admitted by the target manifest.
credits: <f/files>;
let report = read["report.txt"] with chaos {
Missing(_) => "no report"
Denied(_) => "permission refused"
};
print report;
Implemented claims
| Frontend | Freelang source → checked frontend → basic-block IR → target backend. |
|---|---|
| Native output | Mach-O for macOS ARM64/x86-64, direct ELF64 for Linux x86-64 and direct PE32+ for Windows x86-64. |
| Runtime | Feature-selected helpers, precise-by-frame non-moving mark/sweep GC, typed bytes and explicit UTF-8 boundaries. |
| Concurrency | FSABI process jobs with bounded capsule transport and platform-equivalent joins. |
| Browser | Dependency-free WASM modules with precise roots and a finite versioned host import surface. |
| Proof | Cross-platform suites, stress collection, differential backends, signed release evidence and application-driven language features. |
A complete application
The public Doom-format engine is the source-visible application proof. It includes native and browser entries without publishing the compiler, standard library, intrinsic implementation or sidecar source.
One Freelang session owns simulation and game state across native presenters and the browser worker.
The browser admits a caller-selected WAD locally. It does not upload or redistribute those bytes.
Laser blaster, permanent exploration shield, FPV drone, music, scan view and shared combat rendering.
Writing
Two current deep-dives account for the bytes in a real Freelang HTTP server and follow its compilation without an assembler or linker.
Start from the ELF artifact and work backward through syscalls, labels and runtime machinery.
Follow the compiler from source and IR to exact ELF bytes and deterministic cross-host output.
Commercial distribution
The compiler is proprietary. The Builder's Kit supplies signed compiler binaries and the private development materials needed to build Freelang programs. Individual and five-seat Team licenses are one-time purchases for the releases named by the entitlement.