Evaluate abi3 wheels: one wheel per platform and day-one support for new Python releases
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Bereich
- build-system, performance
Rechercherichtung
Beginne mit pyproject.toml und der maturin-action-Konfiguration und erstelle dann lokal ein abi3 wheel. Führe examples/performance/compile_execute_benchmark.py aus, mit Schwerpunkt auf den Fällen size(items) und timestamp, und anschließend die vollständige Testsuite. Abgeschlossen ist die Aufgabe, wenn du die Vergleichszahlen veröffentlichst und entscheidest, ob der datetime-Performance-Kompromiss den Wechsel unterstützt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Context
CI builds one wheel per (platform × Python version): currently 4 CPython versions across 10 platform targets, growing by 10 wheels every October. Users on a Python that shipped after our last release fall back to the sdist and need a Rust toolchain.
Building against the stable ABI (pyo3/abi3-py311) gives one wheel per platform that works on every CPython ≥ 3.11, including ones released after us.
Trade-offs to measure before switching
- Performance. Under abi3, PyO3 loses some fast paths. The one most likely to matter here is datetime: the
chronoconversion used fortimestamp/durationvalues goes through the C datetime API on regular builds but through Python-level attribute access under the limited API.size(items)on a 1000-element list and the timestamp cases inexamples/performance/compile_execute_benchmark.pyare the numbers to compare. If abi3 costs more than ~10% on timestamp-heavy workloads, keep per-version wheels. - Free-threading. abi3 wheels cannot target the free-threaded build, so if we want
cp314twheels (see the GIL issue) we would ship abi3 for the default build plus explicitcp314twheels. - Reproducibility. The
--find-interpreterflag inmaturin-actionbecomes unnecessary;pyproject.tomlgains[tool.maturin] features = ["pyo3/extension-module", "pyo3/abi3-py311"].
Suggested approach
Build an abi3 wheel locally, run the benchmark and the full test suite against it, and post the numbers here. Decide based on the datetime cases.
- Vorherrschende Sprache
- Python
- Sterne
- 43
- Forks
- 4
- Ø Merge
- 12 Std. 37 Min.
- Gemergte PRs (30 T.)
- 11
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus hardbyte/python-common-expression-language
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 45/100
Alle Issues in hardbyte/python-common-expression-language
Ähnliche Issues
-
area: harness bug status: needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Human-Agent-Society/reef#625 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 80/100
learningequality/kolibri#15351 · 2 Kommentare ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Name consistency Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
eellak/triplestore#65 · 1 Kommentar ·