ニュース

「Python 3.9.3」に意図せぬバイナリ非互換が混入、「Python 3.9.4」が緊急リリース

セキュリティ関連の修正もあり。「Python 3.8」は来月が最後のメンテナンスリリース

「Python 3.9.4」が公開

 「Python 3.9.4」が、4月4日に公開された。2日前に「Python 3.9.3」と「Python 3.8.9」がリリースされたばかりだが、意図しないABI非互換性が混入してしまったとしてリコールされた(「Python 3.8.9」に問題はなし)。

 「Python 3.9.3」では不具合を修正するためにPyThreadState構造体へ変更を加える必要があったが、その際に32bitシステム上のメモリレイアウトが変わってしまったという。そのため、バイナリの互換性が失われており、一部のライブラリが再コンパイルしないと動作しない可能性がある。「Python 3.9.3」は破棄して、「Python 3.9.4」へのアップデートをお勧めする。

 なお、「Python 3.9.4」および「Python 3.8.9」はセキュリティ問題への対処が含まれているので注意。

  • bpo-43631:「OpenSSL」で発見された2件の脆弱性に対処。深刻度“High”
  • bpo-42988(CVE-2021-3426):ディレクトリトラバーサル脆弱性の脆弱性により、ディスク上の任意のファイルを読み取られる恐れがある
  • bpo-43285:ftplibのセキュリティを強化。デフォルトでPASVコマンドの応答に含まれるIPアドレスの値を信頼しないように(元の動作に戻すオプションあり)
  • bpo-43439:gc.get_objects()、gc.get_referrers()、gc.get_referents()に監査フックを追加

 「Python 3.9」の次のメンテナンスリリースは、5月3日に行われる予定(v3.9.5)。以後は原則として隔月でリリースされる。一方、「Python 3.8」のメンテナンスは5月3日が最後になる見込み。それ以降はバグフィックスリリースとなり、バイナリの提供は行われず、ソースコードのみの提供となるので注意したい。