王斌,网名龙泉寺扫地僧。作为一个独立开发者,他专注于浏览器内核研究十余年。他主要从事 MiniBlink 项目的工作,旨在创建一个精简且高效的浏览器内核,应对 Chromium 庞大的体积和内存占用问题。
龙泉寺扫地僧在谈及做 MiniBlink 的初衷:源于对现有浏览器内核尤其是 Chromium 庞大体积和内存占用的关注。随着时间的推移,Chromium 的体积从最初的十几兆膨胀到超过200兆,这对于希望将其内嵌到软件中的开发者来说,构成了显著的挑战。这种庞大的体积不仅影响了软件的分发和安装效率,也增加了 CDN 部署等相关成本。尤其是在开发像 Electron 这样基于 Chromium 的跨平台开发框架时,即使是一个简单的 Hello World 应用,也可能需要携带超过200兆的运行时库。
注意到这个现象的龙泉寺扫地僧决定开发一个轻量级、易于集成的浏览器内核,而不是复制 Chromium 的全部功能。MiniBlink 项目的核心在于为软件开发者提供一个既快速又方便集成的浏览器内核解决方案。通过这种方式,他希望避免重复 Chromium 的庞大体积和高内存消耗,同时减少开发者在软件分发和部署上的负担。
所以我现在做的 MiniBlink 相关的工作,我并不是想做一个完整的浏览器内核,而是想把它作为一个可以集成在各个软件之中,让它方便集成的一个内核,但是这样的话我就不会追求像 Chromium 那样完整的实现它所有的功能,因为这样的话一个是工作量会非常庞大,第二个是如果把这些做完了之后,它的那个就和 Chrome 可能差不多,它的大小可能也差不多,那就没什么意义。
在开发 MiniBlink 的过程中,扫地僧提到自己遇到了不少的挑战,技术上,Chromium 的庞大和复杂性是一个巨大的挑战。为了创建一个轻量级的内核,扫地僧不仅要深入理解 Chromium 的内部工作原理,还需要精确识别和去除不必要的模块和功能。此外,对于核心组件如 V8 引擎的重写,不仅需要保证功能的完整性,还要大幅减少资源消耗,这在技术上极为复杂。
在减少内核体积的同时,还需要保证浏览器的性能不受影响。对于网页的渲染速度、脚本的执行效率以及网络请求的处理,都需要细致优化。特别是重写的V8引擎,需要在减小体积的同时,保持高性能的JavaScript执行能力,这是一个难以平衡的挑战。
“我经常碰到这种各种各样的 Bug。大部分 Bug 可能是我自己就是对 Chromium 和 blink 的理解不深导致的。但是也有些 bug,我发现它是后面老版本产生的一些问题。就是 Chromium 它自身也是有一些 Bug 的,然后它最新的版本它会修复。我遇到最难调试的问题还是 V8 里面的问题,因为 V8 它那个我有时候碰到一些崩溃,它连堆栈什么都没有,这时候确实很难很难去调整。现在我如果遇到这种问题的话,我可能会回退版本,把 V8 切换到一些老版本上,看有没有同样的问题,然后一步步定位,具体是我的问题导致的,还是谷歌的代码导致的。用一些小手段来来去调试。”
扫地僧通过不断地探索与尝试,最终开发出一个更小体积、快速启动的浏览器内核,使其更适合跨平台开发。他通过裁剪不必要的模块、重写关键组件,如V8引擎和网络层,大幅减少了最终产品的体积。同时,他还优化了跨进程通信机制,提升了安全性和性能,使得软件的冷启动速度和运行效率得到了显著提高,为轻量级应用的开发打开了新的可能。