Part of Phase 2 — Reach (ROADMAP.md).
A build profile that lets the parse/serialize core compile and run with C++ exceptions and RTTI disabled and the hosted-only facilities dropped — the shape an embedded target needs (see the Pico 2W demand signal, sibling issue).
Groundwork — landed (branch claude/phase-2-prep-h8q9mz):
Deferred follow-up:
C++ feature discipline and the realtime contract in ROADMAP.md apply.
Part of Phase 2 — Reach (
ROADMAP.md).A build profile that lets the parse/serialize core compile and run with C++ exceptions and RTTI disabled and the hosted-only facilities dropped — the shape an embedded target needs (see the Pico 2W demand signal, sibling issue).
Groundwork — landed (branch
claude/phase-2-prep-h8q9mz):osc/OscConfig.hbuild seam: auto-detectOSCTAP_HAS_EXCEPTIONS; route every corethrowthroughOSCTAP_THROW(plainthrowwhen exceptions are on; non-returning, user-overridableOSCTAP_FATAL_HANDLER, defaultstd::abort(), when off).OSCTAP_FREESTANDINGdrops<iostream>, thestd::vector-backedOwnedMessage, and thestd::stringoperator<<.OSCTAP_FREESTANDINGCMake option buildstests/OscFreestandingTest.cppwith-fno-exceptions -fno-rtti(flags PRIVATE to that target);freestandingCI job (GCC + Clang, C++17/20) keeps it green.OSCTAP_THROW(X)≡throw X).Deferred follow-up:
TryInit/validate entry point so a no-exceptions build can reject untrusted packets by returning an error instead of aborting. Until then, malformed input on an exceptions-off build is fatal — safe only on a trusted link (open networks should keep exceptions on andcatchtheMalformed*Exceptiontypes). See the security note indocs/EMBEDDED_PICO2W.md.C++ feature discipline and the realtime contract in
ROADMAP.mdapply.