GIL なし Python 向けの PyPI ホイールは、ダウンロード上位の拡張パッケージ102件のうち74件が配布していた: 残り28件の中身(2026年10月)
Python 3.13 から、GIL(グローバルインタープリタロック)を無効にした「free-threaded ビルド」を使えるようになった。試すとき最初につまずくのは、自分の依存パッケージが対応しているかどうかだ。C 拡張を持つパッケージは、free-threaded 用に作り直したホイールが無いと、公式の HOWTO によれば GIL が再び有効になることがある。
この記事で確かめたのは、ダウンロード数の多い PyPI パッケージのうち、ビルド済みの拡張ホイールを持つものは、free-threaded 用ホイール(cp313t・cp314t)をどれだけ配布しているか、そうしたホイールが最初に出た月はいつかだ。numpy・pandas・cryptography・pillow の最新版に cp314t のホイールがあるのを先に見たことから立てた問いで、データを見てから作った(データ先行)。
答えは次のとおり。ダウンロード上位500件のうち、拡張ホイールを持つのは102件。そのうち、最新の安定版に cp313t または cp314t のホイールがあるのは 74件(72.5%) だった。残る28件は、過去の安定版にはあって最新版に無いもの(3件)、プレリリースにだけあるもの(3件)、どの版にも無いもの(22件)に分かれる。1〜100位では27件中25件が配布していて、101位以降の帯より高かった。ただし、ここで数えたのはホイールが配布されているかであり、動作やスレッドセーフであることの保証ではない。
調べる前に企画で記録した編集部の予想は、「拡張ホイールを持つ上位パッケージの過半はすでに配布しているが、abi3(安定 ABI)ホイールだけで配布しているものは free-threaded 用が無いまま残っているのではないか」だった。前半は支持された。後半は一部だけで、abi3 を主に配布する14件のうち8件は free-threaded 用を別に配布していた。未配布の28件のうち abi3 が中心なのは6件にとどまり、残りは別の理由で止まっている。
上位の一覧は、第三者の hugovk 氏が公開している「PyPI で最もダウンロードされた 15,000 パッケージ」のデータ(2026-10-01 更新、30日間のダウンロード数)の先頭500件を使った。各パッケージのホイールは PyPI の公開 JSON から2026-10-02 に取得した。
500件のうち、対象になるのは102件
free-threaded 用のホイールが問題になるのは、CPython の内部に依存するホイール(拡張を持つもの)だけだ。純 Python のホイール(py3-none-any)は、そのまま free-threaded ビルドにも入れられる。そこで、最新の安定版のホイール名で500件を分けた。
| 分類(最新の安定版のホイール名) | 件数 |
|---|---|
純 Python(py3-none-any のホイールだけ) |
392 |
拡張ホイールあり(cp3XX の python タグと、abi タグが cp3XX・cp3XXt・abi3 のもの) |
102 |
| CPython の ABI に依存しないプラットフォーム別ホイール(ruff・uv・playwright・pypdfium2・ty) | 5 |
| ホイールが無く sdist のみ(pyspark) | 1 |
上位60件だけを見ると純 Python が45件で、拡張は15件だった。500件に広げても拡張は約2割にとどまる。この記事の分母は500ではなく、拡張を持つ102件だ。
分け方で迷う点が2つあった。1つは、compiled なホイールと py3-none-any のホイールを両方配るパッケージ(protobuf・black・debugpy・cython・pendulum)で、拡張ホイールを1つでも持てば拡張に数えた。もう1つは、純 Python に数えたパッケージが、拡張を持つパッケージに依存している場合で、これは後の節で扱う。
74件が配布している。上位ほど高い
最新の安定版に free-threaded 用のホイールがある74件のうち、cp314t があるのが71件、cp313t があるのが10件(両方を持つのが7件、cp313t だけが3件)だった。cp313t だけの3件は lz4・pycryptodome・pycryptodomex だ。
順位の帯で分けると、1〜100位では拡張を持つ27件のうち25件が配布していた。配布していないのは protobuf(32位)と grpcio(89位)の2件だけだった。
| 順位 | 拡張ホイールを持つ件数 | 最新の安定版に cp313t / cp314t がある件数 |
|---|---|---|
| 1〜100位 | 27 | 25 |
| 101〜200位 | 21 | 17 |
| 201〜300位 | 17 | 9 |
| 301〜400位 | 20 | 13 |
| 401〜500位 | 17 | 10 |
| 計 | 102 | 74 |
101位以降の4つの帯は 53〜81% で、1〜100位の 93% より低い。ダウンロード数(30日)で重みを付けると、拡張102件の合計のうち約85%が、配布している74件のものだった。件数の割合(72.5%)より高く、配布がダウンロードの多いパッケージに偏っていることを示す。
いつ増えたか
最初の free-threaded 用ホイールの公開月(cp313t または cp314t。プレリリースを含む)を、拡張102件で数えた。80件が少なくとも1回は公開していて、その最初の月を四半期末までの累計にした。
四半期末までの累計は次のとおり。
| 四半期末 | cp313t の累計 | cp314t の累計 |
|---|---|---|
| 2024年9月 | 7 | 0 |
| 2024年12月 | 17 | 0 |
| 2025年6月 | 33 | 3 |
| 2025年9月 | 36 | 28 |
| 2025年12月 | 42 | 51 |
| 2026年9月 | 44 | 75 |
cp313t は、numpy が2024年8月に最初のホイールを出すなど、2024年8月から2025年5月まで毎月1〜5件ずつ初登場した。cp314t は2025年5月に初めて現れ、75件のうち44件が2025年7〜10月に初登場した。
Python 側の予定表では、3.13.0 の正式版が2024-10-07、3.14.0 の正式版が2025-10-07とされている(PEP 719・745)。free-threaded を公式サポートにする条件を定めた PEP 779 は、2025-06-16 に決定(Resolution)と記載されている。この表は時間順に並べただけで、予定表の日付と累計の対応だけでは因果関係を示せない。実際のリリース日は確かめていない。
ここから考えられること。cp313t の初公開が1年近くにわたって少しずつ出たのに対し、cp314t は3.14 の正式版の前後の数か月に集中していた。3.13 の free-threaded ビルドは PEP 779 の言う Phase I(実験的)で、3.14 で公式サポートになった(What’s New in Python 3.14)。この違いが配布の動きと関係している可能性はあるが、各プロジェクトがなぜその時期に対応したのかは、このデータからは分からない。公式の HOWTO は、cibuildwheel が 3.14 以降の free-threaded ビルドのホイール作成に対応していると書いているが、対応した時期は確かめていない。別の説明も成り立つので、一つに絞らない。
配布していない28件の中身
最新の安定版に cp313t・cp314t のホイールが無い28件は、3つに分かれた。
過去の安定版にはあったが、最新の安定版に無い(3件)。 google-crc32c(207位)は最後に載った安定版が 1.7.1(2025-03、cp313t)で、1.8.0 と最新の 1.9.0 には無い。backports-zstd(426位)は 1.3.0(2025-12、cp313t)が最後で、1.4.0 から最新の 1.7.0 までには無い。confluent-kafka(471位)は 2.13.0(2026-01、cp313t・cp314t)が最後で、2.13.2 以降の安定版には無い(プレリリースの 2.16.0rc3 には cp314t がある)。配布の有無は版ごとに変わるので、「対応した」という記録だけを見ていると最新版で外れることがある。消えた理由は、公式の資料では確かめていない。
abi3 が主で、プレリリースにだけある(3件)。 tokenizers(164位。1.0.0rc1・rc2 に cp314t)、tornado(262位。6.6a1 に cp314t・cp315t)、safetensors(325位。0.9.0rc0・rc1 に cp314t)。最新の安定版は abi3 のホイールだけで、free-threaded 用はプレリリースで初めて別に作られている。
どの版にも無い(22件)。 abi3 が中心の protobuf(32位)・litellm(283位)・polars-runtime-32(449位)と、abi3 ではない19件だ。19件は grpcio・psycopg2-binary・orjson・zstandard・grpcio-tools・psycopg-binary・black・watchdog・brotli・debugpy・cython・fastuuid・ruamel-yaml-clib・psycopg2・duckdb・pendulum・tree-sitter・thrift・ddtrace。1〜100位に入るのは protobuf と grpcio の2件で、101〜200位にも psycopg2-binary(138位)・orjson(153位)・zstandard(177位)が入っている。全28件の順位・ダウンロード数は付録に表で載せた。
「ホイールが無い」ことは、使えないことを意味しない。28件のうち5件(protobuf・black・debugpy・cython・pendulum)は py3-none-any のホイールも配布している。残る23件のうち22件は sdist(ソース)を配布しているので、ソースからビルドする道はある。ビルドできるか・動くかは確かめていない。psycopg-binary は最新の安定版に sdist が無い。
abi3 は、予想ほど「止まる」理由ではなかった
abi3 は、1つのホイールが複数の Python 版で使える形式(安定 ABI)だ。公式の HOWTO(拡張モジュール向け、3.14.8 版)は、「free-threaded ビルドは現在、Limited C API と stable ABI をサポートしない」と書き、通常版では1つの abi3 ホイールで足りるが、free-threaded 用には別のホイールを作る必要があると説明している。abi3 だけで配布しているパッケージは、free-threaded 用の配布が遅れるのではないか、というのが企画の予想だった。
最新の安定版で、abi3 のホイールがあり、版ごとのホイール(cp3XX-cp3XX)が無いパッケージは14件あった。その内訳は次のとおり。
- 最新の安定版に cp314t が別にある(8件): cryptography・watchfiles・psutil・wcwidth・hf-xet・pynacl・bcrypt・pymupdf(psutil と bcrypt は cp313t も)
- プレリリースにだけある(3件): tokenizers・tornado・safetensors
- どの版にも無い(3件): protobuf・litellm・polars-runtime-32
abi3 が中心の14件のうち11件は、free-threaded 用のホイールを別に作って配布している(最新の安定版に8件、プレリリースに3件)。予想した「未配布のまま残る」のは3件だった。未配布の28件のうち abi3 が中心なのは6件で、22件は abi3 ではない。abi3 が止まる要因になりうるのは公式資料のとおりだが、上位500件で見ると、未配布の大部分の説明にはならない。
公式資料にはもう1つ、これから変わる点がある。PEP 803(状態は Final、決定は 2026-03-30、対象は Python 3.15)は、free-threaded ビルドで使える安定 ABI として abi3t を定め、ホイールのタグを abi3.abi3t とした。最新の安定版に cp315 の abi3.abi3t ホイールがあるのは、cryptography(13個)・ast-serialize(18個)・hypothesis(18個)の3件だった。3.15.0 の正式版は PEP 790 の予定表では2026-10-01となっているが、実際にリリースされたかは確かめていない。
配布していても、同じ範囲とは限らない
free-threaded 用のホイールがあることと、通常版と同じプラットフォームに配られていることは別だ。最新の安定版で、同じ版の通常のホイール(cp314-cp314、cp313t なら cp313-cp313)と、free-threaded 用のホイールを比べた。abi3 が通常の配布のパッケージは同じ形で比べられないので、74件のうち比べられたのは61件。デスクトップ・サーバー系(Linux の manylinux・musllinux、macOS、Windows)に限って、free-threaded 用に無いプラットフォームがあったのは10件だった。
| パッケージ(順位) | 通常版にあって、free-threaded 用に無いプラットフォーム |
|---|---|
| onnxruntime(334位) | macOS arm64、Windows x64、Windows arm64(free-threaded 用は Linux の x86_64・aarch64 だけ。cp313t・cp314t とも) |
| ormsgpack(469位) | Linux の armv7l、musllinux、Windows arm64 |
| chardet(166位) | Windows x64 など |
| jiter(92位) | macOS x86_64 |
| caio(383位) | cp313t は macOS arm64 だけ(cp314t は通常版と同じ範囲) |
| rpds-py(49位)・greenlet(77位)・numba(409位)・llvmlite(410位)・zope-interface(420位) | Windows arm64 |
「cp314t がある」と数えても、Windows や macOS の自分の環境のホイールがあるとは限らない。たとえば onnxruntime の free-threaded 用は、最新の安定版では Linux のものに限られていた。この比較は、ホイール名のプラットフォームの系統を分けただけで、glibc のバージョンなどの細かい違いは見ていない。
純 Python と数えた中にも、依存で止まりうるものがある
純 Python と数えた392件には、拡張を持つパッケージに依存するものが多い。直接の依存(extra を除く)を調べると、free-threaded 用のホイールを配布している74件のいずれかに依存する純 Python が71件あった。一方、最新の安定版に free-threaded 用が無い10件のパッケージ(protobuf・grpcio・google-crc32c・orjson・tornado・safetensors・tokenizers・zstandard・debugpy・polars-runtime-32)に直接依存する純 Python が、21件あった。
| 依存先(未配布) | 直接依存する純 Python の件数 | 例(順位) |
|---|---|---|
| protobuf | 12 | googleapis-common-protos(64位)、google-api-core(101位)、proto-plus(113位)、google-cloud-aiplatform(288位) |
| grpcio | 6 | grpcio-status(85位)、opentelemetry-exporter-otlp-proto-grpc(255位) |
| tokenizers・safetensors | 1(transformers) | transformers(274位) |
| tornado・debugpy | 2・1 | jupyter-client(327位)、ipykernel(394位) |
| orjson・zstandard | 2・1 | langsmith(307位)、langgraph-sdk(461位) |
| google-crc32c | 2 | google-cloud-storage(190位) |
| polars-runtime-32 | 1(polars) | polars(406位) |
この数は、直接の依存だけで、環境マーカー(Python の版による条件など)は区別していない。間接の依存を含めればもっと増える。依存先に free-threaded 用のホイールが無くても、sdist からのビルドがありうるほか、protobuf のように py3-none-any のホイールも配布しているものがある。使えるかどうかは、この記事では確かめていない。
確かめていないこと
- 動作・スレッドセーフであること。 ホイールが配布されていることしか数えていない。free-threaded ビルドで import して GIL が再有効化されないか、スレッドから安全に使えるかは試していない。パッケージが宣言する分類子(
Free Threadingを含むもの)は、拡張102件のうち16件にあった。配布している74件のうち15件が宣言していて、残る59件は宣言が無い。また zstandard は分類子で1 - Unstableを宣言しているが、ホイールは配布していない。宣言の意味と、ホイールの有無の関係は確かめていない。 - 最新の安定版で判定している。 古い版・プレリリースでの配布は、最初の公開月と「消えた」「プレリリースのみ」の分類にだけ使った。プレリリースは版名の文字列(a・b・rc・dev など)で判定した。
- 上位一覧の性質。 hugovk 氏の公開データは、PyPI・Google BigQuery などに由来する。全インストーラーの30日分のダウンロード数で、自動化された取得(CI やミラー)を含むかどうかは確かめていない。順位は月ごとに変わり、先頭500件の中身は今後入れ替わる。ダウンロード数の算出方法は、一覧の作者の資料の範囲でしか確かめていない。
- 先行する似たページがある。 公式 HOWTO が追跡先として挙げている hugovk 氏の「Free-Threaded Wheels」は、同じ上位一覧から上位360件の拡張付きパッケージを色分けして示している(2026-10-02 に確認)。この記事は、500件への拡大、最初の公開月、abi3 の分け方、過去の版からの消失、プラットフォームの欠け、純 Python の依存を加えた。
- 500件より下は見ていない。 1〜100位は27件中25件、101位以降の帯は53〜81%と差がある。501位以降の傾向は分からない。
- abi3 の分類は最新の安定版のホイール名による。 abi3 とバージョン別のホイールを両方出すパッケージ(charset-normalizer・pyzmq など8件)は、abi3 が中心の14件に含めていない。
- ホイール名の例外。 判定できなかったホイールは0件だった。Python 3.15 用の cp315t ホイールは数えていない(最新の安定版に cp315t があるのは40件)。
付録
A. 調べ方
- 上位一覧(https://hugovk.dev/top-pypi-packages/top-pypi-packages.min.json。旧 URL の hugovk.github.io は移転)から、30日ダウンロード数の多い先頭500件の名前を取った。取得日は 2026-10-02(一覧の更新は 2026-10-01 12:40 UTC)。
- 500件それぞれの PyPI の JSON(
https://pypi.org/pypi/<名前>/json)を、間隔を空けて取得した(固定の User-Agent。失敗0件)。 - 最新の安定版(
info.version)のホイールを、ファイル名名前-版-(ビルド)-python タグ-abi タグ-プラットフォーム.whlで分けた。拡張ホイール = python タグがcpで始まり、abi タグがnoneでなく、プラットフォームがanyでないもの。free-threaded 用 = abi タグがcp313tまたはcp314t。yanked のファイルは除いた。 - 全リリースのファイルから、cp313t・cp314t の最初の公開月(upload_time の UTC)と、過去の安定版・プレリリースでの配布を調べた。
- 独立した数え直し(ファイル名の正規表現のみ)で、拡張102件・うち free-threaded 74件が一致することを確かめた。
B. 未配布の28件
| 順位 | パッケージ | 30日DL(百万) | 最新の安定版 | 分類 | 補足 |
|---|---|---|---|---|---|
| 32 | protobuf | 619 | 7.36.2 | abi3 が主。どの版にも無い | py3-none-any のホイールもある |
| 283 | litellm | 91 | 1.103.2 | abi3 が主。どの版にも無い | |
| 449 | polars-runtime-32 | 45 | 1.44.2 | abi3 が主。どの版にも無い | |
| 164 | tokenizers | 166 | 0.23.2 | abi3 が主。プレリリースにだけある | プレリリース 1.0.0rc1, 1.0.0rc2 |
| 262 | tornado | 101 | 6.5.10 | abi3 が主。プレリリースにだけある | プレリリース 6.6a1 |
| 325 | safetensors | 73 | 0.8.0 | abi3 が主。プレリリースにだけある | プレリリース 0.9.0rc0, 0.9.0rc1 |
| 207 | google-crc32c | 141 | 1.9.0 | 過去の安定版にはあった | 最後に載った安定版 1.7.1 |
| 426 | backports-zstd | 49 | 1.7.0 | 過去の安定版にはあった | 最後に載った安定版 1.3.0 |
| 471 | confluent-kafka | 42 | 2.15.1 | 過去の安定版にはあった | 最後に載った安定版 2.13.0 |
| 89 | grpcio | 320 | 1.84.0 | 一度も無い | |
| 138 | psycopg2-binary | 209 | 2.9.13 | 一度も無い | |
| 153 | orjson | 180 | 3.12.0 | 一度も無い | |
| 177 | zstandard | 157 | 0.25.0 | 一度も無い | |
| 211 | grpcio-tools | 138 | 1.84.0 | 一度も無い | |
| 231 | psycopg-binary | 126 | 3.3.6 | 一度も無い | sdist なし |
| 248 | black | 115 | 26.5.1 | 一度も無い | py3-none-any のホイールもある |
| 294 | watchdog | 87 | 6.0.0 | 一度も無い | |
| 298 | brotli | 85 | 1.2.0 | 一度も無い | |
| 305 | debugpy | 80 | 1.8.22 | 一度も無い | py3-none-any のホイールもある |
| 306 | cython | 80 | 3.3.0 | 一度も無い | py3-none-any のホイールもある |
| 344 | fastuuid | 67 | 0.14.0 | 一度も無い | |
| 358 | ruamel-yaml-clib | 65 | 0.2.15 | 一度も無い | |
| 362 | psycopg2 | 63 | 2.9.13 | 一度も無い | |
| 397 | duckdb | 55 | 1.5.6 | 一度も無い | |
| 403 | pendulum | 54 | 3.2.0 | 一度も無い | py3-none-any のホイールもある |
| 427 | tree-sitter | 49 | 0.26.0 | 一度も無い | |
| 455 | thrift | 44 | 0.25.0 | 一度も無い | |
| 494 | ddtrace | 40 | 4.15.4 | 一度も無い |
C. abi3 が中心の14件
| 順位 | パッケージ | 最新の安定版にある free-threaded 用 | 補足 |
|---|---|---|---|
| 9 | cryptography | cp314t | cp315 の abi3.abi3t ホイール 13 個 |
| 32 | protobuf | なし | |
| 94 | watchfiles | cp314t | |
| 103 | psutil | cp313t, cp314t | |
| 118 | wcwidth | cp314t | |
| 148 | hf-xet | cp314t | プレリリース 1.6.0rc0, 1.6.1a0, 1.7.0.dev1 |
| 164 | tokenizers | なし(プレリリースに cp314t) | |
| 165 | pynacl | cp314t | |
| 182 | bcrypt | cp313t, cp314t | |
| 262 | tornado | なし(プレリリースに cp314t) | |
| 283 | litellm | なし | |
| 296 | pymupdf | cp314t | |
| 325 | safetensors | なし(プレリリースに cp314t) | |
| 449 | polars-runtime-32 | なし |
D. 1〜100位の拡張パッケージの、最初の公開月
UTC、プレリリースを含む。「-」はその ABI のホイールがまだ無い。101位以降は保存した集計(classified-top500.json)にある。
| 順位 | パッケージ | cp313t の最初の公開月 | cp314t の最初の公開月 |
|---|---|---|---|
| 8 | charset-normalizer | - | 2026-03 |
| 9 | cryptography | - | 2025-09 |
| 11 | cffi | - | 2025-07 |
| 13 | pyyaml | - | 2025-09 |
| 21 | pydantic-core | 2025-02 | 2025-06 |
| 23 | numpy | 2024-08 | 2025-07 |
| 34 | markupsafe | 2024-10 | 2025-09 |
| 40 | pandas | 2024-09 | 2025-09 |
| 47 | multidict | 2025-03 | 2025-10 |
| 49 | rpds-py | 2024-12 | 2025-07 |
| 50 | yarl | 2025-04 | 2025-10 |
| 51 | aiohttp | - | 2025-10 |
| 55 | propcache | 2025-02 | 2025-10 |
| 59 | pillow | 2024-10 | 2025-07 |
| 61 | frozenlist | 2025-04 | 2025-10 |
| 68 | websockets | - | 2026-01 |
| 70 | wrapt | 2024-10 | 2025-08 |
| 77 | greenlet | 2024-09 | 2025-12 |
| 86 | pyarrow | 2024-10 | 2025-10 |
| 87 | sqlalchemy | 2025-12 | 2025-12 |
| 91 | lxml | - | 2025-09 |
| 92 | jiter | 2024-11 | 2025-05 |
| 93 | regex | 2025-09 | 2025-09 |
| 94 | watchfiles | 2025-06 | 2025-06 |
| 97 | scipy | 2024-12 | 2025-07 |
E. 保存したデータ
生データ・集計は data/cache/pypi-free-threaded/ に保存した(上位一覧、500件の JSON、分類、集計、グラフ用データ、公式資料の HTML)。分類のスクリプトは scripts/pypi_ft_classify.py、取得は scripts/pypi_ft_fetch.py、依存は scripts/pypi_ft_deps.py。
出典
- 上位一覧(第三者の公開データ): https://hugovk.dev/top-pypi-packages/top-pypi-packages.min.json 、説明 https://hugovk.dev/top-pypi-packages/ (2026-10-02 取得、一覧の更新は 2026-10-01)
- PyPI の公開 JSON(500件): https://pypi.org/pypi/<名前>/json (2026-10-02 取得)
- Python 公式: Python support for free threading(HOWTO) https://docs.python.org/3/howto/free-threading-python.html 、C API Extension Support for Free Threading https://docs.python.org/3/howto/free-threading-extensions.html 、What’s New in Python 3.14 https://docs.python.org/3/whatsnew/3.14.html (いずれも 2026-10-02 取得)
- PEP 779(free-threaded の公式サポートの条件) https://peps.python.org/pep-0779/ 、PEP 803(abi3t) https://peps.python.org/pep-0803/ 、PEP 719・745・790(リリース予定) https://peps.python.org/pep-0719/ ・ https://peps.python.org/pep-0745/ ・ https://peps.python.org/pep-0790/ (2026-10-02 取得)
- Free-Threaded Wheels(第三者。先行ページの確認) https://hugovk.dev/free-threaded-wheels/ (2026-10-02 取得)