-
Notifications
You must be signed in to change notification settings - Fork 29
enable Py_LIMITED_API to strip down build matrix to one abi3 wheel per platform #264
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Replace PyUnicode internal APIs with stable API alternatives so we can enable Py_LIMITED_API by default and produce cp38-abi3 wheels that work across Python 3.8+ versions, reducing the number of wheels (see #260). To disable it, one should set USE_LIMITED_API=0 environment variable. Also fixed a memory leak (malloc without free) in Face.get_name() adding proper cleanup. Fixes #262
khaledhosny
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did some timing shaping a bunch pf text files a 100 times, and I don’t see any significant difference between this PR and main branch.
|
I don't understand why the windows build fails, and can't test it locally. Maybe @madig could take a look on his machine? https://github.com/harfbuzz/uharfbuzz/actions/runs/18591580474/job/53007536037 |
|
Ugh.. even after disabling limited api on pypy3.11, it segfaults when running the tests... https://github.com/harfbuzz/uharfbuzz/actions/runs/18591580474/job/53007536046#step:5:2171 I have no idea. We were indeed shipping pypy3.11 wheels on previous releases (e.g. those tagged |
|
it's nice to see cibuildwheel skips rebuilding the abi3 wheel for subsequent pythons when it sees it is compatible |
I don’t mind dropping pypy until someones comes asking for it (and then it will be on them to fix it). |
PyUnicode_DecodeUTF32() in PyPy has a bug that causes segfaults. https://github.com/harfbuzz/uharfbuzz/actions/runs/18591580474/job/53007536046#step:5:2171 Switch to using hb_ot_name_get_utf8() with UTF-8 decoding instead, which is simpler and works correctly on both CPython and PyPy
maybe it fixes the windows build issue?
96eb7c3 to
dd7c242
Compare
this fixes the following cibuildwheel error: https://github.com/harfbuzz/uharfbuzz/actions/runs/18593853794/job/53014973393#step:5:1092 ``` Build failed because the repair step completed successfully but did not produce a wheel. Your `repair-wheel-command` is expected to place the repaired wheel in the {dest_dir} directory. See the documentation for example configurations: https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command ``` Windows has no default repair-wheel-command, so when we set one (even via inherit+append), we must explicitly copy the wheel to dest_dir...
commit 3beb8c6 inadvertently disabled pypy macos builds altogether...
I can't seem to get it working, but it's ok to only run on linux/macosx
…only somehow the previous attempt to override archs didn't work.
ddd5be5 to
26c63e2
Compare
Fixes #262