JITコンパイラ搭載で高速化を実現する「PHP 8」最初のアルファ版が公開。今年11月26日に正式版を予定
PHPの次期メジャーバージョンアップとなる「PHP 8」のアルファ版が公開されました。
The first alpha of PHP 8 is out!
— php.net (@official_php) June 25, 2020
It's not yet feature complete (https://t.co/KLoppNIL2H), but it already has lots of new goodies, such as union types, attributes and more!
Get it here → https://t.co/KCxTsTKBAb pic.twitter.com/ciDUHA4ZI4
PHPは2015年にPHP 5からPHP 7へと約10年ぶりのメジャーバージョンアップを果たし、このときに性能を2倍以上へと大幅に向上させました。
PHP 8はここから5年ぶりとして計画されている次期メジャーバージョンアップです。そしてPHP 8ではJITコンパイラの搭載により、さらなる性能向上を実現しようとしています。
JITコンパイラはプログラムの実行時にコンパイルを行い、ネイティブコードを生成して実行するというもの。事前にコンパイル作業が不要なためプログラムを手軽に実行できるうえ、ネイティブコードによる高速な実行が期待できることが特徴です。
PHPのJITコンパイラは、かつてFacebookから独自のPHP処理系「HipHop Virtual Machne」(後にHHVM)などがリリースされていましたが、PHP本体に実装されるのは初めてです。
JITコンパイラの実装を提案するドキュメント「PHP RFC: JIT」では、下記のようにPHPのこれ以上の性能向上はJITコンパイラなしではできないところまできていることなど、JITコンパイラをPHPで採用すべき3つの理由を挙げています。
First, we believe we've reached the extent of our ability to improve PHP's performance using other optimization strategies. In other words - we can't further improve the performance of PHP unless we use JIT.
第一に、私たちは従来とは異なる最適化手法を用いてPHPの性能向上を行うところまでやってきた、という確信に至った。言い換えるならば、JITなしにこれ以上のPHPの性能向上はできないということだ。
Secondly - using JIT may open the door for PHP being more frequently used in other, non-Web, CPU-intensive scenarios - where the performance benefits will actually be very substantial - and for which PHP is probably not even being considered today.
第二に、JITを使うことによって、PHPにはWeb以外のCPUインテンシブな処理にも使われる可能性が開かれるだろう。これは性能向上の利点によるところがかなり大きく、それは現在のPHPの用途では考えられていないようなものだろう。
Lastly - making JIT available can provide us (with additional efforts) with the ability to develop built-in functions in PHP, instead of (or in addition to) C - without suffering the huge performance penalty that would be associated with such a strategy in today's, non-JITted engine. This, in turn, can open the door to faster innovation - and also more secure implementations, that would be less susceptible to memory management, overflows and similar issues associated with C-based development.
最後に、JITを用いることで現行の非JITにまつわる大幅な性能低下を被ることなく、Cの代わりにPHPを用いてを組み込み関数を開発することが(追加の努力で)可能になるだろう。これはつまり、メモリ管理やオーバーフローといったCベースの開発の影響を受けにくくなるわけで、より速いイノベーションの可能性と、よりセキュアな実装につながるだろう。
そのほかPHP 8では変数に複数の型を持たせるユニオン型など、言語仕様にもいくつかの追加などが行われています。
今回リリースされたのは、PHP 8の最初のアルファ版である「PHP 8 α1」。8月にはフィーチャーフリーズが行われ、その後ベータ版をリリース、9月にはリリース候補版がリリースされ、11月26日に正式版リリースが予定されています。
あわせて読みたい
セキュリティスキャナー「Tsunami」、名称に関するIssueがクローズ。実は「津波早期警戒システム」が略されたものだったと釈明。ドキュメントで詳細に説明へ
≪前の記事
「Angular 10」正式リリース。TypeScript 3.9サポート