Python 3.12 の新しい安定バージョンが到着し、以下がその新機能です

Pythonロゴ

Python は高級プログラミング言語です。

XNUMX年の開発の後、 安定版のリリースが発表されました そして、プログラミング言語のアルファテスト段階の始まりでもあります。 Pythonの3.12 および Python 3.13 (それぞれ)。 Python 3.12 のこの新しいブランチは XNUMX 年半サポートされ、その後さらに XNUMX 年半の間、脆弱性を排除するための修正が生成される予定であると述べられています。

提供される新しいバージョンの Python 3.12 には、以下の点が改善されています。 f-string 解析の柔軟性。 この改善により、 多くの制限は無視できますたとえば、複数行の式、コメント、バックスラッシュ、Unicode エスケープ シーケンスなど、Python で任意の有効な式を含めることができるようになりました。 さらに、内部文字列で同じ引用符を再利用できるようになりました。つまり、二重引用符を内部で再利用できるようになりました。 一重引用符に変更する必要はありません。

たとえば、次のとおりです。

f"""{f'''{f'{f"{1+1}"}'}'''}"""

任意にネストできるようになりました。

f"{f"{f"{f"{f"{f"{1+1}"}"}"}"}"}"

目立つもうXNUMXつの変更点は 分離されたサブインタープリターと個別のグローバル ロックのサポートこれは、プロセス内の異なるインタープリターに対して、CPython ではプロセス内で複数のインタープリターを同時に実行できるため、マルチコア システムでのリソース使用の効率を高めることを目的としています。 現状では、この機能は現在 C-API 経由でのみ利用可能です (Python API サポートは次のメジャー ブランチで登場する予定です)。

これに加えて、次のことも強調されています。エラーメッセージの有益な内容が増加しました また、例外の範囲が拡大され、タイプミスを排除するための推奨事項が提供されています。 たとえば、忘れられた標準ライブラリ モジュールをインポートするための提案や、「self」という接頭辞を付けるための提案が表示されるようになりました。

Python コードでバッファー プロトコルを使用する機能が追加されました。 「__buffer__()」メソッドを提供するクラスを、メモリ内のバイナリ データを直接操作する型として使用できるようになりました。

モジュール sys.monitoring はデバッグとプロファイリングのために提案されています。 これにより、呼び出し、関数の戻り、コードの任意の行の実行、例外や遷移などの CPython のイベントを最小限のオーバーヘッドで監視できます。

インタプリタは、Linux カーネル パフォーマンス サブシステムのサポートを実装します。これにより、パフォーマンス ユーティリティを使用したプロファイリング時に Python 関数名を決定できるようになります (以前は、トレースでは C 関数名のみが決定されていました)。

パフォーマンスの向上については、次のように述べられています。 最適化が続けられ、 どれで 合計で 5% と推定されるパフォーマンスの向上が得られました。、それも追加されました BOLT バイナリ オプティマイザーの実験的サポート ビルド プロセスに影響を与え、パフォーマンスが 1 ~ 5% 向上し、asyncio パッケージのパフォーマンスも大幅に向上しました (一部のテストでは 75% の高速化が示されています)。

リスト内包表記のインライン拡張が実装され、リスト内包表記の操作が最大 11 倍高速化されました (リスト内包表記を積極的に使用するコードの場合、テストでは全体的なパフォーマンスが XNUMX% 向上することが示されました)。

セキュリティを向上させるために、 の組み込み実装 hashlib の SHA1、SHA3、SHA2-384、SHA2-512、および MD5 アルゴリズムが置き換えられました。 HACL* プロジェクトの正式に検証されたオプションを使用します (組み込み実装は、OpenSSL が使用できない場合にのみ使用されます)。

その他の変更 目立つ:

  • このモジュールでは Windows のサポートが拡張されました。
  • Python はスタック オーバーフロー保護を実装しています。
    asyncio.Task クラスの作成が高速化されました。
  • Unicode オブジェクトのサイズは 8 ~ 16 バイト削減されました。
  • 正規表現 re.sub()、re.subn()、および re.Pattern を使用した操作が高速化されました。
  • 一部のプロトコルの isinstance() チェックの実行が 2 ~ 20 倍高速化されました。
  • tokenize.tokenize() 関数と tokenize.generate_tokens() 関数が大幅に (一部のテストでは最大 64%) 高速化されました。
  • 属性のロードと super() メソッドの呼び出しが高速化されました。
  • 新しい、よりコンパクトな型アノテーション構文がジェネリック クラスと関数に対して提案されました。
  • Web ブラウザ モジュールは、Grail、Mosaic、Netscape、Galeon、Skipstone、Iceape、Firebird、Firefox バージョン 36 までを含む古いブラウザをサポートしなくなりました。
  • 将来の最適化に備えて、整数の内部表現が変更されました。

最後になりましたが、前述したように、Python 3.13 のアルファ テストが開始され、コンパイル モードが登場しました。 グローバルインタープリターロックのないCPython (GIL、グローバル インタプリタ ロック)。

ブランチ Python 3.13 のアルファ版は XNUMX か月間提供されます。 新しい開発スケジュールに従って新機能が追加され、バグが修正される間に、新しいブランチの作業は前のブランチのリリースの XNUMX か月前に開始され、次のバージョンがテスト段階のアルファに達するまでに開始されます。

その後、ベータ版は XNUMX か月間テストされ、その間は新機能の追加は禁止され、バグの修正に全力が注がれます。 リリース前の最後の XNUMX か月間、ブランチはリリース候補段階に入り、最終的な安定化が行われます。

最後にはい あなたはそれについてもっと知りたいです、詳細はで確認できます 次のリンク。