Releases
v3.1.0 — April 19, 2026 · GitHub ↗
macOS support, lint enforcement, code coverage, packaging, and portability fixes.
Added
- macOS CI pipeline (macOS 26) with OpenMPI
- Lint workflow: clang-format-21 check and clang-tidy-18 static analysis on every push and PR
scripts/lint.sh— local lint helper with--format-only,--tidy-only,--fix, and--jobsflags- Code coverage instrumentation and upload to Codecov
- CMake install rules, pkg-config file, CPack DEB packaging, and a GPG-signed APT repository
- MSYS2 PKGBUILD for Windows packaging
- CI publish jobs for both Ubuntu (
.deb) and Windows (.pkg.tar.zst) on version tags
Changed
- Windows CI runner upgraded from 2022 to 2025
Queuerenamed toqueueand wrapped in thegempbanamespace- Bundled spdlog replaced with system-installed spdlog
- CPM.cmake download hardened against silent corruption
Fixed
- Bug in
mpi_centralized_scheduler - Portability: removed
<bits/stdc++.h>, gated<stacktrace>on__has_include, fixedscoretype-dispatch across platforms, dropped-fconcepts, gated-rdynamicandstdc++expfor non-Linux targets
Removed
- Private
node_managermethod that always returned zero
v3.0.0 — December 8, 2025 · GitHub ↗
Ground-up architectural rewrite. Single-header facade, template-free nodes, fully pluggable subsystems.
Added
- Single-header facade:
#include <gempba/gempba.hpp>replaces multi-step initialization - Template-free node API — internal type erasure eliminates
Node<...>andResultHolder<...>from user code entirely - Lazy node evaluation: arguments constructed only when
should_branch()is called, avoiding allocation for pruned branches - Visitor-based statistics system (
stats/stats_visitorinterfaces +default_mpi_stats_visitor) - Pluggable architecture: every subsystem (scheduler, load balancer, node core, serial runnable, stats) replaceable via interface
Changed
branch_handler→node_managermpi_scheduler→scheduler, exposingcenter_view()andworker_view()- Factory functions relocated to
gempba::mt::(multithreading) andgempba::mp::(multiprocessing) namespaces try_push_mt()/try_push_mp()→try_local_submit()/try_remote_submit()
Removed
DLB_Handlersingletonbranch_handlersingletonResultHolder<>template- Manual virtual root linking (now handled automatically)
Requirements
- C++23
v2.0.0 — August 17, 2025 · GitHub ↗
IPC data model overhaul. Raw-byte transport, new result and score types, naming cleanup.
Added
gempba::task_packet— raw byte buffer replaces string-serialized IPC datagempba::result— dedicated type for shipping results across processesgempba::score— type-erased numeric, supports multiple primitive types (replacesreference_value)
Changed
- Classes, member functions, and member variables renamed per
.clang_tidyconventions - Schedulers now exchange raw bytes instead of serialized strings
- Fixed MPI communicator probing in centralized scheduler
Build
- Improved
CMakeListsreadability openmpiinvocation now correctly bound to intended core count
v1.1.0 — August 4, 2025 · GitHub ↗
MPI scheduler cleanup and citation support.
Added
- Citation files (
CITATION.cff)
Changed
- MPI scheduler communicator probing reorganized for correctness and readability
runCenterandrunNoderefactored withswitchstatements for clarity
v1.0.2 — June 8, 2025 · GitHub ↗
Improved external dependency integration and build ergonomics. No compatibility breaks.
Added
- CPM for external CMake dependency management
- Custom initial process topology injection via new scheduler method
- Macros now ship with defaults; consumer projects can override as needed
Changed
- GemPBA now straightforward to import as an external CMake dependency
- Macros renamed for clarity
Fixed
- Compilation errors in several examples
Build
- Improved
CMakeListsreadability - Files reorganized
v1.0.1 — October 30, 2024 · GitHub ↗
Project structure improvements and CI/CD setup. No compatibility breaks.
Added
- Common parent class for
MPI_SchedulerandMPI_Scheduler_Centralized - Common parent class for
ResultHolder - CI/CD pipeline triggered on merges to
main - Each example now builds as its own standalone executable, ensuring compile-time coverage on changes
Fixed
- Minor bugs related to macro usage
Build
- Project structure reorganized
v1.0.0 — April 9, 2024 · GitHub ↗
Initial stable release.