Faber 1.4.0
| Field | Value |
|---|---|
| Product | Faber |
| Version | 1.4.0 |
| Tag | faber-v1.4.0 |
| GitHub | faber-v1.4.0 |
| Published | 2026-07-31 |
| License | MIT |
Install this version#
Pinned download for Faber 1.4.0. For the current release, use Install instead.
| Platform | Archive | Size | Checksum |
|---|---|---|---|
| macOS arm64 | faber-v1.4.0-aarch64-apple-darwin.tar.gz | 6.5 MB | sha256 |
| Linux x64 | faber-v1.4.0-x86_64-unknown-linux-gnu.tar.gz | 7.3 MB | sha256 |
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 --versionRelease 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#
| Signal | Count |
|---|---|
| Commits (no merges) | 14 |
feat(...) commits | 2 |
fix(...) commits | 3 |
test(...) commits | 6 |
git log v1.3.0..v1.4.0 --oneline --no-mergesMajor 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.0 → 0.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)#
| Surface | Head / note |
|---|---|
| Radix | v0.79.0 (5bbdbbd49) — contextual keywords, corpus split, clean break |
| Cista | 99acb1e — install publishes interface snapshots as *.fab only |
| faber-runtime | 57493dc — radix path-deps pinned to 0.78.0 in its lockfile |
| hosts | ced40f8 — 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#
| Change | Migration |
|---|---|
| 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-exclusive | Tests previously run on non-stepper proba paths must run on the MIR stepper |
Version alignment#
| Item | Value |
|---|---|
| Source tag | v1.4.0 |
Cargo.toml package version | 1.4.0 |
| Public artifact tag | faber-v1.4.0 on faberlang/releases |
| Build matrix | Linux 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.
| Gate | Result |
|---|---|
cargo build --locked --release --bin faber | pass |
faber --version (release binary) | faber 1.4.0 |
cargo nextest run -p faber | pass — 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:
| Test | Cause |
|---|---|
matrix_row_sexp_aggregate_and_matrix_register_mir_capable | Asserts 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_owned | Gradient-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_link | LLVM emission fails closed on the async solum/tempus return carrier (unsupported-mir-shape:solum return carrier) |
llvm_host_comparison_rejects_stderr_mismatch | Comparison harness did not classify the stderr mismatch |
swift_expected_failure_ledgers_reference_current_corpus | Swift 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#
- Bump root
Cargo.tomlversionto1.4.0. cargo updatesoCargo.lockmatches (includes path dep radix0.79.0).- Verify locked release build + nextest.
- Single commit: version bump + lockfile (+ this notes file).
- Annotated tag:
git tag -a v1.4.0 -m "Faber v1.4.0" - Push:
git push origin main && git push origin v1.4.0 - Monitor:
gh run list -R faberlang/faber --limit 5 - Confirm
faberlang/releasespublishesfaber-v1.4.0multi-arch archives.
Never tag a commit whose Cargo.lock is stale relative to the bumped
manifests — CI uses cargo build --locked.
---