The changes can be verified by running test/lint/git-subtree-check.sh src/ipc/libmultiprocess as described in developer notes and lint instructions.
Changes since last subtree update (#35720):
- Adds support for nonunix platforms, making API changes that are not backwards compatible (#274). Follow-ups add a
CurrentThread()accessor matching compatibility code in bitcoin/bitcoin#35084 (#323) and remove code for Cap'n Proto versions before 0.9 (#331). - Fixes a data race between IPC calls running on worker threads and disconnects, found by Antithesis (#349).
- Fixes a use-after-free when a socket disconnects before
ConnectStreamconnects, and leaks and hangs when a clientconstruct()call throws (#298). - Fixes a race where file descriptors from
SpawnProcesscould leak into processes forked at the same time by other threads, by clearingFD_CLOEXECin the child after forking (#311). - Makes
SpawnProcessreportexecfailures back to the parent and throw, reaping the child (#312). - Adds support for
std::chrono::time_pointfields (#303) and for serializing lists of interface objects that need to be moved from (#304), both needed by bitcoin/bitcoin#10102. - Accepts container fields and parameters with any comparator, hash, and allocator types, like Bitcoin Core's
GCSFilter::ElementSet, needed by bitcoin/bitcoin#29409 (#379). - Finds the
capnptool in vcpkg and Windows builds, needed by bitcoin/bitcoin#32387 (#317). - Replaces
EventLoop::post()withsync()taking akj::FunctionParam, avoiding a heap allocation per call (#347). - Names threads spawned by the event loop so they can be told apart in tools and logs (#324).
- Fixes warnings that Bitcoin Core enables or plans to enable: adds
[[noreturn]]attributes for-Wmissing-noreturn(#339, for bitcoin/bitcoin#35911), and fixes-Wunused(#362, for bitcoin/bitcoin#36167),-Wunused-const-variableand-Wundef(#370), and-Wmissing-prototypes(#386, for bitcoin/bitcoin#36743) warnings. - Fails at compile time with a suggested workaround when Cap'n Proto misdetects exception support (
KJ_NO_EXCEPTIONS), as happens on NetBSD (#364). - Build improvements: fixes stale generated code when the
mpgenbinary changes (#316), fixesmpgenlink order for static Cap'n Proto builds (#367), linksmpgenagainstkj-asyncinstead ofcapnp-rpc(#327), shows Cap'n Protofind_packagediagnostics (#325), installstype-unordered-set.handversion.h(#350), and shows include-what-you-use errors instead of failing silently (#371). - Test, CI, documentation, and minor code improvements: fix for a startup race in the example program (#315), new test for immediate client disconnects in
ListenConnections(#310),ReadListreturn value check (#338), connect test race fix (#343) and cleanups (#344),std::ranges::copyfollow-ups (#307), trailing whitespace removal (#345), Cap'n Proto version documentation fix (#357), clang-tidy updates (#358, #360, #380), new CI job testing newer cmake and Cap'n Proto versions (#212, #359), CI coverage for the minimum supported g++ (#330, #366), new CI warnings (#332, #341), CI parallelism (#334, #356), CI diagnostics (#351, #352), Nix and LLVM updates (#296, #363), NetBSD and OpenBSD CI fixes (#321, #340, #381), building Cap'n Proto with GCC in the 32-bit CI job to avoid an ABI mismatch (#383), and GitHub Actions updates (#387).
The second commit suppresses the clang -Wc++23-lambda-attributes warning and the equivalent MSVC warning C5283, which the new [[noreturn]] lambda attribute in mp/proxy-types.h triggers in C++20 builds.