Faber 1.5.0
| Field | Value |
|---|---|
| Product | Faber |
| Version | 1.5.0 |
| Tag | faber-v1.5.0 |
| GitHub | faber-v1.5.0 |
| Published | 2026-08-08 |
| License | MIT |
Install this version#
Pinned download for Faber 1.5.0. For the current release, use Install instead.
| Platform | Archive | Size | Checksum |
|---|---|---|---|
| macOS arm64 | faber-v1.5.0-aarch64-apple-darwin.tar.gz | 9.5 MB | sha256 |
| Linux x64 | faber-v1.5.0-x86_64-unknown-linux-gnu.tar.gz | 10.8 MB | sha256 |
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 --versionRelease 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#
| Signal | Count |
|---|---|
| Commits (no merges) | 253 |
feat(...) commits | 58 |
fix(...) commits | 43 |
docs(...) commits | 25 |
test(...) commits | 48 |
git log v1.4.0..HEAD --oneline --no-mergesMajor 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:
| Row | before | after | why |
|---|---|---|---|
metal-text run | no | yes | faber run --backend metal executes device programs on Apple M5 Max (burgus) |
llvm-text run | no | yes | faber run --backend cuda executes device programs on NVIDIA RTX 5070 (pharos), NVVM→PTX device artifacts |
metal-text / llvm-text package | no | no | package=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=yesfor 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.
---