跳到主要内容

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,它将与Chrome 84 Stable协调发布,在接下来的几周内处于Beta阶段。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,因为大部分浏览器及其Blink渲染引擎是用C++编写的,而V8嵌入其中。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 分支。每个版本都是从 V8 的 Git 主分支在 Chrome Beta 里程碑之前立即分支出来的。今天我们很高兴宣布我们的最新分支 V8 版本 8.3,该版本在发布前与 Chrome 83 稳定版协调几周内保持 Beta 状态。V8 v8.3 向开发者提供了各种功能改进。本篇文章将预览一些重要功能以期待正式发布。

那个 `.wasm` 文件里有什么?介绍:`wasm-decompile`

· 阅读需 7 分钟
Wouter van Oortmerssen ([@wvo](https://twitter.com/wvo))

我们拥有越来越多的编译器和其他工具来生成或操作 .wasm 文件,有时候您可能会想看看里面的内容。也许您是该类工具的开发者,或者更直接地说,您是针对 Wasm 的程序员,想知道生成的代码是什么样子,出于性能或其他原因。

理解ECMAScript规范,第三部分

· 阅读需 12 分钟
[Marja Hölttä](https://twitter.com/marjakh),推测性规范观察者

所有系列文章

在本篇中,我们将深入了解ECMAScript语言及其语法的定义。如果您对上下文无关语法不熟悉,现在是学习基础知识的好时机,因为规范使用上下文无关语法来定义语言。请参阅《Crafting Interpreters》中的上下文无关语法章节以获得更易理解的介绍,或者查看维基百科页面以获取更数学化的定义。

V8中的指针压缩

· 阅读需 22 分钟
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]]的字段,因此在查看规范时,我们需要仔细区分这两种独立的用法。