FREAKV3 docs freak 0.14.2 (Maverick)

Bible vs V3#

> A section-by-section comparison of freak-full-bible.md against what the V3 compiler accepts, established by compiling probe programs.

Method#

The bible carries its own status table in §0.2, but that table describes the project as a whole — it counts a feature as landed when it works in the V4 compiler under src/compiler/v4/. Many rows marked "⚠️ Partial" are entirely absent from the shipping V3 compiler.

The verdicts below come from a different method: writing a probe program for each feature and running it through a V3 binary built from source. "Compiles" means the frontend accepted it. "Rejected" quotes the actual diagnostic.

45/45
documentation examples compileVerified with freak 0.14.2 (Maverick) on 2026-09-12T16:12:25Z. Every code block on this site marked compiles was built by that compiler and, where it produces output, executed.
Note

A recurring pattern is worth stating once. Many bible features are lexed but not parsed: the lexer knows the keyword, so it can never be an identifier, but no grammar rule consumes it. These fail with "unexpected 'X' — this token cannot start an expression". The feature is reserved and unusable at the same time.

Section 1 — Syntax#

Bible status: ⚠️ Partial. Real V3 status: a small core works.

§1 featureBibleV3Evidence
1.1 pilot / fixed pilot / pilot mutCompiles
1.1 Type annotation x: TCompiles — one identifier, plus List<T>
1.2 task name(p: T) -> R { }Compiles
1.2 give backCompiles
1.2 Arrow body => exprRejectedexpected '{', found '=>'
1.2 done block terminatorRejectedexpected '{', found 'give back'
1.2 Named call argumentsV4Rejected
1.2 sayCompiles — scalars only, not shapes
1.2 {path} interpolationCompiles — paths only, never calls
1.3 int num word bool voidCompiles
1.3 uint tiny char big float float32 neverV4Absent
1.3 [T; N], tuples, *T / *mut TV4Rejected
1.4 maybe<T> / some / nobodyRejectedexpected '{', found '<'
1.4 result<T,E> / ok / errRejected
1.4 List<T>Compiles — typed, indexable, growable (push/pop/reserve/clear); no sort/insert/iterators
1.4 Map<K,V> Set<T> Lineup<T>AbsentNo map literal either
1.5 shape declarationCompiles
1.5 Shape construction S { f: v }CompilesLLVM backend
1.5 impl S { task m(self) }Compiles
1.5 Generic shapes shape Pair<A,B>V4Rejected
1.6 doctrine declaration⚠️Rejectedunexpected 'doctrine'
1.6 impl D for S { }⚠️CompilesD unvalidated
1.6 Operator dispatch via Add⚠️Rejectedoperator '+' does not accept Vec2 and Vec2
1.6 dyn Doctrine, vtablesV4Absent
1.7 if / else if / elseCompiles
1.7 when with literal arms and _⚠️Compiles — statement only
1.7 when with destructuringV4Absent
1.7 for each x in listRejectedunexpected 'for each'
1.7 repeat N times / repeat untilCompiles
1.7 training arc ... max N sessions⚠️Compiles
1.7 training arc ... with growthV4Rejected
1.7 break / continueCompiles
1.8 Closures |x| => expr⚠️Rejectedunexpected '|'
1.8 Capture modes copy / move / mutV4Absent
1.9 Pipe |>Compiles — bare task names only
1.10 ? propagationRejectedunexpected '?'. parse_status() is the closest substitute
1.10 check over maybe / resultRejectedunexpected 'check'
1.10 or elseRejectedunexpected 'or else'
1.11 Generics <T>, bounds⚠️Rejectedexpected '(', found '<'. List<T> is a hard-coded special case, not a mechanism
1.12 lend / lend mut⚠️Rejectedexpected an identifier for parameter name, found 'lend'
1.13 use module::{...}⚠️Stripped — a build hint, not an import
1.13 use module::*V4Stripped
1.13 launch visibility⚠️Rejectedunexpected 'launch'
1.14 variantV4Rejected
1.14 aliasV4Rejected
1.14 Root fixed pilot constants⚠️Compiles — and V3 also allows mutable root bindings and root statements, which the bible forbids
1.15 [a, b, c] literal⚠️Compiles — infers List<T> from its elements
1.15 [expr; N] repeat-fillV4Rejected
1.15 No implicit tail returnEnforced

Section 2 — Advanced type system#

Bible: 🔜 V4, entire section. V3: entirely absent, as documented.

power<N>, prob[lo..hi], causality<T> and mood do not lex or parse.

Section 3 — Concurrency#

Bible: 🔜 V4, entire section. V3: entirely absent.

No xm3, sortie, debrief, formation, BriefingRoom, wingman or Comms. None of those words are even keywords in V3's lexer. || lexes as a single token but has no grammar rule.

There is no concurrency in V3 at all — not even std::thread::spawn.

Section 4 — Borrow checker#

Bible: ⚠️ Partial, with an extensive description of V4's Meiya checker.

V3 ships Phase-1 only, behind --strict-borrow:

RuleV3
pilot immutable, pilot mut reassignableEnforced under the flag
Single-owner moves for word, arrays, shapesEnforced under the flag
int / num / bool are CopyEnforced under the flag
Nominal member validationAlways on, flag or not
lend / lend mut parametersDo not parse
Lifetimes 'a, outlives bounds 'long: 'shortDo not lex
Shared<T> / Weak<T>Absent
trust me ... on my honor as .levelDoes not parse
direct_order [arch] { }Does not parse

Without the flag, V3 does no ownership checking whatsoever.

Everything the bible's §4 describes at length — returned loans, provenance memoisation, fixed-layout aggregate children, snapshot restore, invalidation report fields — is V4 work in src/compiler/v4/. None of it exists in the shipping compiler.

Section 5 — Anime layer#

§5 featureBibleV3
5.1 @annotation⚠️Parses, ignored. One per statement, no arguments
5.1 @deprecated enforcement⚠️Not enforced
5.1 Caller prefixes sadly, for science,, knowing this will hurt,⚠️Rejected
5.2 foreshadow / payoffRejected — the auditor scans text only
5.3 route, check route, only onV4Rejected
5.4 PLUS ULTRA NAKAMA FINAL FORM TSUNDERE⚠️Compile, with different position and semantics
5.5 deus_ex_machina⚠️Rejected
5.6 training arc⚠️Compiles
5.6 with growthV4Rejected
5.7 isekai { } bringing back { }⚠️Rejected
5.7 eventually { }⚠️Compiles, emitted inline — not deferred, not LIFO
5.7 eventually if cond { }⚠️Rejected
Careful

The bible marks §5.2 foreshadowing as ✅ Implemented and the deus_ex_machina 20-word minimum as enforced. Both are true of the Python auditor, which scans source text. Neither construct parses in the native V3 compiler — a file using them audits cleanly and fails to build.

The four anime operators also diverge in form, not just in enforcement:

OperatorBibleV3
FINAL FORMpostfix, base FINAL FORMbase * base, 5s build pauseprefix, int only, x * x, no pause
PLUS ULTRAinfix, base PLUS ULTRA emotionbase * (1 + e²)prefix, int only, x * 2
TSUNDEREpostfix; !x for bool, -x for numprefix, int only, 0 - x
NAKAMAinfix, a + b + (a * b * 0.1)infix, int only, a + b

Section 6 — Modules and Hangar#

FeatureBibleV3
use module::{names}⚠️Line is replaced with a comment before parsing
use module::*V4Same — stripped
launch / launch(package)⚠️Rejected
Module-private visibility⚠️No visibility system at all
hangar.toml⚠️Works, but as [project] + [dependencies] only — not the bible's [unit]/[build]/[profile.*]
hangar init/add/remove/install/update⚠️Work, plus outdated, version, audit, login, publish
hangar searchV4Absent
Consuming an installed package⚠️Impossible — the build never reads hangar_modules/ or [dependencies]
Careful

V3 has no module system. Everything — your file, and every standard library file linked into the build — shares one flat global namespace. A use line only signals the build to link std/math3d.fk, std/zip.fk, std/ui/window.fk or the cockpit package. Every other module is already in scope without it. That also means Hangar can install a dependency it cannot then link. use pkg::{…} is stripped, the package source is never concatenated, and the first call fails with unknown callable. Verified against the shipping compiler — see Hangar & packages.

Section 7 — Standard library#

Bible moduleV3
std::word methodsPartial — as builtin word methods, plus .repeated(n). .substring takes a length, not an end index; no .split, .chars
std::word WordBuilderPresent as word_builder::* over an int handle
std::numAbsent — math::* builtins plus std_* int tasks instead
std::collections List<T>Partial — typed, indexable and growable as of v0.14.2; no sort, insert or iterators
std::collections Map/Set/LineupAbsent
std::iterAbsent
std::iosay and ask only
std::fsPartial — 7 builtins, no copy/move/is_file/is_dir
std::netPartial — the older tcp:: calls plus a tcp::socket_* family with listen, accept, timeouts and ByteBuffer transfer
std::timetime::now_ms() and time::monotonic_ns()
std::math8 math:: builtins; no log, exp, atan2, gcd, simd
std::randomAbsent
std::processPartial — adds pid() and set_env(); args() deliberately rejected in favour of args_count() / arg(i)
std::threadAbsent
std::bytesPresent as the builtin ByteBuffer type, with status() instead of result<T,E>
std::anime, std::narrative, std::testAbsent
std::mem, std::ffiAbsent
std::json, std::version, std::string, std::convert, std::algorithmPresent as FREAK source — not in the bible's shape, but real and working

Two std/algorithm.fk helpers are defective in the shipping compiler: array_sort_word segfaults, array_unique returns an empty array. Both were confirmed against the binary that verified this site.

Section 8 — Lexer#

The V3 lexer implements a subset of the bible's token table.

Present: the 47 single-word keywords, 6 bool literals, 10 multi-word keywords, and the punctuation set.

Absent: variant, alias, dyn, never, const, all concurrency keywords, knowing, on my honor as, declare was, prob when, direct_order, lifetime tokens 'a, numeric suffixes (42u, 3.14f, 42t, 999b), and ... ellipsis.

The bible's §8.3 requires V4 keywords to be matched case-sensitively so that Pilot and Some stay usable as identifiers. V3 does the opposite — it lowercases before comparing, so Pilot, Result and Max are keywords and cannot be names. This is the single largest practical divergence for someone writing V3 code.

Sections 9–17#

SectionBibleV3
§9 Parser AST nodes⚠️Core nodes only. No ErrorNode / IncompleteNode, no node ids, no incremental parsing
§10 Type checker⚠️Basic inference, arity and type checks, nominal member validation. None of the listed advanced rules
§11 Code generation⚠️LLVM and C backends work. No mood, variant, dyn, Shared<T> or classified codegen. LLVM emits LineTablesOnly DWARF
§12 Build modesV4Absent — only --opt=0..3 and backend choice
§13 Compiler CLI⚠️Most commands present; -o, --voice=, --clearance=, --build-mode=, and in-language test blocks absent
§14 Error voicesV4Absent — generic diagnostics, plus two signature borrow-checker lines
§15 Cheatsheet⚠️Describes the full language; roughly a fifth applies to V3
§16 FFIV4Only bare extern task f(...) -> T. No blocks, conventions, link=, layout attributes, raw pointers or trust me
§17 Compiler internals / IDEV4Absent. Parse errors abort; no tolerant AST, no panic infrastructure, no LSP

Summary#

Counting the bible's own feature inventory against compile evidence:

Compiles in V3Absent
§1 Syntax~20 of 45 sub-features~25
§2 Advanced types0all
§3 Concurrency0all
§4 Borrow checker3 Phase-1 rules, opt-inthe rest
§5 Anime layer4 of 2016
§6 ModulesHangar CLI onlythe module system
§7 Stdlib~8 of 19 modules, reshaped11
§16 FFI1 declaration formall else
Note

v0.14.2 update. Lists became growable (push, pop, reserve, capacity, clear, List::new, List::with_capacity), word gained checked parse_int/parse_num with a global parse_status(), and += now works on words. V3 is not standing still. List<T>, ByteBuffer, word_builder::*, the tcp::socket_* family, word.repeated(n), time::monotonic_ns(), process::pid() and ui::set_clip all landed after the first pass of this site was written, with VERSION unchanged at 0.14.1. Growable lists, checked parsing and word += followed in 0.14.2. The compiler generation is frozen for new semantics; the builtin table clearly is not. Re-run the verification harness when you pull.

V3 is a small, sharp, genuinely self-hosting language: scalars, words, shapes, methods, three loops, two branch forms, flat arrays and a C FFI. The bible describes where FREAK is going. This site describes where it is.

For what to write instead of the missing features, see Not in V3.

Every FREAK snippet on this site was compiled by freak 0.14.2 (Maverick), built from source with a verified self-host fixed point. 45/45 examples compile; regenerate with python tools/verify.py then python tools/build_docs.py.