Firefox 31釋出,包含了ECMAScript 6的新特性

infoq發表於2014-08-13

  Mozilla釋出了Firefox 31。這個版本包括了ECMAScript 6的新特性、惡意檔案檢測以及為遊戲開發者提供的一些新特性。

  ECMAScript 6是ECMAScript標準的下一個版本,代號“Harmony”或“ES.next”。在文章《Firefox 31開發者指南》中,Mozilla團佇列出了JavaScript方面的更新。這些改動是根據ECMAScript 6特性的更新而做出的。包括:

  • 新的陣列內建函式:Array.prototype.fill(),這個函式將使用一個靜態值填充指定範圍的所有陣列元素。這個範圍由一個開始索引和一個結束索引給出。
  • 新的數學函式:Math.clz32()返回一個數值,表示當一個數字用32位2進製表示時開頭0的個數。
  • 新的字串內建函式:String.prototype.normalize(),對於Firefox桌面版可用。它將返回一個給定字串的Unicode標準化形式(如果給定的不是字串,它將先被轉成字串,然後再進行Unicode標準化)。
  • 新的物件方法Object.setPrototypeOf(),將指定物件的原型(即物件中的[[Prototype]]屬性)設定為另一個物件或null。
  • 新的數字常量:Number.MAXSAFEINTEGER表示JavaScript中最大的可用整數;Number.MINSAFEINTEGER表示JavaScript中最小的可用整數。

  關於Firefox已經支援的ECMAScript 6的特性,可以在這裡找到一份詳細的列表。

  除了JavaScript的更新,新的Firefox 31發行版也對開發者工具進行了改進,包括頁面控制檯(Web Console)中預設啟動警告、網路監視器(Network Monitor)中提供“copy as cURL”命令(把網路請求轉換成cURL命令並儲存到剪下板中,這樣你就可以用命令列的方式傳送這個請求),以及“保持網路監視器日誌的選項”。

  Mozilla在《Firefox 31開發者指南》的後半部分進行了詳細闡述:

預設情況下,網路監視器將顯示一個列表,包含了載入當前頁面時所有的網路請求。列表中每一行顯示一個請求。

當你瀏覽一個新頁面或者重新整理當前頁面時,網路監視器將清除上一次的列表內容。從Firefox 31開始,為了使網路監視器不執行清除操作,你可以在配置中勾選“開啟保持日誌(Enable persistent logs)”選項。

  Firefox 31也帶來了新的惡意檔案檢測功能。MozillaWiki對這個特性給出了高度的概括

無論何時,當一個二進位制檔案完成下載後,user-agent會進行本地查表,以判斷是否是惡意檔案。對於Windows,如果本地查表沒有結果,user-agent可能會執行一次遠端查表。

當一個二進位制檔案完成下載後,user-agent會提取檔案的一些後設資料,包括:

  • 下載檔案的目標URL、引用URL以及重定向鏈中的任何URL。
  • 通過SHA-256演算法對檔案內容進行計算得到的雜湊值。
  • 任何通過Windows Authenticode API獲得的證照驗證資訊。
  • 檔案長度。
  • 下載時推薦儲存的檔名。

通過使用這些後設資料,user-agent在一個阻止列表中進行查詢。如果下載是允許的,它還會檢查一個允許列表。如果這個二進位制檔案被簽名了,那麼簽名資訊會和允許列表中的進行核對。

如果在阻止列表中被匹配,user-agent將不會儲存這個檔案。如果在允許列表中被匹配,user-agent可能會認為這個二進位制檔案是可信的,並跳過遠端查表的過程。如果沒有匹配,且這個二進位制檔案沒有簽名,user-agent可能會通過應用信譽服務(application reputation service)進行一次遠端查表。

  Firefox 31的惡意檔案檢測特性在開發者社群引發了討論。一個匿名使用者在Slashdot上發表了一篇名為《Firefox 31釋出》的文章,評論到:“'對下載檔案進行惡意檔案檢查和阻止'是對隱私的嚴重侵犯。它工作時幾乎把每個下載檔案的URL都傳送給Google。”

  在Hacker News上關於FireFox 31的討論中,也可以看到類似的觀點。

  使用者 TheCraiggers 評論到

我擔心這所牽涉到的隱私問題。尤其是這個特性是隱藏的,並且只有兩種方法關閉它。而其中一種需要進入到about:config。大多數人甚至都不知道about:config的存在。如果我沒有讀改動日誌的話,我甚至不知道這個檢測一直在執行著。

  需要注意的是,在7月23日,Mozilla安全與隱私部門的高階工程經理Sid Stamm,釋出了一篇題為《Firefox惡意檔案檢測特性的改進》的文章。這篇文章介紹了惡意檔案檢測這個特性,並給出了關閉這個特性的操作步驟。完整的文章可參考MozillaWiki這裡

  Stamm告訴InfoQ:

任何時候,安全瀏覽會把相關資料傳回Google。比如一個可疑的釣魚網頁或者惡意檔案。這些資訊只是用來標記惡意行為,並且只在Google內部使用。兩週後,除URL外的其他資訊,如你的IP地址,將被刪除。

  除了關心隱私方面的問題,Firefox 31發行版帶來了另一些特性。在文章《為HTML5遊戲開發者提供的資源》中,Mozilla的Hack團隊對這些特性進行了描述。他們將這些特性描述成“將幫助HTML5遊戲開發者編寫和除錯更高階的遊戲。”

  在Firefox開發者工具的眾多改進中,包括了對以下工具的更新:JavaScript偵錯程式、樣式編輯器、頁面檢視器(Page Inspector)、程式碼片段速記器(Scratchpad)、分析器(Profiler)、網路監視器和頁面控制檯。

  其他值得關注的改進還包括往瀏覽器中加入了一個Canvas偵錯程式(Canvas Debugger)。Mozilla的Hack團隊介紹到:

Canvas偵錯程式允許你對所有畫布中的呼叫進行跟蹤。這些呼叫用於生成一幀畫面的內容。特定的呼叫按不同的顏色顯示,比如繪畫元素或使用指定的著色器。

偵錯程式不僅能用於開發基於WebGL的遊戲,也能用於除錯使用Canvas 2D開發的遊戲。

當使用Canvas偵錯程式時,最常被報告的兩個問題是:在生成動畫時,使用setInterval代替requestAnimationFrame檢查一個iFrame中的畫布元素

  關於Canvas偵錯程式的更多資訊,開發者可以閱讀《Firefox開發者工具中Canvas偵錯程式的介紹》。關於Firefox 31改動的完整清單,使用者和開發者可通過這裡的釋出記錄獲取。

  InfoQ讀者可通過多種方式為Firefox貢獻力量,而且Mozilla歡迎這些想成為專案中一員的新人們。詳細資訊可以在Mozilla開發者網路上獲取。另外,開發者網路上也有一些關於如何做的指南。

  英文原文:Firefox 31 Released; Includes New ECMAScript 6 features 翻譯:潘瑾瑜

相關文章