Evaluate abi3 wheels: one wheel per platform and day-one support for new Python releases
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 48/100
- Issue 類型
- 功能
- 描述清晰度
- 基本清楚
- 活躍度
- 活躍
研究方向
先從 pyproject.toml 和 maturin-action 設定開始,然後在本機建置 abi3 wheel。執行 examples/performance/compile_execute_benchmark.py,重點關注 size(items) 和 timestamp 情況,接著執行完整的測試套件。完成的標準是發布比較數據,並決定 datetime 的效能取捨是否支持切換。
由索引模型根據 Issue 內容生成。
描述
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.
- 主要語言
- Python
- 星號
- 43
- 分支
- 4
- 平均合併
- 12 小時 37 分鐘
- 30 天內合併 PR
- 11
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
hardbyte/python-common-expression-language 的其他 Issue
-
enhancement
難度 2/5 1-3 小時 新手友好度 78/100
hardbyte/python-common-expression-language#47 ·
維護者通常 1 天內回覆
-
enhancement
難度 4/5 3-5 天 新手友好度 45/100
hardbyte/python-common-expression-language#57 ·
維護者通常 1 天內回覆
-
難度 5/5 一週以上 新手友好度 35/100
hardbyte/python-common-expression-language#50 ·
維護者通常 1 天內回覆
-
enhancement
難度 4/5 3-5 天 新手友好度 48/100
hardbyte/python-common-expression-language#49 ·
維護者通常 1 天內回覆
-
enhancement
難度 5/5 一週以上 新手友好度 45/100
hardbyte/python-common-expression-language#48 ·
維護者通常 1 天內回覆
查看 hardbyte/python-common-expression-language 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 82/100
aicell-lab/bioengine#232 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 74/100
modelscope/evalscope#1836 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 72/100
-
bug
難度 1/5 1 小時以內 新手友好度 78/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 72/100
jbaruch/speaker-toolkit#480 ·
維護者通常 1 天內回覆