• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
HPHPは約束の地なのか
 

HPHPは約束の地なのか

on

  • 2,494 views

 

Statistics

Views

Total Views
2,494
Views on SlideShare
2,423
Embed Views
71

Actions

Likes
5
Downloads
2
Comments
0

8 Embeds 71

http://moriyoshi.hatenablog.com 37
http://a0.twimg.com 13
http://paper.li 7
http://us-w1.rockmelt.com 5
http://asunarop.tumblr.com 4
http://sharkpp.tumblr.com 3
http://safe.tumblr.com 1
http://ss.dotbranch.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    HPHPは約束の地なのか HPHPは約束の地なのか Presentation Transcript

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