SIMD on Windows π€ πͺ
This release refactors compiler attributes and intrinsics usage to make it compatible with MSVC. Most noticeably, function defined like this:
__attribute__((target("+simd")))
inline static void simsimd_cos_f32_neon(simsimd_f32_t const* a, simsimd_f32_t const* b, simsimd_size_t n, simsimd_distance_t* result) { }
Now look like this:
#pragma GCC push_options
#pragma GCC target("+simd")
#pragma clang attribute push(__attribute__((target("+simd"))), apply_to = function)
inline static void simsimd_cos_f32_neon(simsimd_f32_t const* a, simsimd_f32_t const* b, simsimd_size_t n, simsimd_distance_t* result) { }
#pragma clang attribute pop
#pragma GCC pop_options
Thanks to that SimSIMD on Windows is gonna be just as fast as on Linux and MacOS π€ πͺ
4.1.0 vs 4.0.0 Change Log (2024-03-23)
Add
- Bench against TF, PyTorch, JAX (5e64152)
- Complex dot-products for Rust (936fe73)
- Double-precision interfaces for JS (07f2aca)
Docs
- List all APIs (0a987a3)
Fix
- Avoid
vld2_f16
on MSVC (ce9800e) - Complex dispatch in Rust & C (d349bcd)
- Missing
_mm_rsqrt14_ps
in MSVC (21e30fe) - Missing
float16_t
in MSVC Arm64 builds (94442c3)
Improve
- Pragmas for MSVC compatibility (9d8a8d0), closes #74
- Silence TF warnings (0cffc9c)
- Type-casting (353fe43)