跳至主要内容

V8 版本 v8.5

· 閱讀時間約 5 分鐘
Zeynep Cankara,追蹤一些地圖

每六週,我們會根據我們的 發佈流程 創建一個新的 V8 分支。每個版本都是在 Chrome Beta 里程碑發布之前,從 V8 的 Git 主分支分出來的。今天我們很高興地宣布我們的最新分支 V8 版本 8.5,該版本目前處於測試階段,幾週後將與 Chrome 85 穩定版同步發佈。V8 v8.5 為開發者帶來了各種實用新功能。這篇文章對即將發布的亮點進行了預覽。

V8 發布 v8.4

· 閱讀時間約 5 分鐘
Camillo Bruni,享受一些新鮮的布林值

每六週,我們會按照 發布流程 為 V8 創建一個新分支。每個版本都是在 Chrome Beta 里程碑之前直接從 V8 的 Git 主線分出。今天,我們很高興地宣布我們最新的分支,V8 版本 8.4,該分支將處於 Beta 階段,直到與 Chrome 84 穩定版協同發布的幾週後完成。V8 v8.4 滿載著各種針對開發者的好功能。這篇文章提供了一些亮點的預覽,以期盼此次發布。

高性能的 C++ 垃圾回收

· 閱讀時間約 10 分鐘
Anton Bikineev、Omer Katz([@omerktz](https://twitter.com/omerktz))及 Michael Lippautz([@mlippautz](https://twitter.com/mlippautz)),C++ 記憶體專家

我們之前已多次撰文討論過JavaScript 的垃圾回收文件物件模型 (DOM)其在 V8 中的實現及優化。然而,Chromium 中並不全是 JavaScript,瀏覽器本身及 V8 所嵌套的 Blink 渲染引擎大多數使用 C++ 編寫。JavaScript 可用於操作 DOM,而後者由渲染管線進行處理。

最多可在 WebAssembly 中使用 4GB 記憶體

· 閱讀時間約 8 分鐘
Andreas Haas、Jakob Kummerow 和 Alon Zakai

簡介

由於 Chrome 和 Emscripten 的近期工作,您現在可以在 WebAssembly 應用程式中使用最多 4GB 的記憶體。這比之前的 2GB 限制有所提升。聽起來可能有些奇怪,記憶體的限制似乎本不應該存在——畢竟,使用 512MB 或 1GB 的記憶體並不需要特別的工作!——但事實證明,在從 2GB 跨越到 4GB 的過程中,無論是在瀏覽器還是工具鏈中,都發生了一些特別的變化,我們將在本篇文章中介紹。

V8 發佈 v8.3

· 閱讀時間約 4 分鐘
[Victor Gomes](https://twitter.com/VictorBFG),在家安全辦公

每六週,我們會按照 發佈流程 創建 V8 的新分支。每個版本都是在 Chrome Beta 版本里程碑之前,從 V8 的 Git 主分支中分支出來的。今天,我們很高興地宣佈我們的最新分支 V8 版本 8.3,它將進入 Beta 階段,直到幾週後與 Chrome 83 穩定版本協同發佈。V8 v8.3 包含了各種對開發者友好的新功能。本文提供了一些亮點內容的預覽。

裡面的 `.wasm` 是什麼?介紹一下:`wasm-decompile`

· 閱讀時間約 7 分鐘
Wouter van Oortmerssen ([@wvo](https://twitter.com/wvo))

我們有越來越多的編譯器和其他工具生成或操作 .wasm 文件,有時您可能想要看看其內部結構。也許您是此類工具的開發者,或者更直接地說,您是一個面向 Wasm 的程序員,並想了解生成的代碼模樣,這樣做是出於性能或其他原因。

瞭解 ECMAScript 規範,第 3 部分

· 閱讀時間約 11 分鐘
[Marja Hölttä](https://twitter.com/marjakh),推測規範觀察者

所有集數

在這一集中,我們將更深入地探討 ECMAScript 語言及其語法的定義。如果您不熟悉上下文無關文法,那麼現在正是了解基礎知識的好時機,因為規範使用上下文無關文法來定義語言。請參閱《Crafting Interpreters》中關於上下文無關文法的章節以獲得易於理解的介紹,或者查看維基百科頁面以獲得更數學化的定義。

V8 中的指針壓縮

· 閱讀時間約 21 分鐘
Igor Sheludko 和 Santiago Aboy Solanes, *指針壓縮者

記憶體和效能之間總是一場持續的鬥爭。作為使用者,我們希望事情既快速又盡可能少地消耗記憶體。不幸的是,通常提升效能會以增加記憶體消耗為代價(反之亦然)。

理解 ECMAScript 規範,第2部分

· 閱讀時間約 11 分鐘
[Marja Hölttä](https://twitter.com/marjakh),推測規範觀察員

讓我們來多練習一些我們驚人的規範閱讀技巧。如果你還沒看過上一集,現在是個好機會!

所有篇章

準備好進入第2部分了嗎?

了解規範的一個有趣的方法是從我們已知的 JavaScript 功能入手,找出它是如何被規範定義的。

警告!本集包含來自 ECMAScript 規範(截至 2020 年 2 月)的複製粘貼算法,最終它們可能會過時。

我們知道屬性會在原型鏈中查找:如果一個物件沒有我們試圖讀取的屬性,我們會沿著原型鏈往上找到它(或找到一個不再有原型的物件)。

例如:

const o1 = { foo: 99 };
const o2 = {};
Object.setPrototypeOf(o2, o1);
o2.foo;
// → 99

原型鏈的查找定義在哪裡?

讓我們嘗試找出這種行為的定義位置。一個不錯的起點是 物件內部方法清單

這裡既有 [[GetOwnProperty]] 也有 [[Get]] ——我們關心的是不限於 自有 屬性的版本,所以我們選擇 [[Get]]

不幸的是,屬性描述符的規範類型 也有一個名為 [[Get]] 的欄位,因此在瀏覽規範時,我們需要小心區分這兩種不同的用法。