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

bitshifter / glam-rs
99%

Build:
DEFAULT BRANCH: main
Repo Added 31 Mar 2019 10:23AM UTC
Files 154
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

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • 0.29-dev
  • Traverse-Research-rkyv-no-default-features
  • add-is-negative-mask
  • affine-approx-tests
  • affine3
  • angle_towards
  • bench-aarch64-scalar-math
  • bench-improvements
  • bench-macro-throughput
  • bench-summary-delta
  • benchmark-action
  • build/package-include-policy
  • bvec-test-refactor
  • bytemuck-derive
  • camera
  • cargo-deny-action_v2
  • chore/contributing-updates
  • chore/move-gungraun-baselines
  • ci-bench-asm
  • ci-coverage
  • ci/bench-backend
  • ci/bench-coresimd
  • ci/bench-table-alignment
  • ci/bench-tweaks
  • ci/bench-update-label
  • ci/bench-update-remove-baselines
  • ci/cargo-fetch-bench-lock
  • ci/msrv-wasm-bindgen-test-pin
  • ci/release-plz-lint-exemptions
  • codegen-json
  • codegen-submodule
  • codegen-swizzle-tests
  • const-quat-to_array
  • coverage
  • coveralls-workaround
  • default-glob
  • dependabot/github_actions/actions/checkout-7
  • doc/smoothstep-panic
  • docs/architecture-api-guidelines
  • docs/cargo-documentation-link
  • docs/changelog-normalize
  • docs/deref-doc-hidden
  • docs/mat-row-comments
  • docs/update-contributing-architecture
  • experimental
  • feat/mat-row-functions
  • fix-32-bit-usize-layout
  • fix-32-bit-vector-layout-tests
  • fix-clippy-lints
  • fix-coverage
  • fix-deny
  • fix-deprecated-f32-consts
  • fix-isize-32-bit-layout
  • fix-simd-round-half-away-from-zero
  • fix/core-simd-no-std
  • fix/determinant-affine-consistency
  • fix/i686-tests-and-ci
  • fix/release-plz-nightly-semver-check
  • fix/undo-pr-836
  • float_eq-support
  • force_libm
  • from_mat3a
  • git2-update
  • github-templates
  • gungraun-tests
  • half
  • iai
  • iai_callgrind
  • isize-experiment
  • isize-features
  • issue-235
  • issue-271
  • issue-275
  • issue-291
  • issue-293
  • issue-325
  • issue-336
  • issue-356
  • issue-366
  • issue-373
  • issue-397
  • issue-406
  • issue-434
  • issue-436
  • issue-474
  • issue-476
  • issue-479
  • issue-480
  • issue-490
  • issue-497
  • issue-500
  • issue-512
  • issue-514
  • issue-518
  • issue-521
  • issue-556
  • issue-566
  • issue-568
  • issue-572
  • issue-646
  • issue-646-2
  • issue-655
  • issue-656
  • issue-658
  • issue-690
  • issue-729
  • issue-767
  • macos-clippy
  • main
  • map-fnmut
  • mat-diagonal
  • mat3a-x-vec3a-scalar-opts
  • mat4_from_mat3_translation
  • min-max-nan-prop
  • missing-tests
  • more-encase-tests
  • more-make_use
  • more-vec-methods
  • move_towards
  • msvr-1.60.0
  • mul_diagonal_scale
  • mul_transpose_vec
  • neon
  • neon-mat2
  • no-scalar-recip
  • normalize_and_length
  • op-ref-tests
  • op-refs
  • opt_mat_srt
  • perf/affine-mat4-decomposition
  • perf/affine-mat4-decomposition-opts
  • perf/mat3a-transform-vector2
  • perf/neon-simd-sin
  • perf/quat-is-near-identity
  • perf/simd-sin
  • perf/sse2-dot4-broadcast
  • prepare-0.24.1
  • prepare-0.24.2
  • prepare-0.25.0
  • prepare-0.28.0
  • prepare-0.29.0
  • prepare-0.29.1
  • prepare-0.29.2
  • prepare-0.30.0
  • prepare-0.30.1
  • prepare-0.30.10
  • prepare-0.30.2
  • prepare-0.30.3
  • prepare-0.30.5
  • prepare-0.30.6
  • prepare-0.30.7
  • prepare-0.30.8
  • prepare-0.30.9
  • prepare-0.31.0
  • prepare-0.31.1
  • prepare-0.32.0
  • prepare-0.32.1
  • prepare-0.33.0
  • prepare-0.33.2
  • prepare-0.33.3
  • refactor/float-eq-tests
  • refactor/no_std-coresimd
  • refs/heads/issue-397
  • refs/heads/main
  • refs/tags/0.24.2
  • refs/tags/0.25.0
  • refs/tags/0.26.0
  • refs/tags/0.27.0
  • refs/tags/0.28.0
  • refs/tags/0.29.0
  • refs/tags/0.29.1
  • refs/tags/0.29.2
  • refs/tags/0.29.3
  • refs/tags/0.30.0
  • refs/tags/0.30.1
  • refs/tags/0.30.10
  • refs/tags/0.30.2
  • refs/tags/0.30.3
  • refs/tags/0.30.4
  • refs/tags/0.30.5
  • refs/tags/0.30.6
  • refs/tags/0.30.7
  • refs/tags/0.30.8
  • refs/tags/0.30.9
  • refs/tags/0.31.0
  • refs/tags/0.31.1
  • refs/tags/0.32.0
  • refs/tags/0.32.1
  • refs/tags/0.33.0
  • release-0.26.0
  • release-plz
  • release-plz-2026-08-18T07-51-21Z
  • release-plz-2026-08-18T09-11-39Z
  • release-plz-2026-08-19T08-20-47Z
  • release-plz-2026-08-21T10-14-12Z
  • release-plz-2026-09-01T10-19-41Z
  • release-plz-changelog-filter
  • remove-deprecated
  • remove-doc-versions
  • remove-scalar-bvec4a
  • rkyv-portable-archived-types
  • scalar-vec3a-pad
  • simplify-tests
  • small-cleanups
  • smoothstep
  • swizzle_experiments
  • tera2
  • test/more-benches
  • test/vec3a-m128-test-ub
  • toolsdir
  • try_inverse
  • type-features
  • update-dev-deps
  • update-submodule
  • usizevec
  • valaphee-frustum
  • vec2_sse2
  • vec3-rotate_towards
  • warnings-fix
  • wasm64
  • wasmpack-node-tests

17 Sep 2026 11:54AM UTC coverage: 99.058% (+0.005%) from 99.053%
35218159043

push

github

web-flow
perf(simd): broadcast dot product without an extra shuffle (#833)

The SSE2 broadcast dot product can save a shuffle by computing the
result directly in all four lanes.

## Solution

`dot4_into_m128` now sums the products directly in all four lanes,
keeping the `(x + z) + (y + w)` grouping. Tests and benchmarks are
included.

## Benchmarks

On my Xeon E5-2696 v4:

| Measurement | Before | After | Change |
|---|---:|---:|---:|
| 256-dot-product batch | 301.673 ns | 267.888 ns | -11.2% |
| Throughput | 848.60 M/s | 955.62 M/s | +12.6% |
| Quaternion lerp | 6.491 ns | 6.095 ns | -6.1% |
| Cycles/dot | 3.772 | 3.335 | -11.6% |
| Instructions/dot | 12.104 | 11.104 | -8.3% |
| Allocations | 0 | 0 | Unchanged |

Timing: Criterion on Windows. Counters: five alternating, core-pinned
runs under WSL. Normalization timing stayed within the noise threshold
(+0.7%).

## Testing and linting

- Three million comparisons passed: non-NaN outputs matched bit for bit;
NaNs matched by classification.
- Regression tests cover cancellation, signed zero, subnormals,
overflow, infinities, and NaNs.
- All nine feature configurations, MSRV, and portable SIMD checks
passed.
- Glam-specific Clippy and formatting passed.
- The existing Windows CI-tool lint remains.

🤖 AI disclosure: I used Codex with GPT-6 Astra at xhigh reasoning effort
to help identify the optimization and construct the benchmark. I have
reviewed and understand the resulting implementation.

8 of 8 new or added lines in 2 files covered. (100.0%)

93262 of 94149 relevant lines covered (99.06%)

123554.19 hits per line

Relevant lines Covered
Build:
Build:
94149 RELEVANT LINES 93262 COVERED LINES
123554.19 HITS PER LINE
Source Files on main
  • Tree
  • List 154
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
35218159043 main perf(simd): broadcast dot product without an extra shuffle (#833) The SSE2 broadcast dot product can save a shuffle by computing the result directly in all four lanes. ## Solution `dot4_into_m128` now sums the products directly in all four lane... push 17 Sep 2026 11:55AM UTC web-flow github
99.06
35217344094 perf/sse2-dot4-broadcast Merge a43a9e36f into 3ccb58c04 Pull #833 17 Sep 2026 11:46AM UTC web-flow github
99.06
35210906750 main chore(bench): fold throughput into bench macros and document benchmarking (#852) Batch the criterion bench macros by size with `Throughput::Elements` (defaults `[16, 1024]`) and expand the contributing benchmark and optimization guidance. push 17 Sep 2026 10:32AM UTC web-flow github
99.05
35209744136 bench-macro-throughput Merge 054a2fc33 into 296329c1d Pull #852 17 Sep 2026 10:19AM UTC web-flow github
99.05
35209470581 bench-macro-throughput Merge d2ebc9849 into 296329c1d Pull #852 17 Sep 2026 10:16AM UTC web-flow github
99.05
35209138232 bench-macro-throughput Merge dda2a85c1 into 296329c1d Pull #852 17 Sep 2026 10:12AM UTC web-flow github
99.04
35206671206 bench-macro-throughput Merge 5e9c7e469 into 296329c1d Pull #852 17 Sep 2026 09:46AM UTC web-flow github
99.05
35092415884 main docs: hide deref helper types from rustdoc (#851) Marks the `Deref` target structs in `src/deref.rs` (`Vec3<T>`, `Vec4<T>`, `Cols2/3/4<V>`) as `#[doc(hidden)]`. These types are implementation details: they live in a private module and are not pu... push 16 Sep 2026 11:50AM UTC web-flow github
99.03
35092044938 docs/deref-doc-hidden Merge 83af27f56 into f18a1b780 Pull #851 16 Sep 2026 11:46AM UTC web-flow github
99.03
35090265560 main docs: document API guideline deviations in ARCHITECTURE.md (#848) Adds a section documenting where glam deliberately deviates from the Rust API guidelines and why: - Public fields (C-STRUCT-PRIVATE): layout is part of the API - Conversion naming... push 16 Sep 2026 11:28AM UTC web-flow github
99.03
See All Builds (1874)
  • Repo on GitHub
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