libmultiprocess Versions
Library versions are tracked with simple
tags and
branches.
Versioning policy is described in the version.h
include.
v12
- Current unstable version.
- Adds an optional per-listener
max_connections parameter to ListenConnections()
so servers can stop accepting new connections when a local connection cap is reached,
and resume accepting after existing connections disconnect.
- Adds
makePool method on ThreadMap to support thread pool routing, allowing requests without a specific client thread to be dispatched to a pool using a shortest-queue strategy (#283).
- Adds
std::unordered_set support, a BuildList helper, and a ReadList helper to reduce duplication in list build and read handlers (#277, #285).
- Adds support for translating C++
std::optional<T> struct fields to pairs of T + hasT :Bool Cap'n Proto struct fields, allowing unset optional primitive fields to be represented (#243).
- Produces more readable log output for Proxy object lifecycle events and IPC server-side failures (#218).
- Handles exceptions thrown by
destroy methods by logging instead of aborting (#273). This can prevent server crashes when non-libmultiprocess clients disconnect without destroying objects, in the case where a server object owns client objects and the server destructor tries to call the disconnected client to free them (#219).
- Handles unexpected exceptions thrown by callbacks (that should never happen) by logging errors instead of deadlocking (#260).
- Fixes a rare mptest hang on musl builds caused by a lost wakeup bug in
Waiter (#295).
- Fixes a race condition in a log print detected by TSan (#286).
- Build improvements: makes
target_capnp_sources work correctly when libmultiprocess is used as a CMake subproject (#289), adds mp_headers target for better lint tool support (#291), and fixes compatibility with recent Nix and CMake 4.0 (#238).
- Test, CI, documentation, and minor code improvements: design document corrections (#278), field constant comments (#279), clang-tidy fix (#292), new smoke test for double-precision float values (#294), new test for recursive async IPC calls (#301), removal of libevent from Core CI builds (#299), and rename of
EventLoop::m_num_clients to m_num_refs (#302).
- Used in Bitcoin Core master branch, pulled in by #35661.
- Increases spawn test timeout to avoid spurious failures.
- Uses
throwRecoverableException instead of raw throw to improve runtime error messages in macOS builds.
- Used in Bitcoin Core master branch, pulled in by #34977. Also pulled into Bitcoin Core 31.x stable branch by #35028.
- Fixes race conditions where worker thread could be used after destruction, where getParams() could be called after request cancel, and where moncancel could be called after request finishes.
- Adds
CustomHasField hook to map Cap'n Proto null values to C++ null values.
- Improves
CustomBuildField for std::optional to use move semantics.
- Adds LLVM 22 compatibility fix in type-map.
- Used in Bitcoin Core master branch, pulled in by #34804. Also pulled into Bitcoin Core 31.x stable branch by #34952.
- Better support for non-libmultiprocess IPC clients: avoiding errors on unclean disconnects, and allowing simultaneous requests to worker threads which previously triggered "thread busy" errors.
- Intermediate version used in Bitcoin Core master branch between 30.x and 31.x branches, pulled in by #34422.
- Adds SpawnProcess race fix, cmake
target_capnp_sources option, ci and documentation improvements. Adds version.h header declaring major and minor version numbers.
- Intermediate version used in Bitcoin Core master branch between 30.x and 31.x branches, pulled in by #34363.
- Fixes intermittent mptest hang and makes other minor improvements.
- Used in Bitcoin Core 30.1 and 30.2 releases and 30.x branch, pulled in by #33518 and #33519.
- Adds support for log levels to reduce logging and "thread busy" error to avoid a crash on misuse.
- Minimum required version since Bitcoin Core 30.1, pulled in by #33412, #33518, and #33519.
- Adds CI scripts and build and test fixes.
- Used in Bitcoin Core 30.0 release, pulled in by #32345, #33241, and #33322.
- Adds fixes for unclean shutdowns and thread sanitizer issues.
- Drops
EventLoop::addClient and EventLoop::removeClient methods,
requiring clients to use new EventLoopRef class instead.
- Minimum required version for Bitcoin Core 30.0 release, pulled in by #31741, #32641, and #32345.
- Adds build improvements and tidy/warning fixes.
- Used in Bitcoin Core 29 releases, pulled in by #31945.
- Adds many improvements to Bitcoin Core mining interface: splitting up type headers, fixing shutdown bugs, adding subtree build support.
- Broke up
proxy-types.h into type-*.h files requiring clients to explicitly
include overloads needed for C++ ↔️ Cap'n Proto type conversions.
- Now requires C++ 20 support.
- Minimum required version for Bitcoin Core 29 releases, pulled in by #30509, #30510, #31105, #31740.
- Added better cmake support, installing cmake package files so clients do not
need to use pkgconfig.
- Used in Bitcoin Core 28 releases, pulled in by #30490 and #30513.
- Dropped compatibility with Cap'n Proto versions before 0.7.
- Used in Bitcoin Core 27 releases, pulled in by #28735, #28907, and #29276.
- Changed
PassField function signature.
- Now requires C++17 support.
- Used in Bitcoin Core 25 and 26 releases, pulled in by #26672.
- Dropped hardcoded includes in generated files, now requiring
include and
includeTypes annotations.
- Used in Bitcoin Core 22, 23, and 24 releases, pulled in by #19160.
- Initial version used in a downstream release.
- Used in Bitcoin Core 21 releases, pulled in by #16367, #18588, and #18677.