「Python 3.6」がリリース

 12月23日、Python 3系の最新版「Python 3.6.0」がリリースされた。文字列中に式を記述できる「f””」などの新しい文法が導入されたほか、「secrets」モジュールが標準ライブラリとして追加されるなど、多数の新機能が導入されている。

 Python 3.6は2015年9月に公開されたPython 3.5に続くメジャーアップデート版で、複数の新たな文法やモジュールのアップデート、セキュリティ修正などが行われている。

 新たに導入された文法は文字列中に式を埋め込める「Formatted string literals」および変数に対して型に関する情報(型ヒント)を与える「Syntax for variable annotations」、Python 3.5で導入された「async」および「await」文法でコルーチンを利用可能にする「Asynchronous generators」、リスト内包において「async for」や「await for」といった文法の利用を可能にする「Asynchronous comprehensions」。また、数値リテラルでセパレータとしてアンダースコア(「_」)を利用できるようにもなっている。

 Formatted string literalsは「f”<文字列>”」という文法で利用できることから、「f-strings」とも呼ばれている。文字列中に「{<式>}」というフォーマットで式を記述でき、記述された式は実行時に評価されてその結果に置き換えられる。

 3.5で導入したコルーチンとasync / awaitシンタックスのサポートでは、awaitとyieldを同一の関数で使用できなかったが、3.6ではこの制限が解除された。これにより、速度とコードの簡潔さを強化できるとしている。

 また、新しいライブラリモジュールとして、パスワード、アカウント認証、トークンなどのデータ管理向けに安全性の高いランダムな数値を生成するsecretsモジュールが標準ライブラリとして加わった。

 標準ライブラリではこのほか、asyncioモジュールやtypingモジュールの強化、新しいファイルシステムパスプロトコルの導入、datetimeモジュールでのLocal Time Disambiguationのサポートなどが加わっている。tracemallocモジュールを再構築し、ResourceWarningのアウトプットやメモリアロケーションのエラー診断を改善するという。

 CPythonでは、dictを再実装し、PyPyのdict実装に類似してコンパクトにした。これにより、Python 3.5と比較してメモリの利用を20~25%削減できるとしている。また、クラス作成のカスタマイズを簡素化する__init_subclass__を導入した。DTraceやSystemTapによるプローブのサポートや、メモリアロケーションやアクセスエラーなどのデバッグに利用できるPYTHONMALLOC環境変数も加わっている。

 セキュリティでは、Linuxでのos.urandom()を強化し、システムのurandomエントロピープールが初期化されるまでブロックするようになった。hashlib、sslの両モジュールでOpenSSL 1.1.0をサポートするようになり、sslモジュールのデフォルト設定も強化した。hashlibはBLAKE2、SHA-3、SHAKEの各ハッシュアルゴリズムをサポートするようになった。

 Windowsサポートも改善されており、WindowsファイルシステムとコンソールのエンコーディングがUTF-8を利用するようになった。py.exeラウンチャーをコマンドライン引数や設定ファイルなどインタラクティブに使用時、ユーザーがバージョンを特定しない場合にPython 3よりもPython 2を優先しなくなり、Python 3を優先させるようになった。

 このほかにも、細かな強化が多数追加され、バグも修正されている。

Python
http://www.python.org/