Renderingen-US

Faber 1.4.0

FieldValue
ProductFaber
Version1.4.0
Tagfaber-v1.4.0
GitHubfaber-v1.4.0
Published2026-07-31
LicenseMIT

Install this version#

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

curl -fsSL -o faber.tgz \
  https://github.com/faberlang/releases/releases/download/faber-v1.4.0/faber-v1.4.0-aarch64-apple-darwin.tar.gz
tar -xzf faber.tgz
sudo mv faber-v1.4.0-aarch64-apple-darwin/faber /usr/local/bin/
faber --version

Release notes#

Minor product release spanning 14 commits since v1.3.0 (2026-07-31). Headline: stepper-exclusive `faber test`, corpus alignment with Radix 0.79.0 (incl. the tempta clean break), green exempla e2e ledgers with floor ratchets, and a compiler pin to Radix 0.79.0.

Scale#

SignalCount
Commits (no merges)14
feat(...) commits2
fix(...) commits3
test(...) commits6
git log v1.3.0..v1.4.0 --oneline --no-merges

Major tracks#

Stepper-exclusive faber test#

faber test now runs proba exclusively on the MIR stepper — the non-stepper proba path is retired for the test command. The .proba discovery/import boundary is closed with integration tests, and the goal is recorded in docs/factory/stepper-faber-test/.

Corpus alignment with Radix 0.79.0#

The language e2e corpus now points at radix/corpus (in-tree single-file exempla moved in Radix 0.79.0), and corpus path resolution reads from radix/corpus. Package fixtures are hosted under faber/corpus.

Green exempla e2e ledgers + floor ratchets#

All four exempla e2e targets are green with rebuilt expected ledgers:

  • Rust: oracle ratchet and debt prune
  • Go: ledger rebuilt; floors ratcheted to 253 pass / 310 accepted; declaration-only and compile-fail cases covered
  • TypeScript: ledger + floor ratchet
  • Faber roundtrip: expected ledger rebuilt

E2E temp directories are rooted under the cargo-managed target tree.

Compiler pin: Radix 0.79.0#

The lockfile path-dep pin moves from Radix 0.78.00.79.0. The MIR rewriter drops the retired Tempta HIR arm, aligning the package pipeline with Radix's tempta/demum/emitte clean break and the contextual-keywords (tokenless) parser surface.

Product fix#

Library TypeScript imports are augmented with cross-module type names, fixing unresolved type references in library-mode TS emit.

Companion pins (local path layout)#

SurfaceHead / note
Radixv0.79.0 (5bbdbbd49) — contextual keywords, corpus split, clean break
Cista99acb1e — install publishes interface snapshots as *.fab only
faber-runtime57493dc — radix path-deps pinned to 0.78.0 in its lockfile
hostsced40f8 — host housekeeping refresh

Faber remains a path-composed product CLI; binary release checks out siblings in CI via .github/workflows/release.yml.

Breaking / author-visible#

ChangeMigration
Radix 0.79.0 compiler pin (via path dep)Contextual keywords are grammar-position recognized; tempta/demum/emitte removed — see Radix docs/release/v0.79.0.md
faber test proba is stepper-exclusiveTests previously run on non-stepper proba paths must run on the MIR stepper

Version alignment#

ItemValue
Source tagv1.4.0
Cargo.toml package version1.4.0
Public artifact tagfaber-v1.4.0 on faberlang/releases
Build matrixLinux x86_64 + macOS arm64 (Intel matrix intentionally omitted)

Verification (pre-release)#

Recorded on the release candidate tree (2026-07-31). Note: the release binary is built into the shared cache dir (~/.cache/faberlang-target/faber/release/), not the repo target/ tree.

GateResult
cargo build --locked --release --bin faberpass
faber --version (release binary)faber 1.4.0
cargo nextest run -p faberpass — 1389 passed, 42 skipped

Known exempla e2e failures (pre-existing, out of the release gate)#

The v1.3.0 release verified the faber package suite; the exempla e2e harness is the full-workspace (auditor) surface. On this tree, 7 exempla tests fail — all pre-existing against Radix 0.79.0 and none caused by this release's version/lockfile changes:

TestCause
matrix_row_sexp_aggregate_and_matrix_register_mir_capableAsserts sexp structural capability for matrix-register.fab; the sexp emitter rejects matrix cell projection shapes — the fixture's own contract says probe targets reject until native register-matrix backends exist
tensor_systems_closeout_keeps_capability_floors_code_ownedGradient-handles operation floor no longer MIR-stepper executable
llvm_host_async_solum_leget_uses_existing_route_poll_boundary / …_reaches_native_link / llvm_host_async_tempus_dormiet_reaches_native_linkLLVM emission fails closed on the async solum/tempus return carrier (unsupported-mir-shape:solum return carrier)
llvm_host_comparison_rejects_stderr_mismatchComparison harness did not classify the stderr mismatch
swift_expected_failure_ledgers_reference_current_corpusSwift expected-failure ledger references tensor-fragment/tiny-linear-device/src/main.fab, outside the current public corpus after the corpus split

These track the Radix LLVM/tensor/swift lanes and should be absorbed there before the next full-workspace gate.

Publish#

  1. Bump root Cargo.toml version to 1.4.0.
  2. cargo update so Cargo.lock matches (includes path dep radix 0.79.0).
  3. Verify locked release build + nextest.
  4. Single commit: version bump + lockfile (+ this notes file).
  5. Annotated tag: git tag -a v1.4.0 -m "Faber v1.4.0"
  6. Push: git push origin main && git push origin v1.4.0
  7. Monitor: gh run list -R faberlang/faber --limit 5
  8. Confirm faberlang/releases publishes faber-v1.4.0 multi-arch archives.

Never tag a commit whose Cargo.lock is stale relative to the bumped manifests — CI uses cargo build --locked.

---

All releases · Install the current release