Skip to content

ForkUnion v3

v2.1.0 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

arm atomics compare-and-swap concurrency memory-model mpi
+9 more
multithreading numa openmp parallel-computing parallel-stl parallelism rayon thread-pool threadpool

Summary

AI summary

Broad release touches Patch, Fix, Minor, and Add.

Full changelog

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)

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track ForkUnion v3

Get notified when new releases ship.

Sign up free

About ForkUnion v3

All releases →

Related context

Earlier breaking changes

  • v3.0.0 Introduces generation tokens for non‑blocking multi‑pool coordination
  • v3.0.0 Splits topology into separate compute and memory domains
  • v3.0.0 Makes `RoundRobinVec` bulk operations allocation‑free and sound
  • v3.0.0 Layers capability macros and splits the umbrella header file
  • v3.0.0 Removes all back‑compatibility shims

Beta — feedback welcome: [email protected]