HPHPは約束の地なのか

2,674
-1

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,674
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

HPHPは約束の地なのか

  1. 1. HipHop for PHPHPHPは約束の地なのか小泉 守義 <mozo@mozo.jp>
  2. 2. 自己紹介六本木のある会社で働いていました ソーシャルゲームは作っていませんPython、C++、Rubyを書いて生計を立てていますPHP
  3. 3. HipHop for PHP(HPHP)2010年2月公開名前がださいPHPのスクリプトをC++のコードに変換するZendのランタイムに依存しない 独自ランタイムを装備
  4. 4. HPHPの構造パーサアナライザコードジェネレータランタイムビルトイン (Web) サーバ
  5. 5. HPHPの構造 - パーサFlex / BisonベースASTを構築 ZendEngineではThree-Address Codeを直接生 成していた
  6. 6. HPHPの構造 - アナライザ最適化 dead code eliminationなど型推論constructツリーを生成 ASTというよりはCST コード生成に特化したもの
  7. 7. HPHPの構造 - コードジェネレータ以下のコードを生成PHPC++実はアナライザとコードジェネレータはちゃんと分離されていないいけてない
  8. 8. HPHPの構造 - ランタイムZendEngineとは全く異なる構造大まかな概念は同一 struct zval_value → HPHP::VariantThread / Fiberなどをサポート ビルトインサーバ Multitasking
  9. 9. HPHPの構造 - ビルトインサーバFaceBook改造版libeventで実装以下の機能を提供 HTTPサーバ XBOX (cross-box) サーバ RPC (satellite) サーバ他にもあるかもしれないがちゃんと調べてないです
  10. 10. MultitaskingPHPの夢以下の機構を提供 XBOX Pagelet call_user_func_async
  11. 11. XBOXなんかよくわからんプロトコルで非同期RPCする他ホストもサポートxbox_send_message($msg, $ret, $timeout_ms,$host)xbox_post_message(msg, $host)
  12. 12. PageletローカルホストへのHTTPリクエストをzero I/Oで再現$task = pagelet_server_task_start($url,$headers, $post_data)pagelet_server_task_result($task, $headers,$code)
  13. 13. call_user_func_asyncFiberによって直接ランタイム上で並行処理を実現安定しなかったのか外部関数を呼び出すタイミングでブロックしたりするのがまずかったのか知らんがdeprecatedになっている
  14. 14. HHVMについてvmブランチHPHPランタイムの上にスタックマシンを構築tracing JITの実装 (TBD)
  15. 15. ソースコード総評コードの品質は低くない。やたらC++のext以下のライブラリに頼ったりとかTLSとかC++11の新機能使ったりとかかなりチャレンジングなことをしている。そのためコンパイルできるGCCのバージョンが限定されていたりとかいろいろ面倒くさい。CMakeの定義ファイルがクソなためにビルドの障壁が環境によっては異常に高い。
  16. 16. HPHPは約束の地なのか思ったより構造はシンプルで問題解決がしやすそうではあるVMじゃないバージョンはプロダクションで使ってみてもいいかもねでも誰も助けてくれないけどね!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×