FREAKV3 docs freak 0.15.1 (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 the bible marks 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.

84/84
executable examples compile and passVerified with freak 0.15.1 (Maverick) on 2026-10-18T21:50:54Z. Every code block on this site marked compiles was built, executed, and checked against its reviewed expected output.

The Bible column below reports the specification's own status legend, rendered as: Ships works end to end, Partial parsed but the guarantee is incomplete, V4 specified and not in the shipping compiler.

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 mutShipsCompiles
1.1 Type annotation x: TShipsCompiles — one identifier, plus List<T>
1.2 task name(p: T) -> R { }ShipsCompiles
1.2 give backShipsCompiles
1.2 Arrow body => exprShipsRejectedexpected '{', found '=>'
1.2 done block terminatorShipsRejectedexpected '{', found 'give back'
1.2 Named call argumentsV4Rejected
1.2 sayShipsCompiles — scalars only, not shapes
1.2 {path} interpolationShipsCompiles — paths only, never calls
1.3 int num word bool voidShipsCompiles
1.3 uint tiny char big float float32 neverV4Absent
1.3 [T; N], tuples, *T / *mut TV4Rejected
1.4 maybe<T> / some / nobodyShipsRejectedexpected '{', found '<'
1.4 result<T,E> / ok / errShipsRejected
1.4 List<T>ShipsCompiles — typed, indexable, growable (push/pop/reserve/clear); no sort/insert/iterators
1.4 Map<K,V> Set<T> Lineup<T>ShipsAbsentNo map literal either
1.5 shape declarationShipsCompiles
1.5 Shape construction S { f: v }ShipsCompilesLLVM backend
1.5 impl S { task m(self) }ShipsCompiles
1.5 Generic shapes shape Pair<A,B>V4Rejected
1.6 doctrine declarationPartialRejectedunexpected 'doctrine'
1.6 impl D for S { }PartialCompiles — D unvalidated
1.6 Operator dispatch via AddPartialRejectedoperator '+' does not accept Vec2 and Vec2
1.6 dyn Doctrine, vtablesV4Absent
1.7 if / else if / elseShipsCompiles
1.7 when with literal arms and _PartialCompiles — statement only
1.7 when with destructuringV4Absent
1.7 for each x in listShipsCompiles — over a List<T> and over int ranges
1.7 repeat N times / repeat untilShipsCompiles
1.7 training arc ... max N sessionsPartialCompiles
1.7 training arc ... with growthV4Rejected
1.7 break / continueShipsCompiles
1.8 Closures |x| => exprPartialRejectedunexpected '|'
1.8 Capture modes copy / move / mutV4Absent
1.9 Pipe |>ShipsCompiles — bare task names only
1.10 ? propagationShipsRejectedunexpected '?'. parse_status() is the closest substitute
1.10 check over maybe / resultShipsPartial — only check result over fs::read_checked(path)Any other check: expected keyword 'result'
1.10 or elseShipsRejectedunexpected 'or else'
1.11 Generics <T>, boundsPartialRejectedexpected '(', found '<'. List<T> is a hard-coded special case, not a mechanism
1.12 lend / lend mutPartialRejectedexpected an identifier for parameter name, found 'lend'
1.13 use module::{...}PartialPartial — imports named tasks from a project module or a declared dependency
1.13 use module::*V4Rejectedimport requires {symbol, symbol as alias}
1.13 launch visibilityPartialRejectedunexpected 'launch'
1.14 variantV4Rejected
1.14 aliasV4Rejected
1.14 Root fixed pilot constantsPartialCompiles — and V3 also allows mutable root bindings and root statements, which the bible forbids
1.15 [a, b, c] literalPartialCompiles — infers List<T> from its elements
1.15 [expr; N] repeat-fillV4Rejected
1.15 No implicit tail returnShipsEnforced

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. It carries an extensive description of V4's Meiya checker.

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

RuleV3
fixed / grounded pilots immutable; pilot and pilot mut reassignableAlways on, flag or not
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 @annotationPartialParses, ignored. One per statement, no arguments
5.1 @deprecated enforcementPartialNot enforced
5.1 Caller prefixes sadly, for science,, knowing this will hurt,PartialRejected
5.2 foreshadow / payoffShipsRejected — the auditor scans text only
5.3 route, check route, only onV4Rejected
5.4 PLUS ULTRA NAKAMA FINAL FORM TSUNDEREPartialCompile, with different position and semantics
5.5 deus_ex_machinaPartialRejected
5.6 training arcPartialCompiles
5.6 with growthV4Rejected
5.7 isekai { } bringing back { }PartialRejected
5.7 eventually { }PartialCompiles, emitted inline — not deferred, not LIFO
5.7 eventually if cond { }PartialRejected
Careful

The bible marks §5.2 foreshadowing as shipped 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 FORM → base * base, 5s build pauseprefix, int only, x * x, no pause
PLUS ULTRAinfix, base PLUS ULTRA emotion → base * (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}PartialWorks for a project's own modules (use self::m::{t}) and for a declared dependency (use dep::{t})
use module::*V4Rejected
launch / launch(package)PartialRejected
Module-private visibilityPartial[exports] limits what a dependent project can import; nothing is private inside a project
hangar.tomlPartialWorks with [project], [modules], [exports], [tests] and [dependencies] — not the bible's [unit]/[build]/[profile.*]
hangar init/add/remove/install/updatePartialPresent, plus outdated, version, audit, auth, publish. add resolves registry constraints against the Ordnance registry
hangar searchV4Absent
Consuming a packagePartialWorks for a dependency declared in [dependencies]; verified with a path dependency
Careful

V3's module system is the project manifest. hangar.toml names a project's modules, its exports and its dependencies, and use imports named tasks across them. launch does not parse and glob imports are refused. A single file built outside a project still shares one flat global namespace with every standard-library file linked into the build. There, a use std::… line only signals the build to link std/math3d.fk, std/zip.fk, std/ui/window.fk, std/test.fk, std/json_document.fk or std/http_server.fk. 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::narrativeAbsent
std::testPartial — test_assert* helpers behind use std::test; no test blocks
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 49 single-word keywords, 6 bool literals, 11 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 reserves a keyword in every letter case, so Pilot, Result and Max cannot be names. A capitalised single-word keyword does not work as the keyword either: only the lowercase spelling does. This is the single largest practical divergence for someone writing V3 code.

Sections 9–17#

SectionBibleV3
§9 Parser AST nodesPartialCore nodes only. No ErrorNode / IncompleteNode, no node ids, no incremental parsing
§10 Type checkerPartialBasic inference, arity and type checks, nominal member validation. None of the listed advanced rules
§11 Code generationPartialLLVM and C backends work. No mood, variant, dyn, Shared<T> or classified codegen. LLVM emits LineTablesOnly DWARF
§12 Build modesV4Absent — only --O0..--O3, LTO and backend choice
§13 Compiler CLIPartialMost commands present; --voice=, --clearance=, --build-mode=, and in-language test blocks absent
§14 Error voicesV4Absent — generic diagnostics, plus two signature borrow-checker lines. The opt-in --diagnostic-cast adds a stock character comment after a diagnostic; it is not the bible's voice system
§15 CheatsheetPartialDescribes 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 ModulesManifest modules, exports and dependencieslaunch visibility, glob imports
§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, 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.

Badged executable examples were compiled and run with the released freak 0.15.1 (Maverick). 84/84 examples match their reviewed expected output. Illustrative snippets are labelled separately. Regenerate with python tools/refresh.py.

V4 boxes were checked against the development snapshot 7c9a1f3c27 (2026-10-04); 46/46 V4 examples match their reviewed expectation. Regenerate with python tools/verify_v4.py --checkout <Freak-lang>.