2011年11月1日 星期二

Zend VM Source

本來打算來看 Zend Engine (Zend VM) 的 Document ,沒想到 php-src 內的 RFC 還停留在 2001 年。

上了 php wiki 找了一下,好不容易有一篇解說 zend object ( https://wiki.php.net/internals/engine/objects 以及 https://wiki.php.net/internals/engine ) 。千萬不要去看 php-src 內的 OBJECT2 呀,大概是好幾千年前的東西了,可見 Zend Team 連 source code repository 內舊的東西都懶得整理呀。

另外 php-doc 內最近多了一個 section:  PHP at the Core: A Hacker's Guide to the Zend Engine ,不過 Zend Engine 2 API 也是空的,勉強還有一個 opcode list http://tw.php.net/manual/en/internals2.opcodes.ops.php 。

隔壁章節則是 Zend Engine 1.0  http://tw.php.net/manual/en/internals2.ze1.zendapi.php,可能對搞懂 Zend VM 會有點幫助,不過 Zend Engine 1.0 與 2.0 差異多少則不得而知,PHP 5.4 對於 VM 也有相當大的改動。 總之,很多 section 內都是空的 (大概是 docbook 格式的文件相當難寫,沒人想寫吧!)

此外 OpCode 方面可使用 vld extension dump 出來 http://pecl.php.net/package/vld 。

另外對 bytecode to LLVM Bitcode Wiki 上也有一些基本的描述: https://wiki.php.net/ideas/bytecodetollvm ,目前的 LLVM generator 可以通過一點基礎的測試,但是還得大量整理來追上 LLVM 的版本,也可參考一下 VMKit ( http://vmkit.llvm.org/ )


最近 Zend 那群人打算把 svn 搬移到其他 DVCS 上,目前 php source code 可在 GitHub 上找到: https://github.com/php/php-src


本來也打算上 #php IRC channel ,結果沒想到該頻道必須被邀請才能加入的私人頻道。



總之,PHP Internal 相關的東西,比起其他社群,看起來並不是很活躍,希望 FaceBook 可以促進一些刺激之類的。