#36060 build: require KJ exception support for IPC

ReviewabilityReviewsAgreementSize
#36060 151henry151 build: require KJ exception support for IPCAuthor silent 69d0Crickets179
  • Prevent obscure compilation failures by checking libkj exception support at configure time when IPC is on
  • Reduce build friction on systems where compiler capabilities are misdetected
  • Ready for review now with nothing known that would invalidate a review
  • No review verdicts recorded
  • No substantive comments or reviews yet
  • 179 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 0 lines removed in total
  • 12 files, 3 commits
Build and CI#33 of 56
P3 · platform fix
  • P3 because it catches compiler and library misconfigurations during CMake configuration
  • IPC remains an optional build target, so the build fix affects only a subset of builds
IPC / multiprocess#16 of 18
P3 · platform fix
  • P3 because IPC binaries require libkj exception support to compile cleanly
  • Reduces platform-specific build failures across BSD and Unix targets for multiprocess work
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

dossier JSON · extract JSON · model ledger, generated 2026-09-18T03:14, confidence high, input hash da1a23fbb2a3c0b4
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