Evaluate abi3 wheels: one wheel per platform and day-one support for new Python releases
まだ誰も着手していません。
評価
- 難易度
- 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分
- マージ済み PR(30日)
- 11
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
hardbyte/python-common-expression-language のほかの issue
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 45/100
hardbyte/python-common-expression-language の issue をすべて見る
似ている issue
-
bug confirmed issue
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
open-webui/open-webui#30750 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
good first issue
難易度 1/5 1時間未満 初心者へのやさしさ 90/100