mirror of
https://github.com/samvallad33/vestige.git
synced 2026-06-22 21:28:08 +02:00
The v2.1.26 pin set `default-features = false` on usearch to drop SimSIMD's AVX2/Haswell dispatch (the illegal-instruction crash on older x86_64 CPUs, #71). But usearch's defaults are ["simsimd", "fp16lib"], so disabling all defaults also dropped the unrelated `fp16lib` feature. With both off, usearch's build.rs sets USEARCH_USE_FP16LIB=0 and USEARCH_USE_SIMSIMD=0, selecting the bare `#else` half-precision branch in include/usearch/index_plugins.hpp, which carries a `#warning` directive. MSVC's cl.exe treats `#warning` as fatal error C1021, so the Windows build aborts: index_plugins.hpp(404): fatal error C1021: invalid preprocessor command 'warning' GCC/Clang only warn, so Linux/macOS never caught it. `/Zc:preprocessor` does not change MSVC's behavior here. Fix: re-enable `fp16lib` only, keeping SimSIMD disabled. fp16lib is a scalar, self-contained fp16<->fp32 conversion library with no SIMD intrinsics, so this sets USEARCH_USE_FP16LIB=1 (taking the non-warning branch) without reintroducing the #71 illegal-instruction risk. Restores v2.1.25 behavior on the half-precision path while keeping the #71 portability fix. usearch stays pinned at =2.23.0; Cargo.lock is unchanged. Verified on macOS (aarch64): cargo build -p vestige-core and -p vestige-mcp green, 9/9 vector-search tests pass, clippy clean. cargo tree confirms only the `fp16lib` usearch feature is active and `simsimd` is not. The MSVC repro is Windows-only and cannot be exercised on this host. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| vestige-core | ||
| vestige-mcp | ||