「Python 3.5」リリース、非同期プログラミング機能の強化や型ヒントの記述機能を導入
Python Software Foundationは9月13日、Python 3系の最新版「Python 3.5.0」をリリースした。非同期プログラミング機能を強化したほか、型ヒントの記述機能や行列乗算演算子の導入などが行われている。
Python 3.5はPython 3系の最新版となり、2014年3月に公開した「Python 3.4」に続くものとなる。本リリースでの特徴としては、新しい文法の導入や新モジュールの導入、さまざまな機能強化などがある。
文法面では、「async def」および「await」キーワードを使ったコルーチンサポートが追加された。defキーワードの代わりにasync defキーワードを使って関数を定義することで、コルーチン関数を宣言できる。また、コルーチン関数内ではawaitキーワードを使うことで、その結果が得られるまでコルーチンの実行を中断できるようになる。そのほか、非同期にループを実行する「async for」文も新たに追加された。
また、行列乗算演算子「@」が加わった。この演算子をサポートする組み込み型は現時点では存在しないが、「__matmul__()」や「__rmatmul__()」、「__imatmul__()」といったメソッドを定義したクラスを用意することで、@演算子による行列演算を行えるようになる。この演算子は数値演算ライブラリ「NumPy」などでのサポートが予定されているとのこと。そのほか、「*」や「**」演算子を使った配列やディクショナリのアンパッキングが拡張され、関数呼び出し時に任意の数の変数をアンパックして渡すことが可能となった。「%」演算子を使った文字列のフォーマットではbytesおよびbytearray形式のオブジェクトのフォーマットがサポートされている。
型情報に関するヒントを記述できる「Type Hints」機能も実装された。関数の宣言時に「-> <戻り値の型>」という形式で型情報に対するヒントを記述できる。Type Hints関連機能はtypingモジュールで実装されている。
もう1つの新モジュール「zipapp」はPython 2.6より導入されている、実行可能なZIP形式アーカイブ「Python ZIP Application」関連のツールを提供するもの。これによりアプリケーションのバンドルが容易になるとしている。
そのほか、memoryviewでのタプルインデックシングサポートやbytes、bytearray、memoryviewへのhexメソッドの追加、ジェネレータでのgi_yieldfrom属性追加、新しい例外RecursionErrorとStopAsyncIterationの追加なども行われている。
標準ライブラリの強化としては、sslモジュールでSSLプロトコルの処理をネットワークI/Oから分離するMemory BIOサポートが加わった。また、collections.OrderedDictは新たにCで実装され、大幅に高速化されたという。サブプロセスの実行を効率化するsubprocess.run()関数やディレクトリトラバーサルを高速にするos.scandir()関数の追加、tracebackモジュールでの性能強化なども行われている。
CPythonの実装も強化し、セキュリティではSSLv3の利用が標準ライブラリで無効となった。利用するためにはssl.SSLContextを主導で設定する必要がある。
Windowsではインストーラーが新しくなり、ビルドはVisual C++ 14.0を利用した。これに合わせ、拡張モジュールのビルドにもVisual C++ 14.0を利用する必要がある。
Python
http://www.python.org/