写点什么

从零开始的新跨平台浏览器:Ladybird 正式起飞

  • 2022-09-14
    北京
  • 本文字数:1396 字

    阅读完需:约 5 分钟

从零开始的新跨平台浏览器:Ladybird 正式起飞

近期,SerenityOS 的发起者 Andreas Kling 在博客中宣布了他最新开源跨平台浏览器项目 Ladybird,Ladybird 浏览器基于 SerenityOS 的 LibWeb 和 LibJS 引擎,LibWeb 始于 2019 年开发,其 JavaScript 引擎 LibJS 则于 2020 年开发。

 

Andreas 写道,他和他的团队不再只是想开发一个基于 Linux 的浏览器,而是想开发一个跨平台的浏览器,“建造一些有朝一日可能对更多人有用的东西”。根据文章末尾的常见问题解答,Ladybird 已经在 Linux、macOS、Windows 和 Android 上运行。

 

浏览器的诞生



Ladybird 浏览器诞生于 7 月 4 日,最初是作为 LibWeb 浏览器引擎调试工具,随后 Andreas 决定继续推进并为它构建一个简单的 GUI 。然而两个月后,Andreas 发现自己使用 Ladybird 完成了一个 Web 浏览器的大部分开发工作,这也让他意识到可以将 SerenityOS 的浏览器引擎”调整为“跨平台浏览器引擎”。

 

基本架构

 

从时间上来看,LibWeb 和 LibJS 都是比较新的引擎。并且 Andreas 有开发 Qt 和 WebKit 项目的经历,从中也吸取了一部分经验。“但所有的代码都是新的”,他在博文中表示,浏览器和库都是用 C++ 编写,并且在 2-clause BSD 许可下是免费的。“没有人可以购买该项目,但欢迎志愿者。毕竟,SerenityOS 不是一个人的表演。这项工作只有在 SerenityOS 社区的支持下才能实现,该社区已经发展到数百名贡献者,并正在帮助开发操作系统和浏览器。”

 

当前浏览器主要组件:

 

  • Ladybird : 选项卡式浏览器 GUI 应用程序

  • LibWeb:Web 引擎,多种标准:HTML、DOM、CSS、SVG,……

  • LibJS:ECMAScript 语言、运行时库、垃圾收集器

  • LibGfx:2D 图形、文本渲染、图像格式(PNG、JPG、GIF,...)

  • LibRegex:正则表达式引擎

  • LibXML : XML 解析器

  • LibWasm:WebAssembly 解析器和解释器

  • LibUnicode:Unicode 支持库

  • LibTextCodec : 文本编码转换库

  • LibMarkdown : Markdown 解析器

  • LibCore:其他支持功能(I/O、日期时间、MIME 数据……)

  • Qt:跨平台 GUI 和网络

 

LibWeb 有一个 Platform 层,Ladybird 在这里为事件循环、计时器、系统字体设置等注入 Qt 支持代码。Ladybird 使用 Qt 进行联网,因为多进程的 RequestServer 系统在 SerenityOS 之外还没有使用。同时,Ladybird 是单进程的,“所有这些都是暂时的,并且会随着时间而改变。”

 

仍处于开发初期

 

Andreas 坦言目前该浏览器仍处于开发初期,许多功能要么根本无法使用,要么存在错误,甚至还需要很长时间才能真正投入日常使用。“我们处于‘让它工作,让它变得更好,让它更快’中的‘让它工作’阶段中,因此,我们现阶段更多地还是在关注正确性和功能支持,而不是优化。”

 

Ladybird 已经通过了经典的 Acid3 标准测试,它涵盖了基本的 CSS 布局特性和各种 DOM/HTML API。但该测试并未涵盖最新 Web 标准及功能,如 CSS flexbox、CSS Gird 等。这意味着,即便在 Ladybird 中浏览最新网站的稳定性正在提高,但仍然会出现很多布局和兼容性问题。

 

例如用 Ladybird 浏览器浏览 Reddit 页面:

 


写在最后

 

传统观点认为,如果没有巨大的资本支出和人力、成本的付出,从头开始构建一个新的浏览器引擎几乎是不可能的,然而,Andreas 正在做的事情似乎反驳了这一观点。

 

同时 Ladybird 的出现,也增加了浏览器和浏览器引擎的多样性,不少开发者表示对此项目的期待,并希望此项目和其他浏览器项目能够成功,“这似乎是一项令人难以置信的艰巨任务,但他们似乎确实有乐观的前景。”

2022-09-14 14:288006

评论

发布
暂无评论
发现更多内容

使用体验 I 早知道 TDesign 支持 AVIF 图片压缩,我就不用为流量和格式发愁啦!

TDesign

前端 图片压缩 图片格式

常用测试策略与测试手段

测吧(北京)科技有限公司

测试发开

从 Dev 和 Ops 视角出发,聊聊 DevSecOps 的 What / Why / How

极狐GitLab

DevOps 安全 DevSecOps 安全左移 安全合规

软件测试/测试开发丨Pytest 自动化测试框架(二)

测试人

软件测试 自动化测试 测试开发 pytest

性能报告 | YMatrix 5.0 对比 Greenplum 超 12 倍性能提升,TPC-H 基准测试报告发布

YMatrix 超融合数据库

时序数据库 测试工具 数据库、

华为阅读发布最新进展,月活用户超1亿,大力发展精品阅读

最新动态

软件测试/测试开发丨Pytest 自动化测试框架(一)

测试人

软件测试 自动化测试 测试开发 pytest

从零学习SDK(8)SDK的集成和部署

MobTech袤博科技

新起点!大数据分布式可视化的 DAG 任务调度系统 Taier 正式发布1.4版本

袋鼠云数栈

开源

数字化转型框架如何搭建?

优秀

数字化转型

白盒的测试方法

测吧(北京)科技有限公司

测试

轻松玩转小程序,这样做让你拥有2亿用户

加入高科技仿生人

小程序 低代码 小程序制作 小程序开发

IPv6常见安全问题

穿过生命散发芬芳

ipv6 三周年连更

算法刷题-单词接龙、矩阵中的最长递增路径、Z 字形变换

共饮一杯无

数据结构 算法 三周年连更

“亮相”欧洲!TDengine 在 KubeCon 与开发者探讨云原生与数据库的技术结合

TDengine

tdengine 时序数据库 KubeCON

今晚直播 | 思码逸陆春蕊:面对研发效能度量落地难点,如何让数据说话?

思码逸研发效能

研发效能

小技巧:如何让 Windows 应用程序在 Parallels Desktop 中启动得更快

互联网搬砖工作者

Kubernetes网络策略之详解

乌龟哥哥

三周年连更

企业级无代码平台,「重塑」软件生产关系

ToB行业头条

重新学习Java线程原语

码语者

Java 线程

数据中心厂商超云加入龙蜥社区,多款服务器完成与龙蜥操作系统适配

OpenAnolis小助手

开源 操作系统 龙蜥社区 CLA 长城超云

什么是全民开发?|概念、技能和优势

草料二维码

低代码 无代码

Backgrounds——为所有人准备的mac动态壁纸,让桌面更生动

互联网搬砖工作者

如何搭建自己的ChatGPT网站,它来了

派大星

ChatGPT

Selenium测试用例如何编写

测吧(北京)科技有限公司

测试

OpenKruise V1.4 版本解读:新增 Job Sidecar Terminator 能力

阿里巴巴云原生

阿里云 开源 云原生 OpenKruise

玩转服务器之Docker篇:10分钟学会搭建 Docker 环境

京东科技开发者

云计算 容器 Docker 镜像 企业号 4 月 PK 榜

户外led电子屏未来发展趋势

Dylan

技术 LED显示屏 户外LED显示屏

舒明:稳定支撑日高峰亿级保单交易,国泰产险的运维创新实践

OceanBase 数据库

数据库 oceanbase

瓴羊quickbi工具免费体验30天,零基础上手企业数据更直观

对不起该用户已成仙‖

从零开始的新跨平台浏览器:Ladybird 正式起飞_开源_闫园园_InfoQ精选文章