今回は、Pythonのアップデートがきていたので、それについて書いてみようと思います。
Python をアップデートしよう(3.8.4)
最新バージョンを確認する。
本家サイトに行きます。
赤枠内の「Python 3.8.4」を選択するとダウンロードサイトに行けます。
2か月振りですね。リビジョンアップですが、アップデートした内容も見ていきたいと思います。
ダウンロード
ダウンロードサイト(https://www.python.org/downloads/release/python-384/ )からPython 3.8.4 をダウンロードします。
- 以下の画面のように downloads から「Python 3.8.4」を選択します。
- python-3.8.4.exe がダウンロードされます。サイズは、約26Mbytesです。
上書きインストール
- すでに3.8.3が入っている環境に3.8.4を上書きインストールします。
- 「Add Python 3.8 to PATH」にチェックを入れ「Install Now」を選択します。使うライブラリによってPATH設定が必要ことがあるようです。
- 「はい」を選択します。
- 「Close」を選択します。
これでインストール完了です。
アップデート内容を確認します。
アップデート内容3.8.3からの変更なので、3.8.4 Final と3.8.4 Release Cadidate 1 の更新内容になります。
Pythonの3.8.4 Final
リリース日:2020-07-13
セキュリティ
- bpo-41162:イベントの欠落を避けるために、ファイナライズ中に監査フックがクリアされるようになりました。
- bpo-29778:Pythonが埋め込まれている場合、python3.dllを正しい場所からロードされていることを確認してください(CVE-2020-15523)。
コアとビルトイン
- bpo-41247:asyncio.set_running_loop 実行時に、実行中のループホルダーを常にキャッシュします
- bpo-41252:_ssl.cの_servername_callback() で不正な参照カウントを修正しました
- bpo-41218:Python 3.8.3は、ast.PyCF_ALLOW_TOP_LEVEL_AWAITを使用してコンパイルすると、CO_COROUTINEでリストの内包を積極的にマークするというリグレッションがありました。これで、async / awaitを使用したリスト内包のみにタグが付けられます。
- bpo-41175:bytearray() + bytearray()によってトリガーされたbytearrayobject内のNULLポインター逆参照から保護します。
- bpo-39960:スーパークラスメソッドを呼び出すことによって型の__setattr __()のスニーキングを防ぐ「hackcheck」が、Cに実装されたヒープ型を許可するように書き直されました。
ライブラリ
- bpo-41235:ssl.SSLContext.load_dh_params()のエラー処理を修正しました。
- bpo-41193:readline コンプリーターのatexit関数 write_history() が FileNotFoundErrorand や PermissionErrorだけを無視するのではなく、ファイルシステムが読み取り専用の場合、すべて OSErrorのエラーを無視するようになりました 。
- bpo-41043:stdlib の glob() の仕様を次のように修正します。パスのリテラル部分が常に正しくエスケープされるようします。
- bpo-39384:set_content()がnull文字列を設定できるようにemail.contentmanagerを修正しました。
IDLE
- bpo-37765:モジュール名補完リストにキーワードを追加します。IDLE docのCompletionsセクションを書き換えます。
- bpo-41152:IDLE の stdin/stdout/stderr エンコーディングは、現在常に UTF-8 です。
Pythonの3.8.4 Release Candidate 1
リリース日:2020-06-29
セキュリティ
- bpo-41004:ipaddress.IPv4Interface および ipaddress.IPv6Interface の__hash__()メソッドは、32および128それぞれで定数ハッシュ値を誤って生成していたした。これにより、常にハッシュの衝突が発生していまいた。そのため、hash()を使用して、(アドレス、マスク長、ネットワークアドレス)のタプルのハッシュ値を生成するように修正します。
- bpo-39073:email.headerregistry.Address引数でCRまたはLFを禁止して、ヘッダーインジェクション攻撃から保護するようにします。
コアとビルトイン
- bpo-41094:非UTF-8ロケールで非ASCII名のファイルを開くときの監査でのデコードエラーを修正します。
- bpo-41056:コードが -c を介して提供されたときに相対シンボリックリンクを含むsys.pathを構築するときの起動時に解放されたスタックスペースへの参照を修正します。静的解析Coverityで発見されました。
- bpo-35975:Stefan Behnelが、PyCF_ONLY_ASTが設定されていない場合でもcf_feature_versionが使用されることを報告しました。これは意図に反し、文書化された動作に反するため、修正されました。
- bpo-40957:PySys_Audit()が失敗した場合の_Py_fopen_obj()のrefleakを修正します。
- bpo-40870:ast.Name ノード内で定数True、FalseおよびNone を使用しているカスタムASTを検証するときに ValueError が発生します。
- bpo-40826:PyOS_Readline() の GILの仕様を次のように修正します:保留中のシグナルがあるかどうかをチェックするとき、GILをロックして例外を設定し、Pythonスレッドのステートを渡しますようにします。
- bpo-40824:__iter__ メソッドを呼び出し中に予期しないエラーが発生しても、TypeErrorで inオペレータやoperatorモジュールのcontains()、indexOf()および countOf()関数でマスクされないようにします。
- bpo-40663:必要な括弧が抜けているときに正しい注記が表示されます(例:Type[(str, int, *other))]
ライブラリ
- bpo-41138:非UTF-8エンコーディングのPythonソースファイルのtraceモジュールCLIを修正しました。
- bpo-31938:selectモジュール内のいくつかの関数のデフォルト値のシグネチャをAnthony Sottileによって修正されました。
- bpo-41068:書き込み直後にZIPアーカイブから非ASCII名のファイルを読み取る問題を修正しました。
- bpo-41058:pdb.find_function()ソースファイルのエンコーディングを正しく認識するようになりました。
- bpo-41056:keylogコールバックのMemoryError中のsslモジュール内のNULLポインター逆参照を修正しました。静的解析Coverityで発見されました。
- bpo-41048:mimetypes.read_mime_types() 関数は、ロケールエンコーディングではなく、UTF-8エンコーディングを使用してルールファイルを読み取ります。Srinivas Reddy Thatiparthy によってパッチされました。
- bpo-40448:pipとsetuptoolsのバンドルバージョンをインストールされるとき、ensurepip が pip をキャッシュの使用するのを現在は無効にしています。Krzysztof Konopkoによってパッチされました。
- bpo-40855:統計モジュールの標準偏差および分散関数は、mu および xbar 引数を無視していました。
- bpo-40807:code.InteractiveInterpreter(およびIDLE)によって使用されるcodeop._maybe_compileを警告を3回発行したら停止します。
- bpo-40834:strオブジェクトwith_xxsubinterpreters.channel_sendを送信する際の切り捨てを修正しました。
- bpo-38488:pip 20.1.1 および setuptools 47.1.0 をインストールするため Ensurepip を更新します。
- bpo-40767:webbrowserは、WAYLAND_DISPLAY 環境変数をチェックすることにより、ピュア Wayland システムでデフォルトのブラウザーを適切に検索するようになりました。JérémyAttali によってパッチされました。
- bpo-40795:ctypesモジュール:ctypesがコールバックの結果の変換に失敗した場合、または ctypes コールバック関数が例外を発生させた場合、sys.unraisablehook が例外セットで呼び出されるようになりました。以前は、エラーは、PyErr_Print() によって stderr にログされていました。
- bpo-30008:no-deprecated および --api=1.1.0 使用する OpenSSL 1.1.x ビルドと互換性があるように ssl コードを修正します。
- bpo-40614:feature_version が (3, 8) より小さい場合、ast.parse() は、f-string 内の自己文書化式を解析しません。
- bpo-40626:HDF5形式のデータファイルのHDF 団体の推奨設定に従って、MIMEタイプapplication / x-hdf5として、h5 ファイル拡張子を追加します。Mark Schwabによってパッチされました。
- bpo-25872:複数のスレッドからアクセスすると linecache が KeyError でクラッシュする可能性がありました。Michael Graczykによって修正されました。
- bpo-40597:テキストコンテンツ行が policy.max_line_length より長い場合は、必ずコンテンツエンコーディングを使用して、折り返されるようにしてください。
- bpo-40515:ssl および hashlib モジュールは、OpenSSLがスレッドサポートでビルドされていることをアクティブにチェックするようになりました。Python 3.7.0ではスレッドサポートが必須になり、スレッドなしのビルドでは安全に機能しなくなりました。
- bpo-13097:コールバックが1024を超える引数で呼び出されると、ctypes で ArgumentError が発生するようになりました。
- bpo-40457:sslモジュールは、TLS 1.0 および 1.1 メソッドなしの OpenSSL ビルドをサポートするようになりました。
- bpo-39830:zipfile モジュール内の __all__ に zipfile.Path が追加されました。
- bpo-40025:_generate_next_value_ がメンバーの後に定義されている場合、TypeError が発生します。Ethan Onstott によってパッチされました。
- bpo-39244:macOS で最初に呼ばれるデフォルトメソッドを正しく返すように、multiprocessing.context.get_all_start_methods を修正しました。
- bpo-39040:ベアクォート文字列内のエンコードされたワード間の空白を折りたたむことにより、無効なMIMEヘッダーパラメーターの解析を修正しました。
- bpo-35714:sturct 形式文字列内に null文字がある場合、struct.error が発生するようになりました。
- bpo-36290:AST ノードが競合するキーワード引数で TypeError が発生するようになりました。Rémi Lapeyreによってパッチされました。
- bpo-29620:モジュールが __warningregistry__ にアクセスされ新しいモジュールがインポートされたとき、または新しいモジュールが別のスレッドでインポートされたときに、assertWarns() が RuntimeException を発生しなくなりました 。Kerncによるパッチされました。
- bpo-34226: cgi.parse_multipart で content_length 使用しないように修正しました。Roger Duranによってパッチされました。
テスト
- bpo-41085:2**31より大きいインデックスの64ビットWindows でのarray.array.index()メソッドの整数オーバーフローを修正しました。
- bpo-38377:Linuxでは、カレントユーザーが/dev/shm/ディレクトリにファイルを作成できない場合、マルチプロセッシングを使用するテストをスキップします。skip_if_broken_multiprocessing_synchronize() 関数をtest.support モジュールに追加します。
- bpo-41009:support.require_{linux|mac|freebsd}_version() クラスデコレータとしてのデコレータの使用を修正します。
- bpo-41003:numpyインストール時の test_copyreg を次のように修正: test.pickletester が numpy インポート時に警告フィルタをセーブ/リストアし numpyによってインストールされたフィルターを無視します。
- bpo-40964:リモート imaplib テストを無効にします。ホスト cyrus.andrew.cmu.edu が着信接続をブロックしています。
- bpo-40055:distutils.tests は警告フィルターをセーブ/リストアして変更しないようにします。テストをインポートすると、警告フィルターを追加する pkg_resources をインポートする docutils がインポートされます。
- bpo-34401:test_gdbをHP-UXで適切に実行できるようにします。Michael Osipovによるパッチ。
ビルド
- bpo-40204:Sphinxバージョンをの2.3.1に固定しDoc/Makefileます。
- bpo-40653:潜在的なコンパイルの問題を修正するために、_dirnameW を HAVE_SYMLINK から移動します。
Windows
- bpo-41074:関数 msilib.OpenDatabase() および関数 msilib.init_database() の非ASCIサポートおよびmsilib.Database.OpenView()メソッドの非ASCII SQLサポートが修正されました。
- bpo-40164:Windows OpenSSL を 1.1.1g に更新
- bpo-39631:Windows上の.py ファイルの登録済みMIMEタイプをtext/plainではなくtext/x-pythonに変更します。
- bpo-40677:IO_REPARSE_TAG_APPEXECLINK が古いWindows SDKに定義されていない場合に備えて、手動で定義します。
- bpo-40650:timeval用に pytime.c に winsock2.h を含めます。
- bpo-39148:IPv6サポートを ProactorEventLoop の asyncio データグラムエンドポイントに追加します。不明なアドレスファミリに対して発生した例外は、Windows APIからのものではないため、ValueErrorに変更します。
macOS
- bpo-39580:コマンドラインからインストーラーを実行する場合は、Finder ウィンドウを開かないようします。Rick Heilによってパッチされました。
- bpo-41100:macOS 11でビルドするときの構成エラーを修正します。現在の Python リリースは、macOS 11(Big Sur)の最初の開発者プレビューの直後にリリースされました。開発者プレビューでのビルドと実行には、他にも既知の問題があります。Big Surは、Python 3.8.xおよび3.9.0の将来のバグ修正リリースで完全にサポートされる予定です。
- bpo-41005:macOS が webbrowser.py でブラウザーを開くことができない XDG 設定の問題を修正しました
- bpo-40741:SQLite 3.32.2を使用するようにmacOSインストーラーを更新します。
IDLE
- bpo-41144:Open Moduleがos.pathなどの特別なモジュールを開くようにします。
- bpo-39885:選択範囲内で右クリックしたときに、コンテキストメニューの切り取りとコピーが再び機能するようになりました。
- bpo-40723:インポート後に実行するときにtest_idleを渡すようにしました。
ツール/デモ
- bpo-40479:最新のOpenSSL 1.0.2、1.1.0、1.1.1、および3.0.0-alphaでテストするようにmultissltestヘルパーを更新します。
- bpo-40163:multissltestツールを修正しました。OpenSSLは古いリリースのダウンロードURLを変更しました。multissltestツールは、現在および古いダウンロードURLからダウンロードしようとします。
CVEベースで以下の脆弱性が修正されています。詳しく見てみます。
CVE-2020-15523
重要度 : 警告( CVSSv3.1 : 5.0)
危険性 : Windows上の3.6までの3.6.10、3.7までの3.7.8、3.8までの3.8.4rc1、および3.9までの3.9.0b4を含むPython 3.6では、トロイの木馬python3.dllが使用される可能性があります。 CPythonがネイティブアプリケーションに埋め込まれている場合。これは、python3X.dllがpython3.dllの読み込みに無効な検索パスを使用する可能性があるために発生します(Py_SetPathが使用された後)。注:この問題は、Windowsで標準の(組み込みではない)Pythonインストールからpython.exeを使用する場合は発生しません。
まとめ
セキュリティ修正が入っています。動作不具合の修正も多いため、ぜひアップデートしておきたいですね。しかし、トロイの木馬ひさびさに聞きました。明記されているものは珍しいですね。実際は可能でもあまり直接的な表現で使われているのはあまり見ないです。
参考情報
Changelog — Python 3.8.4 documentation
Welcome to Python.org
0 件のコメント:
コメントを投稿