#36060 build: require KJ exception support for IPC
| Reviewability | Reviews | Agreement | Size | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| #36060 build: require KJ exception support for IPC | Author silent 69d | 0 | Crickets | 179 | ||||||
|
|
|
|
| ||||||
Reviewability: ReadyStalePaused Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs. Size: lines added or modified outside tests, then in tests; greener = smaller. | ||||||||||
Goal
This PR adds CMake checks during configuration to verify that both the compiler and the installed libkj provide C++ exception support when ENABLE_IPC is active. It also explicitly sets KJ_NO_EXCEPTIONS=0 in the depends capnproto recipes and on internal IPC targets, updating build documentation across BSD and Unix platforms.
Problem: IPC relies on libkj exception support in runCatchingExceptions, but libkj can be compiled with exceptions disabled or misdetect compiler capabilities, causing obscure build failures when IPC is enabled.
Reviewability
Stale · Author silent 69d
No author activity for 69 days; a review may wait a long time for a response.
Agreement
Crickets
no substantive comment either way
Objections, suggestions, and questions: none recorded.
Files
0 lines under test/bench/ci.
- cmake/module/CheckKjExceptions.cmake +133/-0
- CMakeLists.txt +13/-0
- cmake/libmultiprocess.cmake +11/-0
- src/ipc/CMakeLists.txt +10/-0
- doc/build-netbsd.md +3/-0
- src/ipc/test/fuzz/CMakeLists.txt +3/-0
- depends/packages/capnp.mk +1/-0
- depends/packages/native_capnp.mk +1/-0
- doc/build-freebsd.md +1/-0
- doc/build-openbsd.md +1/-0
- doc/build-osx.md +1/-0
- doc/build-unix.md +1/-0
Card
The short text the ranking pass compares across PRs.
This PR ensures that C++ exception support is verified at configure time when building with IPC enabled, failing early with clear instructions if libkj or the compiler lacks it. It also explicitly builds capnproto in depends with exception support enabled and adds the appropriate preprocessor macro to internal IPC targets. The problem primarily affects developers building the experimental multiprocess targets against varying system capnproto packages. The PR is currently a draft with passing CI and no review activity.
Data
Discussion read under schema 1 rules: suggestions and questions may be missing, and an objection may combine several harms (schema history).
labels: Build system · draft
Categories
Build and CI
P3 · platform fix
Prevents obscure build failures when IPC is enabled by validating libkj exception support at configure time. While helpful for contributor friction on systems where libkj misdetects compiler capabilities, IPC is currently an optional build configuration.
Membership: Labeled 'Build system' and adds CMake checks along with depends package updates for capnproto.
Factors: security/stability 0, bug 1, performance 0, user value 0, leverage 1
IPC / multiprocess
P3 · platform fix
Ensures that the Cap'n Proto / libkj exception support required by `runCatchingExceptions` is present when compiling IPC binaries. This reduces build friction across platforms for the multiprocess build glue.
Membership: Directly adjusts build integration and targets for IPC and libmultiprocess (`src/ipc/CMakeLists.txt` and `cmake/libmultiprocess.cmake`).
Factors: security/stability 0, bug 1, performance 0, user value 0, leverage 1