スクリプト言語であるPHPの開発チームは、「PHP 8」を正式にリリースした。このメジャーバージョンに移行するためには、コードを修正する必要があるかもしれない。
PHPが生まれてから25年目にリリースされた今回のバージョンでは、型システムの改善、JITコンパイラー、名前付き引数やNullsafe演算子などの「Python」や「JavaScript」から取り入れた機能などが導入された。
PHPのメンテナンスに深く関わっているZend Technologiesの共同創業者であり、Googleのゼネラルマネージャー兼データーベースエンジニアリング担当バイスプレジデントを務めるAndi Gutmans氏は、実行時(JIT)コンパイラーの導入に「興奮している」と述べている。
JITコンパイラーは、ウェブアプリケーションのパフォーマンス向上を狙って導入されたものだ。しかし、stitcher.ioに携わっているベルギー人開発者のBrent Roose氏は、ウェブのリクエストの処理に関して言えば、それほどメリットはない場合が多いと述べている。
PHPは(JavaScriptやPythonと同じように)インタープリター言語であるため、PHPのコードは実行時に解釈される。CやJava、Rustなどのコンパイル言語とは違って、CPUがPHPのコードを理解するためには解釈が必要になる。
Roose氏は、「JITコンパイラーはプログラムのパフォーマンスを大幅に向上させるかもしれないが、その仕組みを正しく理解するのは難しい」と述べている。
JITコンパイラーを導入すれば、ウェブ以外でのPHPの性能が向上する可能性があるが、コンパイラーのコードをデバッグするのは難しくなるかもしれない。Roose氏は、コンパイラーにバグがある場合、ユーザーは対処をJITコンパイラーのメンテナーに任せるしかないが、これによってセキュリティパッチの作成やバグの修正に従来より時間がかかるようになることも考えられると話す。
「今は(PHPの)コードベースをメンテナンスできる人が少なくなっており、JITコンパイラーが適切にメンテナンスできるのかという疑問が出てきてもおかしくない。もちろん、(新しい人が)コンパイラーの仕組みを学ぶことはできるが、これは複雑な教材だ」とRoose氏は言う。
同氏は、このメンテナンスのコストを考えると、PHPにコンパイラーを含めるべきかどうかは疑問だと述べている。また、PHPユーザーは、「バグの修正やバージョンの更新に、これまで自分たちが馴染んでいるよりも時間がかかる可能性があることを認識しておくべきだ」という。
またPHP 8はメジャーリリースであり、バージョンをアップグレードすると、古いPHPのコードは動かなくなる可能性がある。ただしRoose氏は、コードが動かなくなるような変更内容のほとんどは、7.xバージョンよりも前に非推奨になっていたと指摘している。
Zend Technologiresはまた、PHP 7.2のサポートが2020年11月30日に終了することに再度注意を呼びかける記事を投稿した。これは、PHPの中心的なコントリビュータ―が、今後はこのバージョンにセキュリティパッチを提供しなくなることを意味している。このことは、一部の企業のウェブアプリケーションで問題になる可能性がある。
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。