Blink: Chromium的新渲染引擎
编自http://www.chromium.org/blink
关于blink
尽管上面一众经常被统称为 WebKit,实际上各自都使用了自己的 WebKit 分支或者编译时选项,使得最终的渲染结果也是存在一定的差异的。不过大体上 WebKit 社区内部还是比较和谐的,各个成员之间也为维持兼容性作出了努力,直到 2010 年随着 OS X Lion 一起面世的 WebKit2。由于 WebKit2 在 WebCore 层面上实现的进程隔离在一定程度上与 Google Chrome/Chromium 自己的沙箱设计存在冲突,故 Google Chrome/Chromium 一直停留在 WebKit,使用 Backport 的方式实现和主线 WebKit2 的兼容。显而易见这增加了 WebKit 和 Chromium 的复杂性,且在一定程度上影响了 Chromium 的架构移植工作。
基于以上原因,Google 决定从 WebKit fork 出自己的 Blink Web 引擎:
现阶段以精简内部结构为主,将删除大约 7000 个文件和 450 万行 WebKit2 兼容代码。
未来将着重改善 DOM 架构,将使用 JavaScript 实现 DOM。
提升安全性,实现进程外 iframes 。
对于今年初宣布放弃自有渲染引擎跟随 Chromium 的 Opera 来说,其开发者也立刻发布博客公告 Opera 亦将切换至 Blink 引擎。
[1]
数据,Chrome 浏览器目前是台式机最常用的浏览器之一。而根据Statcounter的统计,Chrome 浏览器目前是台式机最常用的浏览器。NetMarketShare统计的是访客数量,而Statcounter只统计点击量。如果谷歌的新战略不成功,Chrome 浏览器的统治地位或将不保。
Blink 的架构变化
当chrome项目开始时,我们的目标是尽可能少的改动Webkit,易于同webkit的代码合并。
对于blink我们兴奋于创建一个更大的架构灵活性的代码,而无需担心其他webkit的用户。
我们计划增加一个 “out-of-process iframes”, 这将使chromium能够分离页面中一个独立的部分到一个分离的沙箱进程。
实现这一点需要大量改动webkit关于iframe的处理。
另外一个例子,我们将修复网络代码,让它更小更快。目前webkit中的网络代码受限于老的mac webkit API,而且不能改变。
chromium已经在其周边工作了很多年,但是这些周边的工作易碎而且bug很多。
在Blink中,我们将使用新的网络代码,而无需强制和其他webkit用户统一。
最后,我们甚至希望将整个DOM树用javascipt来实现。这将使javascript访问更加迅速。但是这需要大量重写Webkit DOM部分的实现。这也是Webkit同时支持两个javascript引擎更近困难。
我们考虑的其他的一些改变
- 让WebCore支持多进程历史(当前,它假定同一个进程同步历史)
- 删除Widget 树(Mac Webkit1的一个约束)
- 分离WebCore到不同模块
- 将直接使用沙箱平台的API,替代目前WebCore/Platform
- Establish a simpler, stricter tree-gardening system that does not require 2 full time engineers per day (这句看不懂,谁能帮我翻译下?谢谢了)
- 尝试将DOM 移动到JS的堆上
- 增加多核复用(如 html 解析,style 引擎和javascript解析)
- 移除DOM中模糊不清的部分和因为向后兼容而引起的模糊不清部分,或者移除不必要的兼容性
- 使用现代的、更快的tcmalloc(google编写的多线程内存分配软件,替代malloc)来贯穿 Mac chrome
- 尝试并行布局
- 通过移除ScriptValue/ScriptState抽象来避免内存泄漏
- 使用WebIDL来替代WebKitIDL,并移除Javascript绑定代码
- 通过DOM3 Events/[DOM]UI Events提上WebCore速度
Blink: Chromium的新渲染引擎的更多相关文章
- 新渲染引擎、自定义设计和高质量用户体验的样例应用 Wonderous 现已开源
探索世界奇观,并体验 Flutter 的强大之处. Flutter 的愿景是让你能够在空白画布上绘制出不受限制的精美应用.最近,通过与 gskinner 团队的通力合作,我们打造了一个全新的移动应用 ...
- 【repost】浏览器内核、渲染引擎、js引擎
[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具[2]常见引擎 渲染引擎: firef ...
- 浏览器内核、渲染引擎、js引擎
[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具 [2]常见引擎 渲染引擎: fire ...
- 【转】浏览器内核、渲染引擎、js引擎
[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具[2]常见引擎 渲染引擎: firef ...
- BOM 浏览器对象模型_渲染引擎_JavaScript 引擎_网页加载流程
1. 浏览器核心的两个组成部分 渲染引擎 将网页代码渲染为用户视觉可以感知的平面文档 分类: Firefox Gecko 引擎 Safari WebKit 引擎 Chrom ...
- 浏览器内核、渲染引擎、JS引擎简介
一.定义 浏览器内核分成两部分:渲染引擎和JS引擎. 由于JS引擎越来越独立,浏览器内核 就倾向于 单指 渲染引擎. 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具.(说白了,就是按照 ...
- Chromium硬件加速渲染的UI合成过程分析
在Chromium中.Render端和WebGL端绘制出来的UI终于是通过Browser端显示在屏幕上的.换句话说.就是Browser端负责合成Render端和WebGL端的UI.这涉及到不同Open ...
- Outlook HTML渲染引擎
OutLook始终不离不弃 是不是很讨厌为Email代码兼容Outlook? 太遗憾了!虽然光都有尽头,但Outlook始终存在. 为了应付Email的怪癖,我们花了很多时间测试,确保我们搞定了所有O ...
- [比较老的文章]三维渲染引擎 OGRE 与 OSG 的比较综述
1 .引言随着计算机可视化.虚拟现实技术的飞速发展,人们对实时真实感渲染以及场景复杂度提出了更高的要求.传统的直接使用底层图形接口如OpenGL.DirectX开发图形应用的模式越来越暴露出开发复杂性 ...
随机推荐
- Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置
接博文<Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)>.上篇博文中,仅简单介绍使用串口的Kgbd的流程(kgdboc方式),本文将重点介绍KGDB调试Linux内核的原 ...
- 【菜鸟看框架】——EF怎样自己主动生成实体
引言 在上一篇博客中给大家介绍了一些关于EF框架的基本知识.让大家对实体架构算是有了一个入门的认识,当然知识 这一篇博客是不能非常清楚的理解实体架构的内涵的.我们须要在实践中自己去不断的研究和探索当中 ...
- 让自己的软件实现拖拽打开文件(使用WM_DROPFILES消息和DragQueryFile函数)
//声明 protected procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES; //实现 procedure TForm ...
- 13年7月13日CF练习 Codeforces Round #147 (Div. 2)
这场div2可以说是我见过的比较水的一场吧.基本都是一眼题. 比赛地址http://acm.bnu.edu.cn/bnuoj/contest_show.php?cid=1836 题号是237A-237 ...
- _tcscat在Debug和Release根据问题
背景: 因此,例如,在下面的代码段,作用是得到的路径当前程序(C:\work\A.exe),然后"A.exe"拆除,组装的"C:\work\inject.dll" ...
- birkenfeld / sphinx-contrib — Bitbucket
birkenfeld / sphinx-contrib — Bitbucket README for sphinx-contrib This repository contains a collect ...
- spring MVC拦截器01
spring MVC拦截 作用:身份校验,权限检查,防止非法訪问. 场景:一个bbs系统,用户没有登录就无法发帖或者删除评论; 一个博客系统,没有登录就无法发表博文,无法添加分类,无法删除博文. sp ...
- no copy constructor available or copy constructor is declared 'explicit'
今天新写了一个类.然后对这个类使用STL中的vector,碰到错误: no copy constructor available or copy constructor is declared 'ex ...
- C++操作符operator的另一种用法
http://blog.csdn.net/memewry/article/details/7833314 参考地址 今天在程序员面试宝典上看到这样一道题目: A C++ developer want ...
- hdu1160(最长上升子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 题意:给定一些小猫的属性:体重和速度.然后求某些猫顺序的排列,使得体重上升,速度下降,这样的排列 ...