Evaluate abi3 wheels: one wheel per platform and day-one support for new Python releases
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Domaine
- build-system, performance
Piste de recherche
Commencez par pyproject.toml et la configuration de maturin-action, puis construisez localement une abi3 wheel. Exécutez examples/performance/compile_execute_benchmark.py, en vous concentrant sur les cas size(items) et timestamp, puis lancez la suite complète de tests. La tâche est terminée lorsque vous publiez les chiffres de comparaison et décidez si le compromis de performances de datetime justifie le changement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Python
- Étoiles
- 43
- Forks
- 4
- Merge moyen
- 12 h 37 min
- PR mergées (30 j)
- 11
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de hardbyte/python-common-expression-language
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
Toutes les issues de hardbyte/python-common-expression-language
Issues similaires
-
bug confirmed issue
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
open-webui/open-webui#30750 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
good first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100