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
Until now, we silently link extensions with both stable and unstable ABI
libs,
with the latter taking precedence in symbol resolution, because it
appears first
in the linker command AND, crucially, contains all CPython symbols
present in
the stable ABI library, thus overriding them. This has the effect that
stable
ABI extensions on Windows are usable only with the Python distribution
that they
were built on.
To fix, a separate ABI3 header target is introduced, and should be used
for C++
extensions on Windows if stable ABI builds are requested.
Idea as formulated by `@dgrunwald-qt` in
nicholasjng/nanobind-bazel#72 (comment).
This is motivated by
nicholasjng/nanobind-bazel#72.
This change shifts stable ABI selection on Windows to the extension
developer, where
it has arguably always been (they had to set the `Py_LIMITED_API`
macro).
An upside of this approach is that with a separate target, the question
"stable ABI
or not" can be decided on an extension-by-extension basis, giving
maximum flexibility
to developers. This should not influence the wheel platform target,
because a wheel
is marked ABI3 if and only if all of its extensions are marked as ABI3.
---------
Co-authored-by: Richard Levasseur <[email protected]>
Co-authored-by: Richard Levasseur <[email protected]>
0 commit comments