WebKit 上周回顾
保持时速 50 英里以上
今年的WebKit 贡献者会议即将召开:下周四开始。贡献者会议是供贡献者讨论 WebKit 未来发展的好机会。
如果您要参加,别忘了准备好演示,如果有任何精彩的内容要展示,并且在 Wiki 上更新您对演讲/黑客马拉松的建议。
新暴露的行为
Joseph Pecoraro 在 Inspector 控制台中显示的错误消息中添加了 列号 。
Allan Sandfeld Jensen 添加了对 mouseenter 和 mouseleave 事件的支持。这些事件默认启用,可在每夜构建版本中进行测试。
- Andy Estes 修复了 Range.getClientRects() 的一个错误。该方法有时会返回选定范围之外行的矩形。
- Andrei Bucur 修改了列表元素顺序的计算方式(<ol>、<li>),使用 DOM 顺序而不是渲染树顺序。这确保了即使在 CSS Regions 等复杂情况下,编号也是正确的。
- Lamarque V. Souza 更新了 WebSocket.send() 的实现,使其符合最新规范。该方法不再返回布尔值来指示操作是否成功。
- HTMLOptionsCollection 的 namedItem 和 name getter 现在按应有方式返回第一个项目。最近规范已更新,Ryosuke Niwa 相应地修改了代码。
- Mihai Tica 添加了 CSS background-blend-mode 的渲染部分。CoreGraphics 的 GraphicsContext 已经支持混合模式,这意味着您已经可以尝试该功能了 :)。它带有前缀,因此请使用 -webkit-background-blend-mode 并结合规范中定义的混合模式。
- Allan 再次更新了 CSS image-rendering。他移除了值 crisp-edges、pixelated 和 -webkit-smooth,并添加了值 -webkit-crisp-edges。这使我们有更大的自由度来跟踪不断变化的规范。
引擎工程
本周有很多性能优化。我无法一一列举,这里列出一些很棒的随机优化:
- Ryosuke Niwa 在苦思冥想了几天后,将渲染新选区的性能提高了 20%。
- Antti Koivisto 和 Andreas Kling 进行了一些更改,以尽可能避免 重新计算样式。
- Roman Zhuykov 做了一个很棒的小 DFG 优化。补充一点背景知识:在 JavaScript 中,双精度浮点数有负零:-0.0,而用补码表示的负整数没有负零。Roman 修改了代码生成,以便在满足某些条件时避免检查负零。
- Oliver Hunt 添加了对 JavaScript Math.imul 的支持,并通过基线 JIT 和 DFG 实现使其运行快速。
正在发生的其他事情
- Simon Fraser 修复了 SVG 像素测试。这是一个非常好的变化,让您自己去发现它有多简单。
- Mikhail Pozdnyakov 对 WebKit 中 C++11 移动语义的使用进行了改进。
- David Kilzer 修复了一些不安全的隐式转换,目标是在 Mac 移植版的 WTF 上启用-Wshorten-64-to-32。
- 仍然需要进行一些 chromium 清理工作。Seokju Kwon 清理了一些脚本。Martin 清理了 skia 引入的死代码。
- Andreas Kling 和我从代码树中移除了不再维护的 wxWebKit 移植版。
- 我移除了不再维护的内存检测代码。
- Kent Tamura 和 Nico Weber 帮助清理了 chromium 中的一些混乱代码。
- Kentaro Hara 一直在审查关于 WebIDL 和代码生成器的补丁。
- 在我弄垮所有 Debug bot 几个小时后,Jessie 没有把我大卸八块。
本周的 WebKitten 是 Christophe Dumez,感谢他在绑定生成器以及WebKit 的 WebIDL 方面做出的出色工作! 看起来我们可能有了新的代码生成器维护者了。
展望未来
- WebKit 贡献者会议。
- WebKit2 很快将使用更多 C++11 特性。