Skip to content

Releases: ashvardanian/fork_union

v2.2.7: Bringing NUMA to Rust 🦀

05 Sep 13:42
Compare
Choose a tag to compare

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 vs c_int ABI mismatch (8788994)
  • Fix: Wrong macro conditions (243a6be)

Release v2.2.5

30 Aug 19:46
Compare
Choose a tag to compare

Release: v2.2.5 [skip ci]

Patch

  • Fix: Missing +wfxt for arch=armv8-a (24f060a)
  • Make: Upgrade CI (a46e207)

Release v2.2.4

29 Aug 13:29
Compare
Choose a tag to compare

Release: v2.2.4 [skip ci]

Patch

  • Fix: Sign conversion warnings (e29bfe2)

Release v2.2.3

20 Aug 11:39
Compare
Choose a tag to compare

Release: v2.2.3 [skip ci]

Patch

  • Fix: __builtin_expect on MSVC (d8b17b6)

Release v2.2.2

18 Aug 19:16
Compare
Choose a tag to compare

Release: v2.2.2 [skip ci]

Patch

  • Fix: Mark unused variables (6e8f415)

v2.2.1: Build Hardening 🏗

03 Aug 23:47
Compare
Choose a tag to compare
  • 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

17 Jul 10:21
Compare
Choose a tag to compare

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

08 Jul 14:50
Compare
Choose a tag to compare

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

07 Jul 20:22
Compare
Choose a tag to compare

Release: v2.1.1 [skip ci]

Patch

  • Fix: MSVC flags in build.rs (312d789)

v2.1: `PinnedVec`, `RoundRobinVec`, and `SpinMutex` for Rust 🦀

07 Jul 19:49
Compare
Choose a tag to compare

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 over stoull 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)