Skip to content

Split proxy into multiple header files#42

Merged
mingxwa merged 2 commits into
ngcpp:mainfrom
mingxwa:user/mingxwa/split
Jun 14, 2026
Merged

Split proxy into multiple header files#42
mingxwa merged 2 commits into
ngcpp:mainfrom
mingxwa:user/mingxwa/split

Conversation

@mingxwa

@mingxwa mingxwa commented Jun 10, 2026

Copy link
Copy Markdown
Collaborator

As more features getting added to the library, managing everything inside a single proxy.h is no longer scalable. It's time to split it.

Changes

  • Split proxy.h into 5 different headers in detail:
    • core.h: Full implementation of P3086
    • proxy_creation.h: Full implementation of P3401
    • facade_creation.h: Full implementation of P3584
    • dispatch.h: operator_dispatch, conversion_dispatch, weak_dispatch, etc.
    • skills.h: skills::format, skills::as_view, skills::rtti, etc.
  • Renamed the implementation detail namespace from details to detail.
  • Renamed instantiated_t (which doesn't really instantiate a class template) into specialization_t.
  • Updated CMake and Meson build files to detect proxy header files systematically.

No functional changes

@mingxwa mingxwa merged commit 4ceb42c into ngcpp:main Jun 14, 2026
16 checks passed
@mingxwa mingxwa deleted the user/mingxwa/split branch June 14, 2026 23:50
mingxwa added a commit to mingxwa/proxy that referenced this pull request Jun 15, 2026
Port the arm64e pointer-authentication hardening from
user/mingxwa/pac-3 onto main's multi-header layout (ngcpp#42). proxy's
hand-rolled v-table -- invoker, composite_meta, meta_storage -- moves
into a new detail/facade_meta_traits.h, which carries a signed
implementation on PAC targets (PRO4D_PAC) and a plain constexpr one
elsewhere. core.h includes it in place of the old
conv_meta/composite_meta/meta_ptr machinery and feeds a std::tuple of
metas to meta_storage.

The signed-pointer helpers code_ptr/data_ptr are inlined directly into
invoker (the IA-signed function pointer) and meta_storage (the
DA-signed v-table pointer); both expose has_value()/reset() so the
inline meta_storage specialization is shared between the two
implementations.

Validated the non-PAC path locally (full test suite); the arm64e path
is exercised by the new bvt-apple-pac CI job.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
mingxwa added a commit to mingxwa/proxy that referenced this pull request Jun 15, 2026
Port the arm64e pointer-authentication hardening from
user/mingxwa/pac-3 onto main's multi-header layout (ngcpp#42). proxy's
hand-rolled v-table -- invoker, composite_meta, meta_storage -- moves
into a new detail/facade_meta_traits.h, which carries a signed
implementation on PAC targets (PRO4D_PAC) and a plain constexpr one
elsewhere. core.h includes it in place of the old
conv_meta/composite_meta/meta_ptr machinery and feeds a std::tuple of
metas to meta_storage.

The signed-pointer helpers code_ptr/data_ptr are inlined directly into
invoker (the IA-signed function pointer) and meta_storage (the
DA-signed v-table pointer); both expose has_value()/reset() so the
inline meta_storage specialization is shared between the two
implementations.

Validated the non-PAC path locally (full test suite); the arm64e path
is exercised by the new bvt-apple-pac CI job.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants