Create manylinux2014 wheels#745
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #745 +/- ##
=======================================
Coverage 93.44% 93.44%
=======================================
Files 7 7
Lines 2241 2241
=======================================
Hits 2094 2094
Misses 147 147 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Here's benchmark branch and run, uses
Uses wheels from:
Here's a Claude summary: Benchmark: manylinux2014 (gcc 10) vs manylinux_2_28 (gcc 14)Method: benchmarked ujson wheels built from the same C source with the two images, so the only variable is the compiler. Both wheel sets came straight from CI:
Source parity verified — Each wheel was loaded into the same interpreter on the same runner and run through Results — geomean speed-up (new / old), 17 metrics per job
Overall geomean: +8.8%, consistent across both arches and every Python version. The gains are concentrated on encode paths — string-array encode ~2×, UTF-8 encode ~+50%, dict encode ~+23% — while decode is milder (~3–12%). A handful of metrics dip just under 1.0 (noise); no systematic regression. The pattern matches a separate local aarch64 run, so it's real codegen (newer gcc auto-vectorising the escape/copy loops), not measurement noise. TakeawayRe-adding |
|
Yeah, I think that's big enough a difference to warrant doing both. |
|
New benchmark, wheels from https://github.com/hugovk/ultrajson/actions/runs/27506564289, run in https://github.com/hugovk/test/actions/runs/27507091606. Claude summary: Benchmark: manylinux2014 (gcc 10) vs manylinux_2_28 (gcc 14)Geomean speed-up (new / old), 17 metrics per job
Overall geomean: +9.3%, every job between +6% and +12%. Gains concentrate on encode paths — string-array encode ~2× (per-benchmark max +215%), UTF-8 encode ~+50%, dict encode ~+23% — while decode is milder (~3–12%). A few metrics dip just under 1.0 (noise); no systematic regression. A local aarch64 run (Docker, 3.11) showed the same pattern, so it's real codegen (newer gcc auto-vectorising the escape/copy loops), not measurement noise. TakeawayRe-adding And the manylinux2014 wheels are similar in size to the others, around 55k each. |
Fixes #741.
Changes proposed in this pull request: