v4.1.2
v4.1.2
May 31, 2026 · GitHub ↗
A targeted bugfix release: multiprocessing now runs on macOS. MP-mode binaries aborted at startup on macOS — and only macOS — with mutex lock failed: Invalid argument, while the same build ran fine on Linux and Windows. If you only use MT mode, or don't run on macOS, nothing here affects you. No library or API changes.
Fixed
- macOS MP no longer aborts at startup. Both MPI schedulers passed a 128-byte buffer to
MPI_Get_processor_name, which OpenMPI requires to beMPI_MAX_PROCESSOR_NAME(256) — it fills the full field, overflowing the buffer and zeroing an adjacentstd::mutex. A zeroed mutex is a validPTHREAD_MUTEX_INITIALIZERon Linux/glibc, so the corruption stayed invisible there; macOS rejects it withEINVAL, so the first lock threwstd::system_error. The buffer is now sizedMPI_MAX_PROCESSOR_NAMEin both the semi-centralized and centralized schedulers (#310)
Removed
- Dropped an unused
m_processor_namefield fromnode_manager— declared but never read or written, and carrying the same undersized buffer (#310)
Docs
- Added a DeepWiki badge and callout to the README (#308)
Build / CI
- Split the Java binding workflow's native build from its tests, so a flaky Java test re-runs on its own without rebuilding the JNI library — the build job hands the native lib to the test job as a per-run artifact (#311)
- Extracted the duplicated gempba-examples branch resolver into a shared composite action, deduping the three C/C++ CI workflows (#311)
- Bumped the PKGBUILD
sha256for the v4.1.1 packaging artifact