PHP 7リリース、言語仕様の大幅拡張と当社比2倍の性能アップを実現 16
ストーリー by hylom
7の世界へ 部門より
7の世界へ 部門より
あるAnonymous Coward 曰く、
PHP開発チームは3日、ついに10年以上にわたるPHP 5の時代に終止符を打ち、「PHP 7.0.0」の公式リリースをアナウンスした(アナウンス、OSDN Magazine)。
PHP 7ではメジャーバージョンが上がっただけのことはあり、大幅な改造が図られている。まず最も恩恵を受けやすいのが実行エンジンの見直しによる性能向上である。内部のデータ構造の見直しなどが図られた結果、その性能はPHP 5.6と比較して2倍高速になり、メモリ使用量も50%改善したという。これによりJITコンパイラを用いるHHVMにも匹敵するパフォーマンスとなっている。
言語仕様にも手が加えられており、Fatal Errorなどの致命的エラーの数々が例外として扱われるようになった他、無名クラスの導入や以前にも話題になったスカラー型宣言、戻り値の型宣言にNull合体演算子の導入など、多数の機能追加が行われている。また廃止予定とされてきたeregなど古いモジュールの削除も実施された。変更点の詳細については「PHP 5.6.x から PHP 7.0.x への移行」ページを参照されたし。
はまりそうなポイント (スコア:0)
非互換な変更をつらつら眺めたけど、一番怖そうなのはこれかな。
> 変数やプロパティ、メソッドへの間接的なアクセスの扱いの変更
http://php.net/manual/ja/migration70.incompatible.php#migration70.inco... [php.net]
Re:はまりそうなポイント (スコア:1)
php5の悪夢再び。
#これが最後の糞仕様変更とは思えない。phpがあるかぎりいずれ第二第三の糞仕様変更が(ry
これによる実際の変更箇所の「個数」は少ないかもしれないけれど、どこがその該当箇所であるかを
検出し、それを等価な処理に変更したことを保証するのがべらぼうに面倒だったりするんだよ。
それって現実的には変更コストが高過ぎて、事実上移植できなくなるってこと。
結局はPHP6以前のコード(メジャーなフレームワークやライブラリも含む)は、
7へ移植されることなしに消えていく運命なのかもね。
Re: (スコア:0)
糞仕様変更がない言語は死んだ言語だけだ。
PHPは元々書き捨てみたいなもんでしょ。
十年以上も使う保守主眼の重厚長大言語じゃないし、さっさと次の物を作った方が早い。
Re: (スコア:0)
>十年以上も使う保守主眼の重厚長大言語じゃないし、さっさと次の物を作った方が早い。
2000年問題から何も学習しなかった老害さんか?
そう言って放置した結果、現行製品の保守もできずに苦労していたPHP開発現場を私は知っている。
そもそもそれで問題が無ければ、こんなに頻繁にフレームワークが入れ替わったりしないのではないか?
Re: (スコア:0)
変数内容をメソッド名に使っての呼び出しでしょ
そこまで頻繁にはやらない印象があるが…まぁ嫌だけど
PHP 6がスキップされた理由は触れてはいけないの? (スコア:0)
こういうこと、Microsoftもやってたな…
そう、DirectX 4.0だよ!
# Windows 9はマーケティング上の理由が大きいからまた別か
Re: (スコア:0)
Perl 6 の仲間と思われたくなかったからなんでないの?
Re: (スコア:0)
PHPとPerlのバージョンナンバーをごっちゃにする奴って何人くらいいるのかなあ。(#2930147以外で)
Re: (スコア:0)
4は死に通じて縁起が悪いからだっけ?
同様に、Windows9は苦に通じて縁起が悪いからスキップ
Re: (スコア:0)
Re: (スコア:0)
それは確か外野の憶測です。非常に説得力が強いことは事実ですがね。
公式には7,8,9のダジャレを言っているだけだったはず。つまり本当の理由は秘密ってこと。
Re: (スコア:0)
PHP4も、NT4も存在してただろ。
Re: (スコア:0)
政治的な理由は無い
Re: (スコア:0)
どれくらいのサーバーが節約できるのか (スコア:0)
多くのウェブサイトはPHP、特にwordpressで公開されてたりするけど、
すべてのサーバーがPHP7に移行した場合、どれくらいのサーバーが節約できるんだろう。
アクセス多くてスケールしないとやっていけないような人気のサイトは少数だろうし、そこまでインパクトはないか。
いや、それより共有レンタルサーバーがより多くのユーザーを1台に詰め込めるようになるのかな。
それは結構大きいかも。
言語のバージョン (スコア:0)
オフトピだけど、そういえば、わざわざ言わない場合は、言語のバージョン=実装のバージョン、という暗黙の了解でいいのか。
極端な所では「PHP言語7.0.0」の言語仕様が確定しましたが、それを余すところなく実装したPHPランタイムは未だ無いです、とか、
PHPランタイム7.0.0はPHP言語7.0.0仕様を満たしていないバグがあって修正され、ランタイム7.8.3でようやく言語7.0.0相当になりました、とか、
そういうバージョン間の齟齬はどうやって処理しているんだろう、とか、とりとめのないことを思ってしまった。
サードパーティーのPHPランタイムを作る場合は、PHP言語7.0.0相当を名乗るべきなのか、PHP7.0.0互換を名乗るのべきなのか、とか。
ライブラリを公開する場合に、何対応と言えば良いのかとか。
言語と実装の分離がされてるC++とかCとかと比べてどうなんだろう。
逆に、Rubyの、実装が仕様だ、はまだ生きてるのかな。