龙泉寺扫地僧:十年坚持打造轻量级浏览器内核

王斌,网名龙泉寺扫地僧。作为一个独立开发者,他专注于浏览器内核研究十余年。他主要从事 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引擎和网络层,大幅减少了最终产品的体积。同时,他还优化了跨进程通信机制,提升了安全性和性能,使得软件的冷启动速度和运行效率得到了显著提高,为轻量级应用的开发打开了新的可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/493030.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10个你必须知道的浏览器指纹检测工具,保护你的隐私安全

在当前的数字时代,个人隐私保护变得越来越重要,特别是对于互联网用户来说。有一种叫做“浏览器指纹”的技术,它能悄悄收集我们使用的浏览器和设备的各种细节信息。这本是为提供个性化服务,但对那些需要在不同平台同时管理多个账号…

11.数据库技术(下)

1.select语句 中括号表示可有可无; 尖括号表示变量名; 分组后再筛选,用having;分组前筛选,用where; select后跟随的所有列,除聚集函数外,都需要列在group by后; 注&…

【比特币】比特币的奥秘、禁令的深层逻辑与风云变幻

导语: 比特币(Bitcoin),这个充满神秘色彩的数字货币,自诞生以来便成为各界瞩目的焦点。它背后所蕴含的Mining机制、禁令背后的深层逻辑以及市场的风云变幻,都让人欲罢不能。今天,我们将深入挖掘比特币的每一个角落&…

HarmonyOS应用/元服务发布流程

在发布HarmonyOS应用/元服务前,建议您在本地进行调试,以查看和验证应用/元服务运行效果,减少发布过程中可能遇到的问题。 华为支持您使用HUAWEI DevEco Studio自动化签名的方式对应用/元服务进行调试,总体流程如下。 配置签名信息…

蓝桥杯练习系统(算法训练)ALGO-967 共线

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 给定2维平面上n个整点的坐标,一条直线最多能过几个点? 输入格式 第一行一个整数n表示点的个数   …

c语言--跳出continue、break

C 语言中的 continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。 对于 for 循环,continue 语句执行后自增语句仍然会执行。对于 while 和 do…while 循环,continue 语句重新…

CI860K01 3BSE032444R1 参数说明书

ABB CI860K01 3BSE032444R1是一款ABB公司生产的通信接口模块。 这款模块是专为工业自动化环境设计的,能够在各种设备之间提供稳定和可靠的数据传输接口。它采用了先进的通信技术和严格的生产工艺,确保了产品的高质量和性能。此外,它的设计合…

antdp | 菜单展示-菜单路由配置

扩展的路由配置 Layout 插件会基于 umi 的路由,封装了更多的配置项,支持更多配置式的能力。新增: 侧边栏菜单配置布局路由级别展示 / 隐藏相关配置与权限插件结合,配置式实现权限路由的功能 示例如下: //config/rou…

抗干扰段码屏驱动芯片/ LCD液晶屏驱动/仪器仪表液晶驱动IC-VK1C21D/DA FAE支持

产品型号:VK1C21D/DA 产品品牌:永嘉微电/VINKA 封装形式:SOP28/SSOP28 可定制裸片:DICE(COB邦定片);COG(邦定玻璃用) 工程服务,技术支持! 概述: VK1C21D/DA是一个点阵式存储映射…

PTA金字塔游戏

幼儿园里真热闹,老师带着孩子们做一个名叫金字塔的游戏,游戏规则如下: 首先,老师把孩子们按身高从高到矮排列,选出最高的做队长,当金字塔的塔顶,之后在其余小朋友里选出两个最高的,…

【基于HTML5的网页设计及应用】——当前日期

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

串口IAP介绍

一、STM32编程方式 (1)在线编程(ICP,in circuit programming) 系统存储器:留给ST写启动程序代码,启动程序代码通过串口1接口实现对闪存存储器的编程。 (2)在程序中编程…

Python接口自动化pytest框架安装

1、创建一个requirements.txt文件夹 2、输入内容:如下图 pytest pytest-html pytest-xdist pytest-ordering pytest-rerunfailures pytest-base-url allure-pytest3、在terminal中输入安装命令:pip install -r requirements.txt 安装成功 4、在termina…

飞书很好,但赢不了,只能裁员

心碎飞书 3 月 26 日,字节跳动旗下产品飞书的 CEO 谢欣发布全员信,正式宣布进行新一轮的组织调整,即裁员。 内部全员信如下: 我有不少朋友是在字节跳动,甚至就在 Lark 的。 同时我也因为会经常和一些平台的运营小伙伴有…

Kimi 200万字爆火,通义加码1000万,阿里笑而不语

关注卢松松,会经常给你分享一些我的经验和观点。 我怎么感觉Kimi是一个“网红”产品呢?在没有任何预兆情况下,国产AI大模型Kimi突然爆火,最近我在很多平台上看到了Kimi的广告,感觉到处都在吹这个产品。 看见上面的新闻了吧&a…

抓包工具charles修改请求和返回数据

数据篡改的主要使用场景: (1)mock场景,mock入参和返回值参数,实现mock测试 (2)安全测试,对于支付金额等比较重要的字段,可以修改请求参数来进行安全测试 1.首先选择要…

2024春招小红书前端面试题分享

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

DNS协议 是什么?说说DNS 完整的查询过程?

一、是什么 DNS(Domain Names System),域名系统,是互联网一项服务,是进行域名和与之相对应的 IP 地址进行转换的服务器 简单来讲,DNS相当于一个翻译官,负责将域名翻译成ip地址 IP 地址&#…

表格中的状态类型值(tag)

一&#xff1a;数字转换为简单的中文值 ** 不用转换直接用find()方法&#xff1a;在statusList里找&#xff1b; **lastHandleCode是对应的获取到的每行数据的code值&#xff1b; vue: <el-table-column label"执行状态" align"center"><templat…

MBR分区挂了机器起不来的两种方法解决方法

当MBR分区挂了机器起不来&#xff0c;可以试试下面的两种方法 场景1&#xff1a;开机启动&#xff0c;起不来&#xff0c;发现MBR挂了&#xff0c;但分区表还在 实验方法&#xff1a; 破坏mbr引导 MBR:44864分区表数据512bytes 首先模拟MBR损坏 然后重启&#xff0c;可以看到…