PHPの今とこれから2019
本業は宇宙開発(?)
PHP 7.4, 8の話をする
自己紹介
1回目から参加してる
2000, PHP4
PHPとは
エレガントではなく現実的に解決する
ツールとして使うような位置づけ
W3Techs.comだと毎年サーバサイドで8割ぐらい使われている
開発者
Group 10
コア150(日本10)
開発者1939(日本15)
PHPの歩み
musium.phpで昔からのソースが拾える
ソースコード数のカウント
PHP5あたりからバクぞう
Python、Rubyより多い
言語仕様
昔はいまいちだったけど
PHP5の時代に現代的なスクリプト言語になった
7だと最速クラスのスクリプト言語
PHP6
国際化キャンセル
5.3と5.4の間にい機能の差がある
1年に1回マイナーバージョンが上がる
次は7.5じゃなくて8
リリース未定
予想2021後半じゃないかな?
PHP8
JITコンパイラ
Union型
利用
会場
2割ぐらいPHP 5?
使ったことがない人もちらほら
統計的には7が4割(W3Tech.com)
去年は23%
WPと組んでPHP7を推進している
PHPのリリースサイクルは3年
アクティブサポート2年、最後1年はセキュリティ修正のみ
PHP7.1のサポートは今日終わる
この1年間のどんな機能がリリースされたか
月1リリース
バグ修正
CVEが入ってたら速やかにアップデートしてほしい
例えば、nginxでリモートコード実行のクリティカルな不具合があった。これ以前のを使ってたらあげてほしい
PHP 7のパフォーマンス
WPの例
実行速度・消費メモリ療法が大きく改善している
talks.php.net/etsy18
7の中でも改善してる
ベンチマーク
フィボナッチベンチ
代入、加算するようなベンチ
だんだんよくなってる
PHP 7.4の改善ポイント
弱い型付けは成約広すぎるので、
type hitingと型付けは厳密には違う
nullable
型が
strict_types=1をつけるとエラーになる
OPCacheのpreload
OPCache大体倍ぐらい
最初のローディングはキャッシュがメモリ上にないので遅い
読み込みコードを描くと、preloadができるようになってスタートアップも早くなる
FFI
外部ライブラリはCのインタフェースを書いていたが敷居が高い
インタフェースと呼ぶライブラリを書けば定数が使えるようになった
要調査kadoyau.icon
opcacheとくんでる。preloadができる
書きやすさの改良
配列スプレッド構文
array_merge()より高速でシンプル
Generatorもサポート
Arrow function(short closure)
??構文(PHP7)
PHP7.4では$a['user'] ??/ 'nobody'がvalidになった
mb_str_split()
str_split()のマルチバイト版
数値リテラルセパレータ
$foo=1_000_000
+, . の優先順位が同じだった
+のほうが優先順位が上になった
print_r("3"."5"+7)
35 + 7 = 41
'3'+12 = '312' PHP 7.4
weak references
オブジェクトの参照カウンタが増えない変数をつくって履きを簡単にする
WeakReffenernce.create()
要調査kadoyau.icon
invariant covariant
スライド読み直したいkadoyau.icon
deprecatedな機能
PHP 8
JITがはいる
当初
Hackで採用されてPHP5より早かったので真似ようとした
PHPに入れられなかったので言語自体を高速化した
流れ:SSA解析-> DynAsym-> cache -> 実行
ベンチはcacheに含まれてるから注意
真ん中7つに注目
パラメータが4つぐらいある
opcache.jitで調整
パラメータチューニングが必要になる
CPUごとの最適化
hotspotの解析
デフォルトが早い
カッシュバッファサイズを変えるとチューニングも変わるはずなのでさわって研究が必要
さいごに
Rasmus語録:歯ブラシ
最近のrusmusの図
あなたたちはy。xをもってほしい
PHPユーザ会の紹介
今回のテーマはBEYOND