Nodejs 0.8 on the Edge!
nodejs 的開發小組在幾天前也正式釋出最新的實驗版本0.7.8,除了例行性的 bugfix 以及性能優化之外,可以偷偷發現幾個未來的新功能也悄悄放進來了 :p
有關新版號 0.8.x 的初步規劃,可以參考社群討論的文章所提到的內容:[v0.8 Roadmap](https://groups.google.com/forum/?fromgroups#!topicsearchin/nodejs/domain/nodejs/eVBOYiI_O_A)
裡面有提到幾項 0.8 中會做的改變及增加的功能:
[Change nodejs build tool from WAF to GYP](https://github.com/joyent/node/issues?labels=gyp&sort=created&direction=desc&state=open&page=1)
WAF 是目前 nodejs 中用來建構模組的工具,當你的 nodejs module 有包含到 C or C++之類需要編譯的動作的時候,你可以發現有個 wscript 的檔案,就是 node-waf 的設定檔,可以讓利用 npm 安裝模組時一併處理好編譯、建構的動作(不過其實我也沒寫過,可以參考一下強者的範例 XD)
不過這不是重點(喂!!
因為 nodejs 即將在 0.8 中從原有的 WAF 改為GYP,似乎 GYP 對於多平台有更好的兼容性,不過 GYP 的文件沒有 WAF 來的齊全
,所以可能要參考一下一些教學文,可以協助上手 :p
- [Node.js modules cross platform compilation using gyp](http://botsikas.blogspot.com/2011/12/nodejs-modules-cross-platform.html)
- [GYP Document](http://code.google.com/p/gyp/wiki/GypUserDocumentation)
目前 gyp 還沒有放進 node,想嘗鮮的話可以下載 master 自行編譯,或者先試著用node-gyp這個模組
[Isolates](https://github.com/joyent/node/issues/2133)
原本預計加入的功能,要把 child_process.fork()的行為改為 thread,而不是 process,希望可以讓 fork 的行為更有效率、減低資源的使用,不過後來影響的層面太大被移掉了,可能會移到未來的版本中
[Domains](https://github.com/joyent/node/issues/2134)
Domain 應該算是 0.8 中相當重要的功能之一,不過現在我還有點搞不懂到底能拿來做甚麼(大誤)。目前從文件及test case看來,有點像是透過同一個 domain 可以同時處理不同的 IO 行為,譬如 Error Handle,透過把事件加到同一個 domain 裡,當事件被觸發或是 error 的時候,domain 物件就會被呼叫,所以應該可以集中處理同一 domain 的事件。
不太確定有沒有誤會它的用法,不過目前沒有太多的範例,如果有錯誤的話麻煩指點我一下...0rz
[Better allocator](https://github.com/joyent/node/issues/2135)
這個是 windows 下的問題,基本上無視(誤
[Addons](https://github.com/joyent/node/issues/2136)
看起來是跟第一點提到的 GYP 有關連,要改善在不同平台上都能夠順利編譯出原生 module。目前有切出一個node-gyp的專案來處理這部份的問題(之後應該會 merge 進 node?? 不負責猜測 XD),有興趣也可以直接看那邊的範例及文件。
看到 node 的社群不斷向前邁進,參與者也增加不少的情況,實在是讓人熱血沸騰(無理由自嗨 xDD)既然看到預定功能已經放進 0.7 的分支中,看來 0.8 應該也在不遠處了 :p
PS: 順帶一提,npm 上的 modules 數量也已經超過 9000 個了!大賀!
<blockquote class="twitter-tweet">
<p>
WHAT!?!? 9000!?!!?! <a href="http://t.co/V9QQiDH1">http://t.co/V9QQiDH1</a>
</p>
— npm (@npmjs){' '}
<a href="https://twitter.com/npmjs/statuses/192355502615838720">April 17, 2012</a>
</blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
Comments
Loading comments...