ツール公開 データ取得日

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回は公開していて、その最初の月を四半期末までの累計にした。

拡張ホイールを持つ上位102パッケージのうち、cp313t と cp314t の最初のホイールを公開したパッケージの累計。cp313t は2024年9月末の7から2026年9月末の44まで緩やかに増えた。cp314t は2025年6月末の3から9月末の28、12月末の51、2026年9月末の75へ増えた。
単位: パッケージ数(累計)。対象: ダウンロード上位500件のうち拡張ホイールを持つ102件。各パッケージで、cp313t または cp314t の最初のホイールの公開月(UTC、プレリリースを含む)が、その四半期末(9月・12月・3月・6月)までのもの。出典: PyPI の JSON(2026-10-02 取得)を自分で集計。上位一覧は hugovk の公開データ(2026-10-01 更新)

四半期末までの累計は次のとおり。

四半期末 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. 調べ方

  1. 上位一覧(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)。
  2. 500件それぞれの PyPI の JSON(https://pypi.org/pypi/<名前>/json)を、間隔を空けて取得した(固定の User-Agent。失敗0件)。
  3. 最新の安定版(info.version)のホイールを、ファイル名 名前-版-(ビルド)-python タグ-abi タグ-プラットフォーム.whl で分けた。拡張ホイール = python タグが cp で始まり、abi タグが none でなく、プラットフォームが any でないもの。free-threaded 用 = abi タグが cp313t または cp314t。yanked のファイルは除いた。
  4. 全リリースのファイルから、cp313t・cp314t の最初の公開月(upload_time の UTC)と、過去の安定版・プレリリースでの配布を調べた。
  5. 独立した数え直し(ファイル名の正規表現のみ)で、拡張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。

出典