HN 日本語サマリー

← 一覧へ戻る
プログラミング

PyPy v8.0.0 リリース

PyPy v8.0.0 Release (pypy.org)

18 pointsby lumpa1 コメント

要約

Pythonの代替実装であるPyPyが、バージョン8.0.0をリリースしました。このバージョンでは、Python 2.7、Python 3.11、そしてPython 3.12のベータ版がサポートされます。特に、Python 3.12のサポートはCPython 3.12以降のlimited ABI wheelsとの互換性向上を目指しており、Rpythonコード生成の改善やglibc2.28への対応も行われています。

全文翻訳

PyPy v8.0.0:Python 2.7、3.11、および3.12ベータ版をリリース 2026-09-19 PyPyチームは、2026年5月26日の前回のリリースに続き、PyPyバージョン8.0.0をリリースできることを誇りに思います。これはメジャーバージョンアップであり、8.0.0への更新となりました。これはPython 3.12の最初のリリースであり、まだいくつかのバグが含まれている可能性があるため、「ベータ」品質と呼んでいます。なぜ8.0.0への移行か glibc2.28 AlmaLinux 8およびglibc 2.28に基づいたmanylinux_2_28イメージを使用するように、Linuxビルドボット(linux64、linux32、aarch64)を更新しました。これらは以前使用されていたgcc5の代わりにgcc14を使用します。そのため、コンパイルされたtarballは少なくともglibc2.28を必要としますが、これは現在普遍的にサポートされているはずです(Ubuntu 24.04はglibc2.39を使用)。混乱を避けるため、メジャーバージョンを上げるのが賢明だと考えました。cp12-abi3サポート PyPyのPython 3.12サポートには、CレイヤーPyObjectの新しいモデルが付属しています。CオブジェクトをRPythonの内部オブジェクトにリンクするために、オブジェクトには追加フィールドob_pypy_linkがあり、これはrawrefcount-and-the-gcで詳細に説明されています。以前のバージョンでは、このフィールドはCPythonのPyObject構造体と異なる方法で表示されていました。v8.0.0からは、C拡張モジュールに渡すポインタの前にプレフィックスを付けて、PyPy専用の拡張機能を「隠し」ます。この作業の目標は、PyPyがCPython 3.12以降用に生成されたcp312-abi3 wheels(limited ABIを使用)を利用できるようにすることです。必要な要素はすべて整いました:PyObjectなどの構造体定義を含むPyPyのCヘッダーは、Py_LIMITED_API=0x030C0000を定義した場合、CPythonのCヘッダーと互換性があります。PyPyは、limited APIからエクスポートされる関数名をマングルしなくなりました。PyPy3.11以前では、PyTuple_Newのような関数はPyPyTupleNewとしてエクスポートされていました。まだ不足しているのは、importメカニズムがabi3.so共有オブジェクトをPyPyで有効なものとして認識するように教える必要があり、より広範なエコシステム(pip、uv)もcp312-abi3 wheelsをインストール可能な候補として受け入れる必要があります。はい、これは大きな一歩です。私たちはCythonとPyO3と協力して、すべてが「うまくいく」ようにしています。これにより、パッケージがPyPyをサポートしやすくなることを願っています。RPythonコード生成における新機能 PyPyはRPythonで書かれており、VMのビルドプロセスの一部としてRPythonをCに変換するコード生成機能を持っています。ベースインタープリタの速度向上を試みるために、コード生成にいくつかの改善を加えました。速度向上はそれほど顕著ではありませんでしたが、いくつかの進歩を遂げました:Computed gotosを使用し、コードをより積極的にインライン化しました。これにより、ソースコードはよりコンパクトになりますが、期待したほどパフォーマンスは向上しませんでした。ソースコードには、ソースコードのブロックを生成したRPythonコードにマッピングするコメントが含まれています。これは何が起こっているのかを正確に把握するのに非常に役立ち、さらなる改善を可能にするかもしれません。HPyのドロップ内部HPyバックエンドをPyPyから削除しました。HPyプロジェクトのハンドルをポインタの代わりに使うという理解は良いプロトタイプでしたが、プロジェクトは新しい標準になるほどの支持を集めませんでした。コードはまだPyPyコードベースに残っており、ビルドオプションで有効にすることができます。ヘッダーとエクスポートされた関数を比較するツールの復活CPythonのヘッダーファイルと比較するために、clangベースのpyhdrdumpを復活させました。その仕組みと使用方法については、READMEを参照してください。インタープリタこのリリースには3つの異なるインタープリタが含まれています:PyPy2.7:CPython 2.7.18+(+はバックポートされたセキュリティアップデート用)の標準ライブラリを含む、Python 2.7の構文と機能をサポートします。PyPy3.11:CPython 3.11.16の標準ライブラリを含む、Python 3.11の構文と機能をサポートします。セキュリティ問題がない限り、これが3.11をサポートする最後のリリースとなります。PyPy3.12:CPython 3.12.14の標準ライブラリを含む、Python 3.12の構文と機能をサポートします。これらのインタープリタは、ほぼ同じコードベースに基づいているため、トリプルリリースとなっています。更新を推奨します。リリースへのダウンロードリンクは以下のURLで見つけることができます:https://pypy.org/download.html PyPyプロジェクトへの継続的な支援に感謝いたします。もしPyPyがあなたのニーズに十分でない場合は、直接コンサルティングサービスを提供しています。PyPyが役立っている場合は、ぜひお知らせください。pull requestを介してブログへの投稿を歓迎します。また、貢献者にも感謝し、新しい参加者を歓迎します。PyPyには多くのレイヤーがあり、バグ修正、PyPyおよびRPythonのドキュメント改善、またはRPythonのJITをさらに改善するための一般的なヘルプなど、あらゆる面で支援が必要です。C拡張機能を使用するPythonライブラリのメンテナの方は、PyPyでパフォーマンスを発揮するライブラリのCFFIバージョンを作成することを検討してください。それが難しい場合でも、PyPyはまもなくlimited ABI wheelsのcp312-abi3タグをサポートする予定です。いずれにしても、cibuildwheelはPyPy用のwheelsのビルドをサポートしています。PyPyとは?PyPyはPythonインタープリタであり、CPythonのドロップイン代替です。統合されたトレーシングJITコンパイラにより、高速です(PyPyとCPythonのパフォーマンス比較)。他の動的言語の開発者にも、RPythonが彼らに何ができるかを見ていただくことを歓迎します。以下のプラットフォーム向けのバイナリビルドを提供しています:ほとんどの一般的なオペレーティングシステム(Linux 32/64ビット、Mac OS 64ビット、Windows 64ビット)のx86マシン。Linux(aarch64)およびmacOS(macos_arm64)を実行する64ビットARMマシン。PyPyはWindows 32ビット、Linux PPC64ビッグエンディアンおよびリトルエンディアン、Linux ARM 32ビット、RISC-V RV64IMAFD Linux、s390x Linuxをサポートしていますが、バイナリはリリースしていません。これらのプラットフォーム向けのバイナリリリースをスポンサーしたい場合は、お問い合わせください。ダウンストリームパッカーは、debian、Fedora、conda、OpenBSD、FreeBSD、Gentooなどのバイナリビルドを提供しています。その他の新機能は?8.0.0リリースに関する詳細については、完全なチェンジログを参照してください。ぜひ更新して、PyPyをさらに改善するお手伝いを続けてください。Cheers, The PyPy Team コメント PyPyブログ投稿 ソースリポジトリへのPRを介してゲスト投稿を作成する 最近の投稿 PyPy v8.0.0 リリース LinuxビルドをGLIBC==2.28に移行 PyPyの新しいベンチマークランナー PyPy v7.3.23 リリース PyPy v7.3.22 リリース Claudeを使用してPyPy3.11のテスト失敗を安全に修正 PyPy v7.3.21 リリース Toy Optimizerにおけるロードおよびストアフォワーディング PyPy v7.3.20 リリース RPython GCはどれだけ速くアロケートできるか? アーカイブ 2007 (19) 2008 (62) 2009 (38) 2010 (44) 2011 (43) 2012 (44) 2013 (46) 2014 (22) 2015 (20) 2016 (20) 2017 (13) 2018 (12) 2019 (12) 2020 (9) 2021 (10) 2022 (13) 2023 (6) 2024 (13) 2025 (9) 2026 (7) タグ arm (2) AI (1) benchmarking (1) benchmarks (1) casestudy (3) cli (1) compiler (1) conda-forge (1) cpyext (4) CPython (3) ep2008 (1) extension modules (3) gc (3) guestpost (3) GraalPython (1) hpy (1) Heptapod (1) infrastructure (1) jit (23) jython (1) kcachegrind (1) meta (1) numpy (24) parser (1) performance (3) profiling (7) pypy (6) pypy3 (16) PyQt4 (1) release (70) releasecffi (3) releaserevdb (1) releasestm (1) revdb (1) roadmap (2) rpython (1) RPyC (1) speed (6) sponsors (7) sprint (3) sprints (1) stm (14) sun (1) Smalltalk (1) Squeak (1) testing (1) toy-optimizer (6) unicode (1) valgrind (1) vmprof (3) z3 (5)