2013年9月22日 星期日

重新開發的DBus Module for Node.js

Standard

Stem OS仍持續開發中,最近針對移植到Cubieboard的工作做了很多努力,為了改善穩定性和增加更多功能,我們重新開發了DBus的模組,讓然後直接跳個大版本號到v0.1。但目前仍處於最後測試階段,待穩定後會上傳至NPM,讓任何人都可以使用。有興趣嘗鮮的人,仍可去git repository,從development分支下載回來使用。

新的DBus模組為了縮小footprint,更適合嵌入式應用,避免引入GLib,為了提升效能,也不使用GContext來處理event loop ,而是完全採用純C/C++和libuv來實作。

此外,舊版的模組一直有個問題,就是大多數功能以同步(Sync)方式在執行,也有與非同步(Asynchronous)設計混搭的情況,導致Node.js程式執行上會不順暢,且有嚴重開發邏輯不一致的問題。有鑑於此,在新的實作中,API被重新設計過,全面採用非同步的設計邏輯。為了讓DBus的操作能更貼近JavaScript 的習慣,也模仿EventEmitter的on()和emit()方法去操作Signal。

除了效能和邏輯的改進之外,新的DBus模組支援了同時建立多個connection的能力。這意味著,開發者可以在同一個process上提供多個DBus的服務。利用這個新特色,我們得以減少StemOS系統上常註程式的數量。

最後,需要注意的是,大量的重新設計,讓新模組的API與舊版完全不相容,如你不打算改寫你的程式,就不該升級到v0.1版本。

後記

做了這麼多年OS的東西,各種用途的系統都有不少經驗,但現在仍然覺得到這是個費力又繁複的工作呀。

不過,努力累積成果,搭上Node.js的列車。最後能對人大聲說這是我們自己設計的JavaScript OS,其莫大的成就感將無可替代!