Faber 1.2.0
| Field | Value |
|---|---|
| Product | Faber |
| Version | 1.2.0 |
| Tag | faber-v1.2.0 |
| GitHub | faber-v1.2.0 |
| Published | 2026-07-22 |
| License | MIT |
Install this version#
Pinned download for Faber 1.2.0. For the current release, use Install instead.
| Platform | Archive | Size | Checksum |
|---|---|---|---|
| macOS arm64 | faber-v1.2.0-aarch64-apple-darwin.tar.gz | 5.6 MB | sha256 |
| Linux x64 | faber-v1.2.0-x86_64-unknown-linux-gnu.tar.gz | 6.3 MB | sha256 |
curl -fsSL -o faber.tgz \
https://github.com/faberlang/releases/releases/download/faber-v1.2.0/faber-v1.2.0-aarch64-apple-darwin.tar.gz
tar -xzf faber.tgz
sudo mv faber-v1.2.0-aarch64-apple-darwin/faber /usr/local/bin/
faber --versionRelease notes#
Minor product release spanning 73 commits since v1.1.1
(2026-07-17→2026-07-22). Headline: Cista-composed install/resolve, the
browser product pipeline (DEFER-120), a compiler pin to Radix 0.77.0,
FMIR artifact version 3 with unsigned constants, hosts-monorepo
core-support, and a large hygiene/test ratchet.
Scale#
| Signal | Count |
|---|---|
| Commits (no merges) | 72 |
feat(...) commits | 16 |
fix(...) commits | 14 |
test(...) commits | 15 |
The range also contains 1 merge (07015f9, DEFER-120 browser-controller gaps
1+4), for 73 commits total. Remainder of the range: 11 chore, 4 refactor,
4 docs, 3 polish, 2 ci, 1 style, 1 release, 1 proof-row correction
(d-p-02).
git log v1.1.1..v1.2.0 --oneline --no-mergesMajor tracks#
Cista composition for install/resolve#
The product composition law is recorded (docs(design)): Faber is the product
seam that composes Radix and Cista; spawn-only separation is retired as
long-term law. Install and library resolution now route through Cista:
faber installfor path sources (09f3443) and for git sources (16bb59c — temporary checkout, requirescista.toml, Cista called in-process) uses the package store and project-lock rewrite path; registry pins route through Cista (7329a80).- The legacy
FABER_LIBRARY_HOMEsource-library clone path is removed from the default surface (remains behind an explicit--legacy-library-home); the legacy library-home path is removed (11ee45f). - Store-only library locks are proved (48ff510); the workspace-library probe is made opt-in (bf4cf44).
faber mirCLI alias added; install help clarified (4b03c04).feat: norma http client routed to the runtime; normasolum fundetroute,normajson e2e package roundtrip, and rust build covered by tests.
Browser product pipeline (DEFER-120)#
faber build accepts browser product recipes (4243291) and generates browser
static assets (73713d0), a browser controller ESM (ec001c2), controller
lifecycle + browser event ambient types (fc1a0e1, eff801b):
- Product-path registry unifies
faber-ts/faber-esm/tsconfig/ output-filename literals under one source of truth (a052f55, 02f32d8 — CXO producer-hole residual 8530ddb7 closed). - Generated outputs fail closed against static assets and against each other
(
product_output_collision); package-qualified origin validation forWebController/Scoperejects local shadowing withproduct_controller_unqualified_origin(auditor block_ship closures 96a8d17, 272ca15, 163db2e). - Web ambient declarations expand to the full
dom.fab/web.fabexport surface; controller TS adaptation rewritesnew unresolved_def()to{}and drops spurious: voidclosures so WEB5 fixtures type-check under tsc (8aec665). - Regression coverage:
tests/web2_build_integration_test.rs; gap-1/gap-4 tests for missing controller andunresolved_defrewrite (b9d0c2d);g10_web3_*negative tests for local shadowing. - Merge
07015f9integrates the DEFER-120 gaps 1+4 branch (test coverage).
Compiler pin: Radix 0.77.0#
The path-dep pin moves from 0.38.0 → 0.77.0 (release commit 973ac37):
- radix diagnostics peel:
DiagnosticConverttrait import (3839a49);Diagnostic::io_errornow borrows (449ad33). - New transitive leaf path-dep locks:
radix-types,radix-hir,radix-codegen-shared,radix-codegen-ts(radix Stage 1C/2/0b extracts). - Package MIR adapts to the rust-leaf extract:
MirKernelBuiltin/CliProgrammapped to radix-codegen-rust surfaces (06cc92f);MirIntrinsic::Gradientmatch arm added — A-rail gap (2e924e3); missingshader_stagefield fixed inmir_test(d008ed3). - 61 of 67 post-annotation test failures resolved (806ac7b): explain/reference
registry assertions 194→195 entries, 178→179 terms; text-contract
diagnostic-code expectations after reader-locale changes; package tests via
an unconditional workspace probe. The remaining 6 (
g8_sqlite×4,g9_api3_http×2) are pre-existing cargo build errors in generated code with external runtime deps.
FMIR artifact version 3#
MirConstant gains UInt(u64) unsigned constants (modular-word-width family,
R0–R4), shifting postcard variant indexes; text and binary FMIR images move to
artifact version 3 with an exact-match version gate — v2 images reject with
actual=2, expected=3 and no source fallback. R0 failing proofs land first
(0565523), then the version bump (830b2ed); upper-half u64 constants
round-trip through built images. The corpus gains modulus terms, raising the
canonical term count to 178 and the explain registry entries to 194 (07720d9,
R4); a later fix raises the assertions to 179/195 after the examples corpus
adds an "ergo" term.
Hosts-monorepo core-support#
Core-support assembly moves to the hosts monorepo crate layout (hosts/crates,
18e4514); legacy host-*-rs root names are dropped. CI checks out the hosts
monorepo (mintedgeek/hosts) instead of the individual host repos (41cf7dc,
866224f), fixing the build.rs "required core-support path is missing" failure.
The private e2e harness relocates from radix into this repo as crates/exempla
(workspace member, 634c87b); D-P-02 proof rows are corrected to match
remeasurement with a pre-existing faber compilation fix (1e0f1ce).
Hygiene and test ratchet#
- Clippy pedantic mechanical fixes across the tree (ad07402, 6b3a0fb, 4e4aa10, d26fb0c, ad8ad7f, cb64981); inline library tests extracted under the hygiene ratchet (2dff2ef); duplicate test-module path fixed (325a588).
- Large unit-test additions per
docs/factory/test-decomposition-report.md: 82 MIR utility tests, 24 Go compile tests, 19 frontmatter tests, 18 discovery tests, 17 binding-probe tests, 14 format tests, 13 run tests; missinghost:stderrcoverage added (0bbd565). - Arabic reader-locale emit test flagged
#[ignore](pre-existing parse error, unrelated to this release's annotation/codegen fixes); hygiene budgets ratcheted (expect 1→2, let_underscore 3→8).
CI / release workflow#
- Release checksum files now write basename-only sha256 files (128c749).
- macOS-13 Intel matrix dropped from the release workflow (unreliable GHA queue, 4675843); Linux x86_64 + macOS arm64 remain.
Companion pins (local path layout)#
| Surface | Head / note |
|---|---|
| Radix | 0.77.0 (local path dep) |
| Cista | in-process dependency for install/resolve routing |
| faber-runtime / hosts | core-support siblings per core-support-manifest.txt (hosts monorepo layout) |
Faber remains a path-composed product CLI; the release workflow checks out
siblings in CI via .github/workflows/release.yml.
Breaking / author-visible#
| Change | Migration |
|---|---|
Radix 0.38.0 → 0.77.0 compiler pin (path dep) | Rebuild against the 0.77.0 radix tree; radix annotation/diagnostics API changes apply |
Legacy FABER_LIBRARY_HOME source-library clone path removed from default install | Use Cista-routed installs; --legacy-library-home retains the old clone path |
| FMIR artifact version 3 with exact-version gate | v2 FMIR images are rejected (actual=2, expected=3) without source fallback |
Version alignment#
| Item | Value |
|---|---|
| Source tag | v1.2.0 (lightweight tag, 2026-07-22) |
Cargo.toml package version | 1.2.0 |
| Public artifact tag | faber-v1.2.0 on faberlang/releases |
| Build matrix | Linux x86_64 + macOS arm64 (Intel matrix dropped in this range) |
Known limitations#
- 6 pre-existing test failures remained at release:
g8_sqlite×4 andg9_api3_http×2 — cargo build errors in generated code with external runtime deps, not addressed in this release. - The Arabic reader-locale emit test is
#[ignore]d (pre-existing parse error, deferred for investigation). - No in-tree pre-release verification records exist for this era (the recorded-gates convention starts with v1.3.0).
- The
v1.2.0tag is a lightweight commit tag (the annotated-tag convention starts later).
---