Renderingen-US

Faber 1.2.0

FieldValue
ProductFaber
Version1.2.0
Tagfaber-v1.2.0
GitHubfaber-v1.2.0
Published2026-07-22
LicenseMIT

Install this version#

Pinned download for Faber 1.2.0. For the current release, use Install instead.

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 --version

Release 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#

SignalCount
Commits (no merges)72
feat(...) commits16
fix(...) commits14
test(...) commits15

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-merges

Major 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 install for path sources (09f3443) and for git sources (16bb59c — temporary checkout, requires cista.toml, Cista called in-process) uses the package store and project-lock rewrite path; registry pins route through Cista (7329a80).
  • The legacy FABER_LIBRARY_HOME source-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 mir CLI alias added; install help clarified (4b03c04).
  • feat: norma http client routed to the runtime; norma solum fundet route, norma json 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 for WebController / Scope rejects local shadowing with product_controller_unqualified_origin (auditor block_ship closures 96a8d17, 272ca15, 163db2e).
  • Web ambient declarations expand to the full dom.fab / web.fab export surface; controller TS adaptation rewrites new unresolved_def() to {} and drops spurious : void closures so WEB5 fixtures type-check under tsc (8aec665).
  • Regression coverage: tests/web2_build_integration_test.rs; gap-1/gap-4 tests for missing controller and unresolved_def rewrite (b9d0c2d); g10_web3_* negative tests for local shadowing.
  • Merge 07015f9 integrates the DEFER-120 gaps 1+4 branch (test coverage).

Compiler pin: Radix 0.77.0#

The path-dep pin moves from 0.38.00.77.0 (release commit 973ac37):

  • radix diagnostics peel: DiagnosticConvert trait import (3839a49); Diagnostic::io_error now 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 / CliProgram mapped to radix-codegen-rust surfaces (06cc92f); MirIntrinsic::Gradient match arm added — A-rail gap (2e924e3); missing shader_stage field fixed in mir_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; missing host:stderr coverage 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)#

SurfaceHead / note
Radix0.77.0 (local path dep)
Cistain-process dependency for install/resolve routing
faber-runtime / hostscore-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#

ChangeMigration
Radix 0.38.00.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 installUse Cista-routed installs; --legacy-library-home retains the old clone path
FMIR artifact version 3 with exact-version gatev2 FMIR images are rejected (actual=2, expected=3) without source fallback

Version alignment#

ItemValue
Source tagv1.2.0 (lightweight tag, 2026-07-22)
Cargo.toml package version1.2.0
Public artifact tagfaber-v1.2.0 on faberlang/releases
Build matrixLinux x86_64 + macOS arm64 (Intel matrix dropped in this range)

Known limitations#

  • 6 pre-existing test failures remained at release: g8_sqlite ×4 and g9_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.0 tag is a lightweight commit tag (the annotated-tag convention starts later).

---

All releases · Install the current release