PHP: Hypertext Preprocessor

PHPの次期メジャーバージョンはPHP6になるとみられてきたが、問題を打破するために開発ブランチを5.3ベースへ巻き戻すという対処が実施された。Rasmus Lerdorf氏がphp.internals: PHP 6においてPHP6 Unicodeの実装が失敗したことを伝えている。PHP6ではエンジン内部の処理がUTF-16に統一される計画になっていたものの、関係者からはこの方針は間違っているのではないかという指摘もあった。今回実装が行き詰まったことで、PHPはUnicodeに対して新しいアプローチをとることになる。

このあたりの事情がFuture of PHP 6 - Johannes Schluterにまとまっている。紹介されている内容をまとめると次のとおり。

これまでの取り組み
PHP6で取り組む基本的な内容として、PHPエンジン内部におけるエンコーディングをすべてUTF-16で実施するという方針が決定した。これはPHP6で利用するICUライブラリがUTF-16にフォーカスしているため。結果、スクリプトやデータなどほかのエンコーディングでやってくるデータを一旦UTF-16に変換してから処理するための実装が進められた。しかし実際に取り組んでみるとCPU負荷が高い上にメモリも食うことが判明。しかもどのエンコーディングが使われているか判断する実装が難しく、さらに後方互換性も失われるという問題がでてきた。mbstringといった程度の対応でいいユーザにとって不利益が多すぎるうえ、開発者が開発版を使いたがらないという状況に陥った。
現状
こうした閉塞状況を抜け出すため、これまでの開発ブランチを停止。新しくPHP 5.3ブランチ開発ブランチとし、そこにこれまで開発してきた機能をマージする方針へ変更。Unicodeに関する取り組みは白紙に戻す。5.2系をいつまでリリースするかはまだわからないが、ユーザには5.3系へのアップグレードを推奨する。
今後の展開
Unicodeに関する方針はこれから議論する。文字列クラスを作成してそこでUnicodeの操作を処理するようにすることで、コアには影響を与えず、後方互換性も保持するアイディアもでているが、包括的な取り組みにするか限定的な取り組みにするかそうした点も含めて今後の議論で決定していく。次のメジャーバージョンがPHP 5.4になるのかPHP 6になるのか、またはPHP 7になるのかはまったく未定。