Releases: ashvardanian/fork_union
v2.2.7: Bringing NUMA to Rust 🦀
This release brings explicit, opt‑in NUMA support behind a single feature flag in your Cargo.toml
:
[dependencies]
fork_union = "2.2.6" # default
fork_union = { version = "2.2.6", features = ["numa"] } # with NUMA support on Linux
Patch
- Make: Package sources into crates (d259d78)
- Make: Linking Rust to libNUMA (8292b2d)
- Make: Infer & document MSRV (acc5ac8)
- Make: Name Rust CI steps (1d8a777)
- Make: Drop
Cargo.lock
from crate (0540376) - Improve: Allow
NULL
pool names (210ada0) - Improve: Naming Rust tests (23be76b)
- Make: Reinstall
cmake
on new macOS (d9dd0c4) - Make: Bump Crate versions in docs (39d6839)
- Make: NUMA
--feature
for Rust (a7fab58) - Make: Consistent
-O2
setting (aa50e3f) - Make:
AUTO
option for NUMA on Linux (25085c1) - Docs: Wording inconsistency (cc14f80)
- Fix: Wrong
${TGT}
variable name (1a557b0) - Fix:
usize
vsc_int
ABI mismatch (8788994) - Fix: Wrong macro conditions (243a6be)
Release v2.2.5
Release v2.2.4
Release v2.2.3
Release v2.2.2
v2.2.1: Build Hardening 🏗
- Fix:
mood
may not be initialized (a7a76b3) - Fix: Static functions should be inlined (ec9020d)
- Fix: MSVC 4505 & 4324 warnings (4f23aa5)
- Fix: MSVC compilation warnings (d3c3b14)
- Make: Drop missing Clang flags (c1897ca)
- Fix: Mark unused variables (e089fe4)
- Fix: Unknown GCC pragmas on Clang (5980d6d)
- Fix: ABI compat warning for Windows (4c60177)
- Make: Harden builds (b518946)
- Fix: Unused
ebx
,edx
(48734dc)
v2.2: Extended Control-Flow APIs
Minor
- Add:
executor_t::make_mutex()
helpers (28fb194)
Patch
- Improve: Styling argument-taking macros (f7c13e3)
- Fix: Upcast to colocated (62634ff)
- Fix: Default constructors should be
noexcept
(162a3ac) - Fix: Avoid reserved names (5e45bf8)
- Make:
cppcheck
&clang-tidy
targets (684b2aa) - Make: Maximize warnings (834dd47)
- Improve: Reduce warnings (653b146)
- Fix: Dropping sign in comparison (821952d)
- Fix: Unused
deadline_hi
(4729e42) - Improve: Reduce implicit conversions (f5641d8)
Release v2.1.2
Release: v2.1.2 [skip ci]
Patch
- Make: Consistent binary paths (134eca9)
- Make:
ctest
discoverable from root (41385b7) - Make: Avoid nesting builds into
scripts/
(7de8a1d) - Improve: Switch to
bf16::dot
over::cos
(f9349fb) - Fix: Rust static checks with Clippy (299c4d0)
- Docs: Refresh headlines (38a3ce7)
- Improve: Static analysis annotation (e4e38b8)
Release v2.1.1
v2.1: `PinnedVec`, `RoundRobinVec`, and `SpinMutex` for Rust 🦀
This PR introduces a significant amount of functionality for Rust and provides portability improvements for C++. Regarding the former, the compilation of different sections is now better guarded, and some of the Assembly instructions are encoded manually to increase compatibility.
On the Rust side, many new classes were added. SpinMutex
replaces Mutex
, similar to spin_mutex
in our C++ layer. PinnedVec
provides Vec
-like functionality, but is built around PinnedAllocator
to attach to a certain NUMA node. It's not just a Vec
alias with a custom allocator, as our primary allocate_at_least
API differs from Rust's Nightly standard library. More interestingly, RoundRobinVec
is a NUMA-distributed container for vast arrays of data, with most operations expecting an additional threads pool
argument to distribute the work across the entire machine.
Check out scripts/search.rs
for NUMA-aware Vector Search examples leveraging SimSIMD.
Minor
- Add: Vector Search Rust example (f74ef30)
- Add:
RoundRobinVec
for Rust (141985a) - Add: New metadata APIs for C (5d80c48)
- Add:
locate_thread_in
for C and Rust (7fbddb2) - Add:
IndexedSplit
for Rust (339ec63) - Add: Fetching total RAM volume on a NUMA node (115f74f)
- Add:
SpinMutex
for Rust (420d606) - Add:
PinnedVec
for Rust (3394386)
Patch
- Make: Run both C++17 and 20 tests (7542c4c)
- Fix: Try
strtoull
overstoull
for MSVC (6a54aac) - Fix: Down-casting
size_t
warning (ef9f501) - Fix: Avoid ternary-default operations for MSVC (7d59d08)
- Fix: Globally define
_WIN32
-related macros (5809a1c) - Fix: Hard-coding WFET instruction (81fb545)
- Make: Avoid
-latomic
on AppleClang (9486cb5) - Docs: Polish intro (35baa71)
- Fix: Type-casting issues (1b21aa7)
- Fix: MSVC has no
std::stoul
, only 64-bit (fe330d2) - Fix: MSVC security warnings (2d41131)
- Fix: Correct target
arch
pragmas for Arm (3107b8c) - Make: Unlink from OpenMP on Clang (f1112e2)
- Fix: Skip OpenMP on Clang (7eb9fde)
- Fix:
int
cast warnings (5915d3e) - Fix: Colored CLI output on Windows (57994b8)
- Improve: Feature-gate HW-specific YIELDs (02fff3c)
- Fix: Require inline Asm for HW-specific YIELDs (08b3922)
- Fix: Conflicting
max
in MSVC builds (b19dc4c) - Make: Require C++17 or higher (9e228c4)
- Improve: Switch to
bf16
examples (3405ccf) - Fix: Check for
WFET
support on macOS (8e1b683) - Fix: Clang
waitpkg
compilation on Linux (35f696c) - Improve: Types choice in
search.rs
(9e54b5e) - Make: Test on all OSes before releasing (844e3b2)
- Make: Rebase
dev
after releasing (5e6143a)