Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
559c183
archive always-on 32-interval block contender
sstadick Jul 18, 2026
bbf0f3c
archive always-on SIMD block-mask contender
sstadick Jul 18, 2026
9b8412c
optimize SIMD mask lane reduction
sstadick Jul 18, 2026
143ac5b
optimize NEON mask loads in pairs
sstadick Jul 19, 2026
17ea4ff
pack paired NEON masks in eight lanes
sstadick Jul 19, 2026
84872e7
record native-targeted eight-lane results
sstadick Jul 19, 2026
b6ba527
remove proven redundant block bounds checks
sstadick Jul 19, 2026
e13a661
generalize SIMD block index behind find API
sstadick Jul 19, 2026
800b0fb
restore bulk derived-index construction
sstadick Jul 19, 2026
66225fc
document portable SIMD integration
sstadick Jul 19, 2026
b032cec
expand hand-typing guide across full index
sstadick Jul 20, 2026
5daebd7
document portable SIMD production gates
sstadick Jul 28, 2026
adcbeff
verify native AVX2 dispatch in CI
sstadick Jul 28, 2026
1253097
declare Rust 1.59 MSRV
sstadick Jul 28, 2026
498fb90
document coordinate type compatibility
sstadick Jul 28, 2026
f665864
record cached dispatch benchmark result
sstadick Jul 28, 2026
5895d58
expand portable SIMD CI matrix
sstadick Jul 28, 2026
76c7d55
refresh CI actions for final matrix
sstadick Jul 28, 2026
efb9006
select intended toolchain in CI jobs
sstadick Jul 28, 2026
0eeeafd
record final CI matrix validation
sstadick Jul 28, 2026
0d355c5
feat: cleanup
sstadick Aug 5, 2026
a63f40a
docs: add benchmark handoff doc
sstadick Aug 5, 2026
a8cbecc
fix signed coordinate boundary queries
sstadick Aug 19, 2026
3b93f86
polish v2 release documentation
sstadick Aug 19, 2026
a53b1ef
restore crate documentation style
sstadick Aug 20, 2026
134ce80
document block index fields
sstadick Aug 20, 2026
f4f99dd
explain block traversal branches
sstadick Aug 20, 2026
2265a69
organize SIMD planning docs
sstadick Aug 20, 2026
0e070f3
prepare 2.0.0 beta
sstadick Aug 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
181 changes: 142 additions & 39 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,83 +1,186 @@
name: ci

on: [ push, pull_request ]
on:
push:
branches: [ master ]
pull_request:

env:
CARGO_TERM_COLOR: always
RUSTUP_TOOLCHAIN: stable

jobs:
msrv:
name: MSRV 1.59
runs-on: ubuntu-latest
env:
RUSTUP_TOOLCHAIN: 1.59.0
steps:
- name: Checkout sources
uses: actions/checkout@v7

- name: Install MSRV toolchain
uses: dtolnay/rust-toolchain@1.59.0
with:
targets: aarch64-unknown-linux-gnu

- name: Cache dependencies
uses: Swatinem/rust-cache@v2

- name: Test on the MSRV
run: cargo test --all-features --locked

- name: Check AArch64 NEON on the MSRV
run: cargo check --lib --all-features --locked --target aarch64-unknown-linux-gnu

check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v7

- name: Install pinned toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.95.0
override: true
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache dependencies
uses: Swatinem/rust-cache@v1
uses: Swatinem/rust-cache@v2

- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
args: --all-features
run: cargo check --all-targets --all-features --locked

lints:
name: Lints
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v7

- name: Install pinned toolchain
uses: actions-rs/toolchain@v1
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: 1.95.0
override: true
components: rustfmt, clippy
components: rustfmt,clippy

- name: Cache dependencies
uses: Swatinem/rust-cache@v1
uses: Swatinem/rust-cache@v2

- name: Run cargo fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
run: cargo fmt --all -- --check

- name: Run cargo clippy
uses: actions-rs/cargo@v1
run: cargo clippy --all-targets --all-features --locked -- -D warnings

native-avx2:
name: Native AVX2
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v7

- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache dependencies
uses: Swatinem/rust-cache@v2

- name: Record and require AVX2
run: |
lscpu
grep -qw avx2 /proc/cpuinfo

- name: Exercise runtime dispatch and AVX2 masks
run: |
cargo test --all-features --locked simd::dispatch_tests::selected_backend_matches_the_host -- --exact --nocapture
cargo test --all-features --locked simd::avx2::tests::primitive_masks_match_scalar_when_avx2_is_available -- --exact --nocapture

scalar-x86:
name: Scalar x86-64
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v7

- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache dependencies
uses: Swatinem/rust-cache@v2

- name: Install QEMU
run: |
sudo apt-get update
sudo apt-get install --yes qemu-user
qemu-x86_64 --version

- name: Exercise scalar runtime dispatch without AVX2
env:
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER: qemu-x86_64 -cpu Nehalem
run: |
cargo test --all-features --locked --target x86_64-unknown-linux-gnu simd::dispatch_tests::selected_backend_matches_the_host -- --exact --nocapture
cargo test --all-features --locked --target x86_64-unknown-linux-gnu

scalar-targets:
name: Scalar fallback targets
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v7

- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
command: clippy
args: --all-features -- -D warnings
targets: i686-unknown-linux-gnu,powerpc64le-unknown-linux-gnu,wasm32-unknown-unknown

- name: Cache dependencies
uses: Swatinem/rust-cache@v2

- name: Check scalar-only architectures
run: |
cargo check --lib --all-features --locked --target i686-unknown-linux-gnu
cargo check --lib --all-features --locked --target powerpc64le-unknown-linux-gnu
cargo check --lib --all-features --locked --target wasm32-unknown-unknown

test:
name: Test Suite
name: Test Suite (${{ matrix.name }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, macOS-latest, windows-latest ]
include:
- name: Linux, default features
os: ubuntu-latest
features: ""
- name: Linux, serde
os: ubuntu-latest
features: --features with_serde
- name: Linux, unstable sort
os: ubuntu-latest
features: --features sort_unstable
- name: Linux, all features
os: ubuntu-latest
features: --all-features
- name: macOS ARM64, all features
os: macos-15
features: --all-features
neon: true
- name: Windows, all features
os: windows-latest
features: --all-features
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v7

- name: Install pinned toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.95.0
override: true
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache dependencies
uses: Swatinem/rust-cache@v1
uses: Swatinem/rust-cache@v2

- name: Run tests
run: cargo test --verbose --all-features
run: cargo test --verbose --locked ${{ matrix.features }}

- name: Verify native NEON dispatch
if: matrix.neon
run: |
test "$(uname -m)" = arm64
cargo test --all-features --locked simd::dispatch_tests::selected_backend_matches_the_host -- --exact --nocapture
cargo test --all-features --locked --test portable_index every_primitive_integer_type_and_block_tail_matches_forward_brute_force -- --exact
Loading