かも?という話を、12月12日、PHPカンファレンスの「PHPの今とこれから2020」
で聴いてきたので、その内容をメモメモ
※ごめん、表題の件は話してたんだけど、メモでは最後のほうにちょこっとだけ出てくる
■あいさつ
・2000年から始めたので20年
・今回リボーン
■PHPの今とこれから2020
・自己紹介
・PHPとは
主にWebで使われるスクリプト言語
1995年誕生
現場の課題を解決してくれる便利なツール
サーバーサイド言語、PHPが7~8割
CMSはWordPressが6割強
・開発体制
世界中の人が開発
・PHPの歩み
パーソナルツールがもと。
拡大。
WebDB、つながる→プラットフォームへ
大衆的→5.3、5.4でいろいろ実装→高性能
高速化を続け、5で並び、7で最速
セキュリティ:コベリティスキャン
20年(PHP4→8)で速度50倍(同じスクリプト動く)
5.3、5.4で機能揃う。5.5でキャッシュ入れる
7では大幅改良
8.0:11月26日リリース
・PHPバージョン分布
PHPアンケート:よく使うバージョンは?7.3-7.4多い
7は58%、7.2(EOL)のユーザーが73%
WordPress はPHP7.4、(MySQL5.6)
・リリースサイクル
ライフサイクル3年
1か月おきにマイナー上がる。CVEは速やかな更新必要
一番多い攻撃はDOS→初期に見られた言語としての脆弱性は枯れている
・PHP8
JITなし
5から7で倍くらい早くなり、7の間でも2,3割、
8で10%くらい早い
JITあり
キャッシュを有効にすれば、早くなる
さらにJITを有効にすれば、早くなる
ただ、アプリケーションだと、
例えばWordPressだとあんまり変わらない
→他の部分が速度に関係。
・JIT導入
JITジャストインタイムコンパイラ
HHVMでJIT導入
7でLLVM導入見送り
DynAsm(ダイナミックアセンブラ)導入
X86系をサポート
JITにすれば単純に早くなるというわけでもない
→動的プロファイリング
処理頻度が高いところを見つける:トレーシングJIT(デフォルト)
・たくさんの改良
Union:複数の型が指定できる
属性:#[]
staticのバインディング
弱いマッピング
変数::class構文 オブジェクトでも
文字列部分一致確認用関数
ヌルセーフ演算子(nullチェックを簡便に)
match式:switch文を簡単に書ける
mixed型:汎用の型 リスコフ置換原理
名前付き引数
コンストラクタでプロパティ指定可能
下位互換性ない変更
数値の定義明確化:前後の空白を許容
負の添字の明確化
結合合演算子の優先順位明確化
ほかにもたくさん
・PHPの将来
キャッシュ:プリローディング
エクステンション:PHPで書かれるほうへ
重たい処理:機械学習、AIなど(PHP-ML,PHP-MLX)
→JITで環境整った
・日本PHPユーザー会の紹介
で聴いてきたので、その内容をメモメモ
※ごめん、表題の件は話してたんだけど、メモでは最後のほうにちょこっとだけ出てくる
■あいさつ
・2000年から始めたので20年
・今回リボーン
■PHPの今とこれから2020
・自己紹介
・PHPとは
主にWebで使われるスクリプト言語
1995年誕生
現場の課題を解決してくれる便利なツール
サーバーサイド言語、PHPが7~8割
CMSはWordPressが6割強
・開発体制
世界中の人が開発
・PHPの歩み
パーソナルツールがもと。
拡大。
WebDB、つながる→プラットフォームへ
大衆的→5.3、5.4でいろいろ実装→高性能
高速化を続け、5で並び、7で最速
セキュリティ:コベリティスキャン
20年(PHP4→8)で速度50倍(同じスクリプト動く)
5.3、5.4で機能揃う。5.5でキャッシュ入れる
7では大幅改良
8.0:11月26日リリース
・PHPバージョン分布
PHPアンケート:よく使うバージョンは?7.3-7.4多い
7は58%、7.2(EOL)のユーザーが73%
WordPress はPHP7.4、(MySQL5.6)
・リリースサイクル
ライフサイクル3年
1か月おきにマイナー上がる。CVEは速やかな更新必要
一番多い攻撃はDOS→初期に見られた言語としての脆弱性は枯れている
・PHP8
JITなし
5から7で倍くらい早くなり、7の間でも2,3割、
8で10%くらい早い
JITあり
キャッシュを有効にすれば、早くなる
さらにJITを有効にすれば、早くなる
ただ、アプリケーションだと、
例えばWordPressだとあんまり変わらない
→他の部分が速度に関係。
・JIT導入
JITジャストインタイムコンパイラ
HHVMでJIT導入
7でLLVM導入見送り
DynAsm(ダイナミックアセンブラ)導入
X86系をサポート
JITにすれば単純に早くなるというわけでもない
→動的プロファイリング
処理頻度が高いところを見つける:トレーシングJIT(デフォルト)
・たくさんの改良
Union:複数の型が指定できる
属性:#[]
staticのバインディング
弱いマッピング
変数::class構文 オブジェクトでも
文字列部分一致確認用関数
ヌルセーフ演算子(nullチェックを簡便に)
match式:switch文を簡単に書ける
mixed型:汎用の型 リスコフ置換原理
名前付き引数
コンストラクタでプロパティ指定可能
下位互換性ない変更
数値の定義明確化:前後の空白を許容
負の添字の明確化
結合合演算子の優先順位明確化
ほかにもたくさん
・PHPの将来
キャッシュ:プリローディング
エクステンション:PHPで書かれるほうへ
重たい処理:機械学習、AIなど(PHP-ML,PHP-MLX)
→JITで環境整った
・日本PHPユーザー会の紹介