io.js 3.0發布:重寫Buffer,支持PPC

jopen 9年前發布 | 14K 次閱讀 io.js

 

為了利用JavaScript語言構建和運行大規模網絡應用及服務, Node.js 項目在2009年被提出。其后,該項目創始人Ryan Dahl加入 Joyent 公司,專職負責Node.js項目的研發。從2010年到2013年,Node.js快速發展,大約每個月發布一個小版本。然而,經過了 Gatekeeper的更迭,Node.js項目從2014年開始貢獻頻率開始下降,其1.0版本也遲遲未能發布。2014年12月,多位重量級 Node.js開發者另外創建了 io.js ,試圖利用 V8 JavaScript引擎 實現新的特性,從而替代Node.js。io.js的社區非常活躍,促使其發展速度很快,先后于2015年1月和5月份發布了1.0和2.0版本。近期,io.js在同意與Node.js合并之后,又獨立發布了一個大的版本—— 3.0版本 。接下來,本文就io.js v3.0的主要更新進行介紹。

  1. buffer方面。新版的io.js在buffer方面的更新較多。首先,該版本在V8 uint8Array的基礎上重新實現了Buffer。盡管在重新實現過程中,相關設計師已經盡量減少其對性能的影響,Buffer實例化仍然要一定程度的變慢。具體性能影響根據Buffer在應用程序內使用的情況而不同。目前,Buffer可以接受ArrayBuffer作為一個構造函數的參數。當單個的buffer傳給Buffer.concat()時,一個新的拷貝Buffer而不是原本的Buffer將會被返回。
  2. 編譯方面。新版的io.js的內核中添加了PPC支持,使得基于pLinux BE和LE的編譯變得可能。
  3. dgram方面。當socket.send()發生錯誤,而且提供callback時,錯誤信息只是作為callback的第一個參數進行傳輸。
  4. freelist方面。未編檔的freelist內核模塊將會被拒絕。
  5. http方面。狀態代碼目前使用官方的 IANA名字 作為每個 RFC7231 。例如,http.STATUS_CODES[414]返回'URI Too Long',而不是'Request-URI Too Large'。此外,在一個HTTP代理中調用.getName()將不再返回一個trailing colon;HTTPS代理也不再返回一個額外的colon。
  6. node方面。NODE_MODULE_VERSION調整到了45,以反映ABI中的break。而且,node中引入了新的 process.release對象,其包含了一個設置為'io.js'的name屬性。而且該對象的sourceUrl、headersUrl和 libUrl屬性包含了指向相關資源的URL。與io.js綁定在一起的node-gyp版本下載和使用來自iojs.org的header文件包。
  7. repl方面。永久的歷史記錄修改為默認處于使能狀態。歷史記錄的文件位于~/.node_repl_history。該位置可以通過新的環境變量NODE_REPL_HISTORY來進行重新定位。而且,文件的格式修改為了純文本類型,方便文件崩潰時進行處理。
  8. smalloc方面。由于V8的變化,smalloc不再提供API。因此,smalloc模塊在新的版本中被移除。
  9. tls方面。該版本為TLS會話密鑰rotation添加了server.getTicketKeys()和server.setTicketKeys()兩個方法。
  10. V8 JavaScript引擎方面。該版本io.js使用的v8引擎升級到了4.4.63.26版本。這樣,一些ES6的特性(如使用--harmony- rest-parameters和--harmony-spreadcalls命令行標志可以在staging分別實現rest參數和spread操作符等)就可以被支持。

從以上可以看出,作為io.js的一個較大的更新版本,v3.0在多個方面進行了更新。據透露,Node.js和io.js未來將會 合并 發布新的4.0版本。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!