Skip to content

Migrate development tooling and CI to LLVM 23 - #141

Merged
gouyt13 merged 1 commit into
mainfrom
chore/llvm-23-tooling
Oct 20, 2026
Merged

gouyt13 merged 1 commit into
mainfrom
chore/llvm-23-tooling

Conversation

@gouyt13

@gouyt13 gouyt13 commented Oct 20, 2026

Copy link
Copy Markdown
Member

Summary

Move formatting and static analysis to LLVM 23 so local checks and CI use the same toolchain. Add portable Clang 23 CI builds with OpenMP ON/OFF and installed/component consumer checks, update the development instructions, and apply the resulting formatting changes. The library still requires C++17; downstream users do not need Clang 23.

Initialize OpenMP before allocation-failure injection, or avoid querying its runtime while injection is disabled, in three tests. This prevents runtime initialization from interfering with the allocation hooks. Keep the frozen v1 compatibility fixture outside automated formatting.

Remove the unused global warmup_ip_x0_q<b_query, padded_dim> wrapper. External callers using that wrapper must migrate to rabitqlib::warmup_ip_x0_q<b_query>(..., padded_dim). Index storage and persisted formats are unchanged.

Testing

Local Linux x86-64 verification with Clang 23.1.4, GCC 14.3.0 and native optimization disabled:

Check Result
Complete C++ suite, Clang and GCC Release Each: 397 passed, 1 skipped
Complete C++ suite, GCC ASan/UBSan 397 passed, 1 skipped
Complete C++ suite, Clang ASan/UBSan 384 passed, 13 failed, 1 skipped; all failures reproduced on clean base 11c0ee9
Rebuilt and installed Python wheel, full suite including FAISS and C++ examples 703 passed, 2 platform-specific skips
Core/FastScan OpenMP ON/OFF producer and consumer matrices Passed
Installed index and GCC sanitizer consumers Each: 3/3 passed
Full configured production/binding clang-tidy, formatting, Python lint and ShellCheck Passed
Include-cleaner 131 files, 191 contexts, 0 failures; unconfigured sources excluded
CI helper tests 22 passed, 36 subtests passed

The skipped C++ test requires OpenMP binding; its separate OpenMPBinding invocation passed. Python skips require repaired Linux ARM64 and macOS wheels. AVX2 and AVX-512 reference tests executed on the local CPU. Windows, macOS and ARM64 were not tested locally.

Clang sanitizer failures remain visible and were not suppressed. A separate clean-base build with matching settings reproduced all 13 cases:

  • 12 tests report null-pointer arithmetic in vendored Eigen's AVX-512 GemmKernel.h:815.
  • The simulated no-SIMD worker-error test reports a NaN-to-uint8_t conversion at src/simd/portable_generic.cpp:140 for zero-step scalar quantization.

These are existing baseline issues, outside this toolchain migration. The subsequent documentation-only correction passed local-link validation and git diff --check.

@gouyt13
gouyt13 marked this pull request as ready for review October 20, 2026 11:32
@gouyt13
gouyt13 merged commit 4c1dfdb into main Oct 20, 2026
45 checks passed
@gouyt13
gouyt13 deleted the chore/llvm-23-tooling branch October 20, 2026 12:27
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