Skip to content

Release history

ForkUnion v3 releases

All releases

23 shown

No immediate action
v3.0.2 Maintenance

Routine maintenance and dependency updates.

No immediate action
v3.0.1 Mixed

Makefile probes + multiple fixes

v3.0.0 Breaking risk
⚠ Upgrade required
  • Update C code to use explicit `fu_topology_t` handles; remove reliance on removed shims
  • Adjust build system for new macro versions in types.hpp
  • Migrate configuration to the unified vocabulary order
Breaking changes
  • Measure the memory fabric in-process replaces HMAT and kernel tiering
  • DomainAllocator, symmetric containers, SDK benchmark alignment changed
  • Explicit `fu_topology_t` handle across C ABI; no singletons
Notable features
  • Bind measured fabric to Rust and Zig (bindings added)
  • FreeBSD support for reschedule, topology, memory placement, superpages
  • Windows NUMA pools, pinning, and topology features
Full changelog

Release: v3.0.0 [skip ci]

Major

  • Break: Measure the memory fabric in-process, replacing HMAT and kernel tiering (49290e7)
  • Break: DomainAllocator, symmetric containers, SDK benchmark alignment (06bf8fe)
  • Break: Explicit fu_topology_t handle across the C ABI, no singletons (6903711)
  • Break: One vocabulary, one canonical order, across every surface (fa78301)
  • Break: Remove every back-compatibility shim (818151a)
  • Break: Layer capability macros, split the umbrella header (ec013e8)
  • Break: Sound, allocation-free RoundRobinVec bulk operations (384bef5)
  • Break: Split topology into compute and memory domains (64d4bdf)
  • Break: Generation tokens for non-blocking multi-pool coordination (1545311)
  • Break: New project name & link (6da19ed)
  • Break: Name spacing/capitalization (0911619)

Minor

  • Add: Bind the measured fabric to Rust and Zig (35e439b)
  • Add: Enumerate per-domain cache sizes from sysfs and CPUID (c322c93)
  • Add: FreeBSD reschedule, topology, memory placement, and superpages (6a84509)
  • Add: Label-propagation benchmark replacing triangle counting (2604198)
  • Add: Cache-line demote & promote hints for x86, Arm, and RISC-V (4145073)
  • Add: Monitored waits, per-loop wait bounds, and Zawrs (d7774e5)
  • Add: Owning arrays, and rebuild the topology on them (586e138)
  • Add: Windows support for topology, NUMA pools, and pinning (2ae8150)
  • Add: Miri coverage of the pure-Rust unsafe (6c7f62d)
  • Add: Rust scope() API replacing the SafePtr smuggle (b71341f)
  • Add: Memory tiers, cpuless domains, HMAT metrics, and macOS harvest (c27faf8)
  • Add: Stoppable & Exception-handling try_for (cb6b257)
  • Add: Reductions in Rust (e7932c4)
  • Add: NUMA-aware allocator for Zig (bbb9e90)
  • Add: Bench against libXEV and Spice (bf998f9)
  • Add: Draft Zig binding (916e641)

Patch

  • Make: Version the duplicated macros in types.hpp (6fc9312)
  • Docs: Rewrite the topology guide around the declared-versus-observed split (a6e9843)
  • Improve: Hoist the SplitMix64 avalanche into the shared types (3465c2d)
  • Docs: Refresh the intro and complete the v3 API coverage (45e4753)
  • Fix: Sync build-system references to place-* feature names (4e87654)
  • Fix: Build the timed-wait monitors under -march=native (0891489)
  • Make: Green the CI matrix - apt sources, tar, shellcheck, cross rows (1be2492)
  • Docs: Refresh the README against the v3 APIs and slim the benchmarks (e3396ec)
  • Make: Rewrite the pre-commit hook single-pass and Windows-proof (a52dfef)
  • Fix: Probe FreeBSD's memory placement at runtime, not just compile time (c2eb3a7)
  • Make: Restructure the pre-release CI around matrices and ctest (e3d7ff2)
  • Improve: Flatten test bodies into helpers and split bundled concerns (feeaddd)
  • Improve: Normalize the N-body kernels across languages (02bb703)
  • Improve: Deepen test coverage across schedulers, lifecycles, and the C ABI (6b77064)
  • Improve: Time-budgeted benchmarks, symmetric across C++, Rust, and Zig (45eb844)
  • Make: Install git in the FreeBSD CI VM for Taskflow fetch (198b04f)
  • Make: Align benchmark builds and add Taskflow as a baseline (ef68bca)
  • Fix: Hoist dead work and stale docs out of the pool internals (11aa660)
  • Improve: Flatten the distributed pool's colocations into one array (50d39e2)
  • Improve: Dispatch curated yield-and-hints pool variants at runtime (134b7f6)
  • Improve: Private cursors, read-probes, and demotions in dynamic stealing (c525460)
  • Improve: Pools carry a cache-hints policy beside the yield (ea5399a)
  • Make: Bump Zig to 0.16 for macOS 26 (4ce5b40)
  • Make: Refresh retired CI runners, fix FreeBSD linkage (e351fd1)
  • Improve: Steer Apple efficiency-core pools via QoS (c7be3fb)
  • Fix: Route platform checks through the FU_* vocabulary (f30ce60)
  • Fix: Robust NUMA placement under sandboxed and single-node hosts (239e3b0)
  • Improve: Locate and value-print test failures, backtrace on crash (c427d6c)
  • Make: Static-link the qemu-run cross-compile test binaries (ef3d11c)
  • Fix: Cross-platform CI test failures (315da41)
  • Make: Build the old-glibc floor on manylinux_2_28 (5f26aba)
  • Improve: Model Android and FreeBSD affinity and scheduling (b903e50)
  • Improve: Flatten the libc and hwprobe capability detection (7a4fd4e)
  • Fix: Assemble the RISC-V pause hint on stock toolchains (1da97c7)
  • Improve: Reach the CPU yield intrinsics on MSVC (a960fa3)
  • Fix: Harden pool-completion tests against scheduler starvation (e85d35f)
  • Make: Expand CI to validate cross-platform compatibility (d171746)
  • Fix: Build clean under -Wall -Wextra -Werror (3833a67)
  • Fix: Assemble the WFET capability probe on stock toolchains (05ed868)
  • Improve: Full backend matrix via one compile-time-policy dispatch per demo (12bab43)
  • Improve: Unified capability enumeration, pool_kind_t, leaner ABI (90546ed)
  • Improve: Cleaner feature controls, one set across the SDKs (c2e9669)
  • Fix: Restore Windows NUMA allocation and page-size probe (6d29828)
  • Fix: Size and pin pools from the cores we were given (33497ab)
  • Make: Expose each capability as an AUTO/ON/OFF tri-state (0020411)
  • Fix: Seed where a stealing thread starts probing, not just its stride (c5f30cd)
  • Improve: Private claim cursors for for_n_dynamic (5ea9298)
  • Improve: NUMA backends for the Rust N-body, and dual-socket results (8350177)
  • Improve: Compute-domain metadata across the bindings (95df7bc)
  • Fix: NUMA topology harvesting on multi-socket hosts (3ebeea5)
  • Docs: Reword stale topology phrasing to compute/memory domains (0272b39)
  • Make: Rename allocator numa_node to memory_domain (d8e170f)
  • Docs: Reword prong metadata for two-axis topology (f12d0ef)
  • Make: Bump CI runners and add Arm64 + sanitizer coverage (d230ab1)
  • Fix: Rust examples for by-reference for_threads (39b007c)
  • Make: Bump CI (9a08a62)
  • Fix: Over-aligned AllocationResult (3bf34e9)
  • Improve: Validate CacheAligned padding (46bb382)
  • Improve: RoundRobinVec code nesting (9982ad9)
  • Fix: Deprecate spice comparison (a707d55)
  • Make: Backport to Zig 0.15 (0167211)
  • Improve: Shared call_yield_ with & w/out thread (541842c)
  • Improve: Select worker-yield overloads with if constexpr (53e1b5d)
  • Fix: Route standard_worker_yield through micro_yield() (101a955)
  • Improve: Add worker_yield_t hook for idle backoff (18b6d63)
  • Make: Apple's libSystem contains Blocks runtime (1e9540f)
  • Make: Skip C11 tests on MSVC - lacking atomics (a21ac35)
  • Improve: Test C stable API (e8c6b48)
  • Improve: Static slicing for std.Thread.Pool (ca3d42b)
  • Make: Upgrade Zig to v0.16 (6d6283a)
  • Improve: Handle void contexts (0b9ed05)
  • Fix: Use aligned allocs for opaque_pool_t (fb063a7)
  • Improve: Thread name formatting (d9455c8)
  • Docs: Why no Miri or Loom? (0ec9ae9)
  • Fix: Safeguard try for std::thread (ddf8ea0)
No immediate action
v2.3.1 Bugfix

WFET encoding fix

No immediate action
v2.3.0 New feature

Parallel iterators + scratch space + performance

No immediate action
v2.2.10 Bug fix

Fix capabilities_t bitwise OR

No immediate action
v2.2.9 Maintenance

Routine maintenance and dependency updates.

No immediate action
v2.2.8 Mixed

Cross‑compile, alignment, variant, libc++ fixes

No immediate action
v2.2.7 New feature

NUMA support + module updates

No immediate action
v2.2.5 Maintenance

Routine maintenance and dependency updates.

No immediate action
v2.2.4 Bugfix

Fix sign conversion warnings

No immediate action
v2.2.3 Bug fix

__builtin_expect fix

No immediate action
v2.2.2 Maintenance

Routine maintenance and dependency updates.

No immediate action
v2.2.1 Bug fix

`mood` init + inline statics + drop Clang flags

No immediate action
v2.2.0 New feature

Executor mutex + patch improvements

No immediate action
v2.1.2 Mixed

Make consistency + Improve static analysis

No immediate action
v2.1.1 Bug fix

MSVC build fix

No immediate action
v2.1.0 New feature

Rust primitives, NUMA containers, C API updates

Review required
v2.0.0 Breaking risk
Breaking upgrade

NUMA pools + huge pages + yields

No immediate action
v1.0.6 Maintenance

Routine maintenance and dependency updates.

No immediate action
v1.0.5 Maintenance

Routine maintenance and dependency updates.

No immediate action
v1.0.4 Bug fix

Fixes for_slice chunk handling

No immediate action
v1.0.3 Bug fix

Safe broadcast fix

Beta — feedback welcome: [email protected]