WebKit 上周回顾
页面,你还在吗?
WebKit 忙碌的一周又过去了。重构的热潮正在平息,人们正专注于让 WebKit 变得快速且坚如磐石。
新行为
本周一个重要的变化是 Simon Fraser 取消了 Page Visibility API 的前缀。如果你想尝试,该功能已在 WebKit Nightly 构建版本中启用。
网页的一些其他变化和有趣的 Bug 修复
- Filip Pizlo 在 DFG 中修复了 !(0/0)。如果你像我一样好奇这个表达式会计算出什么,0/0 在 JavaScript 中是 NaN,而 !NaN 是 true。
- Filip 另一个有趣/奇怪的修复是关于 (-2^31/-1)|0 的求值。
- Robert Hogan 修改了 当存在浮动对象时,设置了 nowrap 和 text-overflow: ellipsis 的文本布局方式。之前,行宽计算到浮动对象为止,这对于 nowrap 是不正确的。现在,行将延伸到容器的末端,并且省略号会相应地计算。这种行为不是特别有用,但至少与没有省略号的情况一致,并且遵循规范(并与 Firefox 的行为一致)。
- Mihai Tica 更新了背景混合(background blending)的实现,使其符合最新的规范。之前,混合操作是与元素下方的像素进行的,现在混合只应用于当前渲染图像下方背景颜色和背景图像。
- Claudio Saavedra 继续他在 CSS 变量方面的工作。本周,他确保了在使用 CSS 变量时使用的 前缀是“-webkit-var“(之前不区分大小写,“-WebKit-var”也可以定义变量)。变量名称本身仍然区分大小写。
引擎工程
和往常一样,本周有性能改进。其中包括一些
- Mark Rowe 修改了 WebProcess 标志,以便在进程抑制结束后提高响应能力。
- Simon Fraser 改进了新版 Flickr 网站的滚动性能。这是一个有趣的案例:当一个帧中有带有固定背景图像的元素时,引擎需要使用较慢的滚动模式来在每一帧上重绘图像上的内容。Flickr 遇到了一个 Bug,WebKit 没有检测到带有固定背景图像的元素何时从文档中移除,因此一直停留在较慢的模式。
- Ádám Kallai 为 Qt 启用了 JavaScriptCore 的并行垃圾回收器。这将显著提升 QtWebKit 上的 JavaScript 性能。
除了性能改进和 Bug 修复外,还有一些架构方面的变化。
- Andreas Kling 正在 重构 Node 和 Element,以理清这两个类之间的职责。
- 黄雪晴 修复了 Windows 移植版的剪贴板代码,并将其迁移到了 Darin 上周完成的新基础设施。
本周的 WebKitten 是 Simon Fraser,因为推动了 Page Visibility API 的去前缀化(并让 Flickr 滚动变得超级快)。