Renderingen-US

Faber 1.5.0

FieldValue
ProductFaber
Version1.5.0
Tagfaber-v1.5.0
GitHubfaber-v1.5.0
Published2026-08-08
LicenseMIT

Install this version#

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

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

Release notes#

Status: final

Minor product release spanning 253 commits since v1.4.0 (2026-07-31). Headline: device execution on Apple Metal and NVIDIA CUDA via faber run --backend metal|cuda — the first real device-execution surface — supported by hardened install-time pack resolution and the first versioned release manifest with reproducible provenance.

Scale#

SignalCount
Commits (no merges)253
feat(...) commits58
fix(...) commits43
docs(...) commits25
test(...) commits48
git log v1.4.0..HEAD --oneline --no-merges

Major tracks#

Device execution on Metal and CUDA (the lead)#

faber run --backend <auto|metal|cuda> (plus the [device] backend manifest key) executes a packaged device program on real GPU drivers. Proven with one collection kernel — a tree reduction, summa — on both named machines:

Rowbeforeafterwhy
metal-text runnoyesfaber run --backend metal executes device programs on Apple M5 Max (burgus)
llvm-text runnoyesfaber run --backend cuda executes device programs on NVIDIA RTX 5070 (pharos), NVVM→PTX device artifacts
metal-text / llvm-text packagenonopackage=yes waits for the Stage 7 archive gate (E6/E7)

The -t metal-text / -t llvm-text emit surfaces are unchanged; device execution is selected by the run backend. Device-capable packages carry an @ nucleum compute kernel; the packaged FMIR image's device section carries the canonical device program, the MSL/PTX artifacts (provenance hashes), the selection request, and the device:* runtime requirements. Fail-before-launch on real drivers uses stable structured codes: E_BACKEND_UNAVAILABLE, E_NO_DEVICE_PROGRAM, E_DEVICE_DESCRIPTOR, E_DEVICE_ABI_MISMATCH, E_DEVICE_ENTRY_MISMATCH, E_DEVICE_DTYPE_MISMATCH, E_DEVICE_SHAPE_MISMATCH.

The device prefill path now runs per-head attention with per-position RoPE (plus a K-major repack); the Q2 test query reaches a top-1 PASS on Metal (5,188 launches, finite).

Honest scoping: this release states capability, not accuracy. The numeric-parity band is not claimed — the record is `numeric_matches: false, ok: false`. Device execution is proven to launch and run on real hardware; the numeric inference accuracy claim is deferred (see Known limitations).

Hardened install-time pack resolution#

Installed binaries resolve the reference and locale packs from the install prefix and fail closed on tampered, version-skewed, or stray-checkout content (E5). Release archives no longer carry baked CARGO_MANIFEST_DIR paths. All 8 locale packs resolve (ar, en, hi, la, th-TH, vi, zh-Hans, zh-Hant).

Versioned release manifest + reproducible provenance#

The first release-manifest.yaml instance pins exact sibling source commits (radix / cista / faber-runtime / hosts) with reproducible reference-pack digests — the assembly race is fixed (the radix commit is resolved once, not per pack). Tag stamping records only real tags, and the validator hard-fails on unsupported JSON-Schema keywords.

Device path hardened; exempla baseline freshened#

  • Prefill hygiene: the device prefill path's panic surface is closed — 2 documented invariants, 0 panic paths, fail-closed Diagnostics.
  • Exempla e2e floors: the wasm tier is reconciled to the cursor-stream + package-lane proofs.
  • Release-helper interlock: JSON receipts with a same-digest tamper check and leakage-clean receipts, rehearsed green in a worktree dry run.

Wasm package lane (U6)#

Package-aware Wasm builds — accept, emit per-unit, link manifests, and host run — with the carrier-typed import fixture through the product package-to-Wasm builder.

Locale: tensor-family surface#

The tensor-family locale surface rounds out with a th-TH round-trip; the la reader locale is tagged on its packages.

Canonical nominal identity and reduced-resource device projection#

  • Package-crossing nominal types retain canonical identity across analysis boundaries, including struct values and enum variants. Missing or unresolvable identity-bearing variants fail closed (b1b6ed4, 5e96ceb, 2ca42df).
  • Faber emits and admits the wire-8 reduced-resource projection for device programs and rejects malformed, degenerate, or unsupported axis-reduction projections (6fe40af, 5bd30f6, 9fbcf03, 93911fc).
  • The diagnostic-language option is consistently named --diagnostics-locale (9fd0fa0).

Known limitations#

  • Cross-module `textus` handles are limited by separate linear memories at the package-wasm boundary — cross-module handle passing does not span modules.
  • Numeric inference accuracy is deferred. The numeric-parity band is not claimed; device execution is a capability statement (see Device execution above). A numeric accuracy claim may appear in a later release.
  • package=yes for device programs waits for the Stage 7 archive gate; multi-kernel device programs and the persistent training-step lifecycle are Stage 2+.

Deferred to v1.6#

Onboarding Stages 4–8 (doctor, portable no-Rust hello, Norma/Triga acquisition, locale docs parity), the numeric inference accuracy claim, and full release automation beyond the manifest instance + release-doctor dry-run. These are not implied anywhere in this release.

---

All releases · Install the current release