Skip to content

fix(plugins): restore the PluginQueryResult init removed by the columnMeta change#1602

Merged
datlechin merged 1 commit into
mainfrom
fix/pluginkit-restore-queryresult-init
Jun 6, 2026
Merged

fix(plugins): restore the PluginQueryResult init removed by the columnMeta change#1602
datlechin merged 1 commit into
mainfrom
fix/pluginkit-restore-queryresult-init

Conversation

@datlechin
Copy link
Copy Markdown
Member

Problem

Every registry plugin built before June 4 fails to load on app 0.49.0 with "Invalid plugin bundle: Bundle failed to load executable". The underlying dyld error is:

Symbol not found: PluginQueryResult.init(columns:columnTypeNames:rows:rowsAffected:executionTime:isTruncated:statusMessage:)

Commit 94ec469 (#1582) added columnMeta: [PluginColumnInfo]? = nil as a parameter to the existing PluginQueryResult init. A defaulted parameter replaces the init's mangled symbol rather than adding a new one, so PluginKit in 0.49.0 stopped exporting the init that every shipped plugin binary links against. The PluginKit ABI Gate flagged this on #1582 (3 failing runs); the PR merged over the red check with no label and no version bump.

Fix

Restore the 7-parameter init as an explicit overload that delegates to the full init with columnMeta: nil, marked @_disfavoredOverload so source-level calls keep resolving to the full init while old binaries get their symbol back. Verified the rebuilt module exports both mangled symbols and the restored one is byte-identical to the symbol old plugins reference.

This is an additive ABI change (a symbol returns); no PluginKit version bump. The abi-additive label applies once the gate reports the diff.

Also

  • CLAUDE.md: documents that adding a defaulted parameter to an existing public init/function is breaking, the restore-overload pattern, and that a red ABI gate is a merge blocker.
  • CHANGELOG entry under Unreleased.

Interim state

The 11 registry plugins were already rebuilt against the new ABI today, so the registry works with 0.49.0 once CDN caches refresh. This fix makes the next app release also load any plugin binary from before June 4 (including kit-17 binaries and user-side caches).

@datlechin datlechin added the abi-additive PluginKit ABI diff reviewed as additive; no version bump needed label Jun 6, 2026
@datlechin datlechin merged commit 1dd0497 into main Jun 6, 2026
6 of 7 checks passed
@datlechin datlechin deleted the fix/pluginkit-restore-queryresult-init branch June 6, 2026 11:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

abi-additive PluginKit ABI diff reviewed as additive; no version bump needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant