Radix 0.25.0
| Field | Value |
|---|---|
| Product | Radix |
| Version | 0.25.0 |
| Source | Closed for now — see Open source |
Install this version#
No prebuilt archives were published for this version. It is listed here because its release notes are part of the record.
Release notes#
Release spanning 43 non-merge commits between v0.24.0 and v0.25.0. This is a significant language-evolution release focused on syntax modernization, keyword refactoring, project cleanup, and compiler-subsystem modularization.
Scale#
| Signal | Count |
|---|---|
| Commits (no merges) | 43 |
| Date span | 2026-01-16 → 2026-01-17 |
Major tracks#
Lambda keyword refactor: pro → clausura#
- The lambda keyword is renamed from
protoclausura.prois now reserved for for-loop iteration bindings (ex...pro,de...pro,casu...pro). The initial WIP pass updated the TypeScript parser, AST, semantic, codegen, Zed grammar, tests, and documentation (5c945abe9). The follow-up completed the refactor in the rivus lexer/lexicon and all exempla files (66b4ddaad). - Tests updated from old
prolambda references (ec974eb8a).
Sectional prefix syntax (§ ex)#
- Both faber and rivus parsers accept the
§ ex "module" importa Namesyntax for imports. Bare imports remain valid as a non-breaking superset (5f91affdb). The entire codebase was mass-migrated to the prefixed form (eefa1a11a).
Language removals and deprecations#
- Disabled `fit`/`fiet`/`fiunt`/`fient` return-type syntax: the return
arrow (
→) is now the canonical form. Also added@ cursorannotation for generator functions,@ imperiaannotation parsing, keywords as method names in pactum declarations, and structural type-alias resolution (fixes #117,
#226, #227, #228) (c53e1d526).
- Removed `in` mutation block syntax: the
in target { field = value }form is gone; the explicittarget.field = valueis canonical (closes #222) (d9199bd9f).
Multi-line string literals (""")#
- Triple-quote syntax for multi-line strings in both faber and rivus lexers.
Embedded newlines are preserved; no escape sequences needed for internal
quotes (
44e017e90).
Auto-wrap string literals in write/debug/warn#
- The faber parser automatically wraps string literals in
write,debug, andwarnstatements asscriptum("…")expressions. The§placeholder count determines how many trailing arguments are consumed (3b13c0d60). The rivus parser mirrors this behavior (358ca3bd9). Existing callsites across the codebase were simplified to the new sugar form (5fca4bf62).
tacet keyword for explicit empty blocks#
- Added
tacetkeyword support to the faber parser and rivus compiler, providing an explicit no-op statement for empty blocks (38b85d961,755a145e3).
null/nonnihil null-check operators#
- Added
nullandnonnihilas unary operators for null checks, plus a--no-typecheckbuild flag (21ca4f718). Updated rivus semantic errors for these operators (ed6c82b7d). Added compiler warning S018 for== nihil/!= nihilpatterns, guiding users toward the preferred unary forms (b8d6e9845).
§ annotations on Programma AST#
- Section annotations (
§) are now accumulated during parsing and stored on the Programma AST node instead of being discarded. Enables dependency resolution and build-config downstream features (closes #215) (dbe0cdad4).
Shared codegen extraction (#119)#
- Extracted target-agnostic codegen for
if/whilehandlers intoshared/si.fabandshared/dum.fab, withScopusSyntaxis,Generans,Revocatapactum infrastructure (9ce52c4a6). - Extracted
shared/elige.fabfor if/else chain generation fromswitchexpressions, unifying Go output with TypeScript (7206a38f8). - Extracted
shared/iteratio.fabfor range-loop codegen (genAmbitusIteratio), with newsyntaxisfields forforVarDecl,forVarAssign,habetAsync(436a9cedf).
Standalone test runner#
- Self-contained test harness with annotation-based configuration (
@ tag,@ temporis,@ omitte,@ solum,@ repete,@ fragilis,@ requirit,@ solumIn). Addsrivus testcommand with--tag,--exclude,--onlyfilter options and--strip-testsfor production builds. Works without Jest/Vitest dependencies (bf1c5e0de).
Rivus compiler refinements#
- Flatten deeply nested conditionals: reduced nesting from 5–6 levels to
2–3 in semantic and codegen paths using guard clauses (fixes #122)
(
88179ad37). - Consolidated body parsing into `parseCorpus` helpers: removed
parseCorpusBrevis, addedparseCorpusAutSententia, removed undocumentedfac...finelegacy block syntax (closes #220) (de450b525). - LPAREN lookahead for keyword disambiguation:
scribe("hello")is now correctly parsed as a function call rather than a keyword statement (fixes
#195) (e2587e446).
- `figendum` for async declarations: replaced explicit async handling in
CLI commands with
figendum(459acd751). - Rivus as primary compiler: documentation updated to present rivus as the
primary compiler for new development, with faber reserved as a bootstrap
compiler (
86cf46600).
Bug fixes#
- Parameter alias (
as) now correctly registers both names in scope (fixes
#225) (f385e0b29).
egoreturns instance type instead of metatype insideclassmethods, fixing fluent/builder patterns (fixes #224) (f12682d63).- Destructuring patterns (
ex obj fixum name, age,fixum [a, b, c] = arr) now register all bound identifiers in scope, including aliases, rest patterns, and placeholders (fixes #221) (79e3fc34f). - Regex flag parsing uses inline syntax
sed "(?i)pattern"instead of consuming the next token as a flag (fixes #223) (216b6f665). - Namespace kind preserved for HAL pactum imports in faber semantic/codegen
(
6a7eeb573).
CLI and build system#
--strip-testsflag for faber CLI to stripprobandum/probablocks from production builds (d3b9c7f00).--faber/--rivus/--artifexflags for selective stage builds in the build script (4b7740af2). Thebuild:exemplascript renamed toexempla(cca978258).- Removed
bun runwrappers; compilers run directly fromopus/bin/*binaries. The build chain is nowfaber source → opus/bin/faber → rivus source → opus/bin/rivus(9df83b609).
Project cleanup#
- Removed
consilia/(design docs) from the repository entirely (9c5ee9e21). - Removed
coreutils/(standalone binaries) from the repository entirely (b51543ea6). - Removed
editors/zed(Zed grammar and extension) from the repository entirely (65d3aaa55). - Removed
archivum/(historical design artifacts) from the repository entirely (304b51076).
Documentation#
- Updated
AGENTS.mdwith rivus as primary compiler, correct project layout, agent command syntax, and build-chain prerequisites (c11526342,02d365bdb,579085950,86cf46600,9df83b609). - Fixed documentation errors:
matchusescasenotif, stale references toconsilia/and old codegen filenames (6ac9031f1).
---