• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bitshifter / glam-rs / 36053431749
99%

Build:
DEFAULT BRANCH: main
Ran 24 Sep 2026 08:14PM UTC
Jobs 4
Files 154
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Sep 2026 08:13PM UTC coverage: 99.01% (+0.01%) from 98.997%
36053431749

push

github

web-flow
fix: rust-gpu breakage after PR 786 / v0.33.6 (#861)

# Objective

From rust-gpu issue https://github.com/Rust-GPU/rust-gpu/issues/645:
> PR https://github.com/bitshifter/glam-rs/pull/786 changed the
definition of `Vec3A` to make it `bytemuck::Pod`:
```diff
  #[repr(align(16))]
  #[repr(C)]
  #[cfg_attr(target_arch = "spirv", rust_gpu::vector::v1)]
  pub struct Vec3A {
      pub x: f32,
      pub y: f32,
      pub z: f32,
+     _w: f32,
  }
```

> From rust-gpu's perspective, this is now a vector with 4 floats
instead of 3 floats, breaking a lot of safety assumptions in our
codebase.

This PR is a **short-term fix** that undoes the changes in that PR **for
the spirv target only** to fix rust-gpu setups using glam v0.33.6+. It
is hopefully included in the next minor release of v0.33.9.

## long-term fix

I hate amount of special casing in this PR. spirv and cpu targets are
once again diverging even more.

Other options I've considered:
* Undoing that PR isn't feasible, as it would be a breaking change for
normal (non rust-gpu) users, since you'd be removing functionality.
* Fixing it within the rust-gpu compiler will be a giant hack to special
case Vec3A, and even more annoying if we want to remove it for future
glam versions.
* Changing the `#[spirv::vector::v1]` attribute to tell rust-gpu to
treat it as a 3xf32 will be a breaking change on both sides, eg. once
you update beyond this rust-gpu version you must also update glam and
vice versa.

So my thought is to add this "short-term" hack to glam to make it work
with current rust-gpu. And by the time the next major release v0.34.0
comes around, have a long-term solution ready. Like a
`#[spirv::vector::v2(3, f32)]` where you can explicitly specify that
this type is a 3xf32 and rust-gpu should just drop the last member. (And
revert this PR)

I think very-long-term we may be better off not special casing glam
vectors at all, which would likely gain us support for non-glam vector
libraries too. But that w... (continued)

1 of 1 new or added line in 1 file covered. (100.0%)

93211 of 94143 relevant lines covered (99.01%)

123578.07 hits per line

Jobs
ID Job ID Ran Files Coverage
1 native_simd-ubuntu-latest - 36053431749.1 24 Sep 2026 08:14PM UTC 122
98.85
GitHub Action Run
2 core_simd-ubuntu-latest - 36053431749.2 24 Sep 2026 08:14PM UTC 121
98.87
GitHub Action Run
3 native_simd-macos-latest - 36053431749.3 24 Sep 2026 08:15PM UTC 122
98.88
GitHub Action Run
4 scalar_math-ubuntu-latest - 36053431749.4 24 Sep 2026 08:14PM UTC 121
98.87
GitHub Action Run
Source Files on build 36053431749
  • Tree
  • List 154
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #36053431749
  • ffe27d29 on github
  • Prev Build on main (#35976858737)
  • Next Build on main (#36058042299)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc