Skip to content

v0.17.16 — MSL Backend Hardening

Choose a tag to compare

@kolkov kolkov released this 26 Jul 14:33
ba0b2ef

v0.17.16 — MSL Backend Hardening

Fixed (MSL)

  • 64-bit atomic capability validation (#79, PR #82, @besmpl) —
    msl.Compile now returns a descriptive error for 64-bit atomic operations
    that Metal cannot represent instead of emitting invalid intrinsics. Matching
    Rust Naga, result-discarded min/max in storage address space remain
    supported; loads, stores, full operations, result-producing min/max, and
    workgroup min/max are rejected.
  • Swizzle of binary expression missing parentheses (#83) —
    writeSwizzle now wraps binary/select sub-expressions in parentheses,
    matching Rust naga's is_scoped=false semantics. Without this, C++ member
    access (.) bound tighter than arithmetic operators, causing
    mat * vec.xyz instead of (mat * vec).xyz — a type error that Metal
    compiler rejected. Discovered via g3d standard.wgsl shader on Apple M5.