HN🔥 246
💬 87

Python 3.15のJIT開発が復活!爆速化への期待が再び高まる

guidoiaquinti
約10時間前

ディスカッション (11件)

0
guidoiaquintiOP🔥 246
約10時間前

Python 3.15で導入が予定されているJIT(Just-In-Time)コンパイラの開発が、再び順調な軌道に乗ったようです。一時は進捗が心配されていましたが、これで次世代の高速なPython実現に向けて大きく前進しました。パフォーマンス向上を待ち望んでいるエンジニアにとって、嬉しいニュースですね。

1
oystersareyum
約8時間前

まだ正式なfree-threadingサポートはないけど、3.15か3.16あたりを目指してるみたいだね。JITの方も順調に戻ってきた。最近、free-threadingの実装と、それを本当に有効にするためにエコシステム全体をどう修正していくかについてのインタビューを読んだよ。3.16か3.17にはfree-threadedビルド一本にしたいって話だったけど、それがJITにも当てはまるのか、あるいはJITとインタプリタがどう絡むのか気になるところだね。

2
ekjhgkejhgk
約8時間前

PyPyにはもうJITコンパイラがあるよね?なんでそれを使わないんだろう?

3
adrian17
約8時間前

JIT周りの進捗を追うために時々PRやIssueトラッカーを覗いてるんだけど、ハイレベルな議論がどこでされてるのかさっぱり分からないんだよね。IssueもPRもいきなり細かい実装の話に飛び込んじゃうし。トレースの投影(trace projection)と記録(recording)がどう機能して、どう違うのか、全体像を説明した入門編や例ってどこかにないかな?ググってもCPythonのIssueトラッカーが一番上に来るし、リポジトリのjit.mdは中身がスカスカで全然更新されてないし…。あと、参照カウンタの除去(refcount elimination)もよく分かってない。コード生成の違いは見たことあるけど、ビルド時に生成されるなら、各オペコードがincref/decrefを除去したものとそうでないものの、2つ(かそれ以上)のステンシルに分かれるってこと?オペコードの種類も特化バリアントも多いけど、今は一体どれだけの数のステンシルがあるんだろう?

4
ecshafer
約7時間前

Pythonのコードベースって何がそんなにダメで、RubyやPHP、JSみたいに実装が進まないんだろう?他の言語はもっと短期間でJITを導入したように見えるのに。PythonのJITなんて、もう20年くらいずっと望まれてることだよね。

5
owaislone
約6時間前

いやあ、Python 2から3への移行は本当に大変だったよね。5年以上かかったのに、結局は表面的な構文の変更がメインだったし。あの時、ABIの互換性をあえて壊してでも、内部的な仕組みを整えちゃうべきだったんだよ。低レイヤーの言語と連携するためのもっと洗練された新しいAPIを用意しておけば、今頃Pythonの内部構造をもっと自由に、何も壊さずに変えられたはずなのにね。

6
vanderZwan
約5時間前

「しかし、私は勘違いをして、さらに極端なバージョンを思いつきました。通常の命令をトレースするのではなく、トレース専用の命令を1つだけ用意し、2番目のテーブルにあるすべての命令をそこへ向けたのです。ここがややこしいのは分かっていますが、いつかちゃんとした説明を書きたいと思っています。結果的に、これは本当に素晴らしい選択でした。最初のデュアルテーブル方式では、インタプリタのサイズが2倍になり、コンパイル後のコードが肥大化して速度も低下してしまいましたが、この方法ならインタプリタのサイズ増分は命令1つ分で済み、ベースのインタプリタも超高速なまま維持できたのです。私は愛着を込めてこの仕組みを『デュアルディスパッチ』と呼んでいます。」…いつか本当に分かりやすく解説してほしいな。これだけでもかなり面白そう。

7
thunky
約5時間前

ずっとPythonにこういうのを求めてたけど、今は人間じゃなくてマシンがコードを書く時代だから、Pythonみたいな言語の必要性は減っていく気がするな。Pythonは人間向けであって、マシン向けじゃないし。マシンに泥臭い仕事をさせるなら、もっと軽量で速くて、厳密に検証されたものを出力してほしいよ。

8
ghm2199
約5時間前

素晴らしい成果をありがとう!初心者的な質問なんだけど、これでまた資金援助が復活したりしないのかな?それとも(ボランティア主導のままで)今のやり方の方がいいんだろうか?ボランティアが立ち上がって、タスクをバリバリこなしてる状態までプロジェクトを持っていくのって、すごいことだよね。PythonのJITなんて、僕を含めほとんどのアプリ開発者は何も知らない領域だし、それがどれだけ大変なことだったか物語ってるよ。

9
rslashuser
約5時間前

JITの開発者が、有望なJIT機能を阻害してるPythonの機能について言及してくれないかなって思ってる。Ken Jinのブログ記事でも、__del__が参照カウントの最適化を難しくしてるって話があったし。PythonはTypescriptとかと比べて、柔軟性やC APIのせいで最適化が難しいってよく言われるよね。もし「厄介な機能リスト」があれば、プログラマはそれを避けるようにして、JITがその機能を使われていないと判断できた時に最適化を有効にする、みたいな道が開けるかもしれない。まだただのアイデアだけど、まずはJITの中の人たちがどの機能を厄介だと思ってるのか聞いてみたいね。

10
nilslindemann
約4時間前

一方で、PyPIにはいまだに「pip install <package>」って書いてあって、インストーラーでPythonを入れた初心者を混乱させてる。こういう当たり前の部分が壊れたままなのに、裏では難解な作業に没頭してるんだよね。2025年7月以降、PythonはTIOBEインデックスで5.73%も落ちてるし。