Skip to content

Release v1.2.0#18

Merged
HarperZ9 merged 1 commit into
mainfrom
release/v1.2.0
Jul 7, 2026
Merged

Release v1.2.0#18
HarperZ9 merged 1 commit into
mainfrom
release/v1.2.0

Conversation

@HarperZ9

@HarperZ9 HarperZ9 commented Jul 7, 2026

Copy link
Copy Markdown
Owner

1.2.0 - 2026-07-07 - general GPU compute

BuildLang programs now run real work on the GPU: #[compute] kernels compile
to valid SPIR-V, dispatch on an actual Vulkan device, and seal a re-checkable
GPU receipt. Minor release (backward compatible; programs that do not use the
GPU path or the new flags are unaffected).

  • General GPU execution path (Layers A/B/C): Layer A emits valid,
    dispatchable compute SPIR-V for #[compute] kernels; Layer B/C perform a
    real Vulkan dispatch on the device and seal a GPU receipt. A NUL-byte entry
    name is now a typed error instead of a panic.
  • GPU Phase 1 (arbitrary elementwise f32 kernels): dispatch and CPU
    cross-check generalized from a fixed demo to arbitrary elementwise kernels,
    with writability inference, scalar push constants in the SPIR-V interface,
    and a clear diagnostic refusing f64 on the f32-only GPU path.
  • GPU Phase 2 (2D grids + matmul): per-kernel 2D workgroup size, a 2D
    dispatch grid, matmul shape validation in the Vulkan host, an in-kernel
    bounds guard for arbitrary dims, and rejection of non-workgroup-multiple
    matmul dims (out-of-bounds guard). Cross-checked against an identity
    closed-form sanity case.
  • GPU Phase 3 (1D stencil): a 3-point clamped-blur stencil kernel with a
    u32-length 1D driver, clamped-edge sanity checks, and Layer A emit + device
    match + boundary + negative tests.
  • GPU Phase 4a (workgroup shared memory + barrier): device-free machinery
    for workgroup-shared scratch memory and barriers, a distinct Workgroup
    OpVariable per scratch local, effect-gating tests, and a dead
    Function-storage variable skipped for workgroup-slot locals.
  • SPIR-V correctness fixes: nested structured control flow corrected via
    dominator analysis (selection-in-loop nesting covered), void/unit stores
    skipped, constant-operand signedness reconciled in integer binops, and
    integer binops typed from the non-constant operand (const-left case).
  • Dimensional analysis (typed physical units), first slice: a pure,
    dependency-free core (compiler/src/units.rs, public as buildlang::units)
    models a physical dimension as integer exponents over the seven SI base
    dimensions, with the checked algebra (multiply/divide/power; add, subtract,
    and compare require equal dimensions), a parser for a compact unit grammar
    (m/s, kg*m/s^2, 1/s, J), and a canonical formatter.
    buildc run --emit-receipt --units <UNIT> canonicalizes the declared unit
    through this core: a malformed or unknown unit is a hard error before any
    compilation, and a valid unit is sealed into the scientific-runtime
    receipt's measurement.units in its checked canonical form (so m*s^-1
    and m/s seal identically and the receipt still re-verifies). Honest
    scope: unit annotation and receipt-label checking only; f64<m/s> is not
    yet a first-class type in the checker (integration specced in
    docs/DIMENSIONAL-ANALYSIS.md). Backward compatible: run without
    --units is byte-identical. Coverage: 18 core unit tests plus 2 CLI
    integration tests.
  • Receipt Wave 4: receipt verify --self-test proves the verifier can
    FAIL; receipt chain build / chain verify seal a tamper-evident receipt
    bundle (the index is bound into the chain seal; all 4 failure classes
    covered); receipt corpus gates the example suite on declared
    classifications. Non-byte-reproducible receipt seals documented as
    by-design.
  • Invariant family grown to seven members: added non-negative
    (algorithmic accountability), a reaction invariant checker (chemistry
    demo), a Born-rule normalization kernel (quantum conservation), and a
    funnel-hashing probe-bound kernel (algorithmic). README and STATUS synced
    to the family.
  • Typed Array<T,N> as function parameter and return type: fixed-size
    arrays can now be passed to and returned from functions (returns lower via
    an out-param). Documented in the math-syntax guide.
  • Docs and visual identity: spectrum banner and feature-first README
    header and body, a current introduction, and a live crates.io version badge
    plus a downloads badge (replacing the hardcoded version badge). Stale
    stencil exclusions dropped from host and packer comments.
  • Sealed receipt corpus regenerated for corrected &mut MIR mutability.

Verification: cargo fmt --check clean; cargo build clean; full cargo test with the CI skips: 1575 passed, 0 failed (lib 959, bin 143, cli 321, receipt 12, lexer 52, parser 88); the README/USAGE worked example re-run against the 1.2.0 build and its captured output re-verified.

Prep only: no tag, no GitHub release, no cargo publish.

🤖 Generated with Claude Code

General GPU compute release: #[compute] kernels compile to valid SPIR-V,
dispatch on a real Vulkan device, and seal a re-checkable GPU receipt
(Phases 1-4a), plus the dimensional-analysis units core, receipt Wave 4
(self-test, chain, corpus), four new invariant kernels, typed Array<T,N>
params/returns, and the README visual-identity and docs refresh.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@HarperZ9
HarperZ9 merged commit 580334d into main Jul 7, 2026
3 checks passed
@HarperZ9
HarperZ9 deleted the release/v1.2.0 branch July 7, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant