You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(sdk): static plugin registry for WASM / no-dlopen builds
Add a static-linking path alongside the dlopen one, for Qt-for-WebAssembly
(and any single-binary build) where many plugins are linked into the host:
- PJ_{DATA_SOURCE,TOOLBOX,MESSAGE_PARSER}_PLUGIN, under #ifdef PJ_STATIC_PLUGINS,
emit a uniquely class-keyed `pj_static_get_*_vtable_<Class>()` instead of the
fixed `extern "C" PJ_get_*_vtable` symbol (which would collide across plugins
in one binary). The C-ABI vtable contract is unchanged.
- {DataSource,MessageParser,Toolbox}Library::loadStatic(vtable): wrap a
statically-linked vtable with a sentinel shared_ptr owner (no DSO), so
valid()/createHandle() work unchanged.
- PluginRuntimeCatalog::registerStatic{DataSource,MessageParser,Toolbox}(vtable):
read the embedded manifest JSON and register without a disk scan.
- CMakeLists: append -Wno-error under EMSCRIPTEN (wasm32 size_t is 32-bit).
Pure additions (+243/-0); the dlopen path and desktop behavior are untouched.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(sdk): static PJ_DIALOG_PLUGIN variant (no-collision, WASM)
Under PJ_STATIC_PLUGINS many plugins link into one binary; the fixed
`extern "C" PJ_get_dialog_vtable` symbol (+ the ABI-version export) PJ_DIALOG_PLUGIN
emits would collide across them at link. Emit a uniquely class-keyed
pj_static_get_dialog_vtable_<Class>() instead (keeping the dialogVtableFor<Class>
specialization), completing the static-export pattern the other three family
macros already follow. The static registry resolves dialogs by this getter, not
the dlsym entry point.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* chore(release): bump version to 0.11.0
MINOR: backward-compatible API additions for static (no-dlopen) plugin
linking — the static plugin registry + static dialog variant used by the
Qt-for-WebAssembly build. All already-built plugins keep working unchanged.
Also normalize clang-format (backslash-continuation alignment) on the
static-plugin macro headers.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* refactor(sdk): collapse the three registerStatic* bodies into one helper
registerStaticDataSource/MessageParser/Toolbox were near-verbatim copies
differing only in library type, runtime struct, family label, and the one
family-specific field. Extract a `registerStaticPlugin<>` helper that does the
shared load-static + parse-manifest + fill-common-fields + push body; each
method now passes only the family-specific fill lambda. No behavior change.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments