SerenityOS 作者新作品:跨平台 Web 浏览器 Ladybird


SerenityOS 系统的作者 Andreas Kling 近日介绍了他开源的跨平台浏览器项目: Ladybird。

Ladybird 浏览器于今年 7 月 4 日诞生,最初 Ladybird 的开发是作为 SerenityOS 系统的  “ LibWeb”  浏览器引擎调试工具,随后 Andreas 想给它构建一个简单的 GUI 。随着 Ladybird 的不断完善,两个月后,Andreas 发现自己完成了一个 Web 浏览器的大部分开发工作, Ladybird 已经算是一个跨平台的 Web 浏览器。

(Ladybird 浏览器视觉效果)

Ladybird 浏览器基于 SerenityOS 的 LibWeb 和 LibJS 引擎,LibWeb 于 2019 年开始开发,当时被称为 LibHTML ,其 JavaScript 引擎 LibJS 则于 2020 年开发。

基本架构

LibWeb 和 LibJS 都是新的引擎。作者有 Qt 和 WebKit 项目的开发历史,所以从中得到了一些灵​​感,但所有的代码都是新的,浏览器和库用则 C++ 编写。

这是当前浏览器堆栈的粗略细分:

  • 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 进行网络任务,因为在 SerenityOS 之外还没有多进程 RequestServer 系统。同样,Ladybird 目前是单进程的,而 SerenityOS 浏览器是每个选项卡的进程。

完成度:较低

目前 Ladybird  可在 Linux、macOS、Windows (WSL) 和 Android 上运行,但它仍处于开发初期,许多网络平台的功能仍缺失或损坏,需要很长时间才能准备好进行日常浏览。

Ladybird 已经通过了经典的 Acid3 标准测试,它涵盖了一堆基本的 CSS 布局特性和各种 DOM/HTML API。

Acid3 测试是来自Web Standards Project的Web 测试页面,用于检查Web 浏览器是否符合各种Web 标准的元素,尤其是文档对象模型(DOM) 和JavaScript。

但该测试并未涵盖最新 Web 标准及功能,如 CSS flexbox、CSS Gird 等。这就导致它会出现很多布局和兼容性问题。例如用 Ladybird 浏览器浏览 Reddit 页面:

明显看到,还存在很多错位、换行等渲染问题。

 

目前 Ladybird 其 GUI 及引擎代码都在 BSD-2-Clause 许可证下开源,代码托管在 GitHub 上。


相关文章

2022-09-16

地在 Firebase 中与开放生态圈内的工具协同工作,提升跨平台应用开发效率。 今年 Flutter 和 Firebase 协同支持与集成正式进入稳定版,同时 Firebase Crashlytics 也强化功能,帮助开发者根据对真实用户的影响

2022-09-10

uBlock Origin 是一款适用于 Chrome、Firefox 等浏览器的广告/内容拦截扩展程序,其作者 Raymond Hill 近日发布了一款全新的实验性扩展 —— uBO Minus,该扩展目前仅适用于基于 Chromium 的浏览器。 uBO Minus 同样也是一款广告/内容拦截扩

2022-09-05

Web 开发者。他们能够与 WebKit 项目更紧密地合作,以改进浏览器引擎。团队还提到,GitHub 的 API 让他们可以通过对现有基础架构进行相对较小的修改来构建高级的提交前和提交后自动化,并提供一个现代且安全的平台来审查和提

2021-12-01

代码尤其是属于雇主的代码,私自贡献出去,最后被原始作者追究版权或专利,这种事情并不少见。因此,不少基于 Apache 2.0 License 的开源软件,如果没有签署 CLA,则会要求贡献者签署开发者原创证明(Developer Certificate of Origin

2022-07-05

的完整路径  #1549 过滤掉无效文件 #1553 使用工作者插件的 Web 工作者 #1546 为被拒绝的错误正确创建快照  #1567 模拟与基本网址一起使用 #1581 更新公告:https://github.com/vitest-dev/vitest/releases/tag/v0.17.0

2022-07-04

Python Web 框架 Flask 的作者 David Lord 宣布达成了一项重要成就:获得开源维护者白金奖杯 (open source maintainer platinum trophy)。原因是他已处理了项目仓库中的所有 issue 和 PR。据介绍,截至上个月,Flask 的下载次数达到了 7500 万次

2022-09-21

更好的压缩和图像质量。 该文件格式目前在大多数 Web 浏览器中还处于实验性功能。Krita 基金会持续与英特尔、 JPEG-XL 开发人员和 Chrome 开发人员合作,以确保该图像格式的互操作性。 英特尔 CCG 移动爱好者和创作者部门副总

2022-05-21

的使用都够简单,关于性能方面大家可以自己去做测试,作者目前只做了 Linux 平台下的性能测试,目前我的测试结果是 Archttp 最佳,系统是 Debian 11 虚拟机,欢迎大家一起来测试和反馈。 新版本特性: 统一将方法名调整为

2022-07-09

了这些包,则会在被调用时挖掘 Monero币。由于 eazyminer 的作者在源代码中设置了cpu 优先级(eazyminer)为0,因此挖矿进程不会抢占其他进程的已有资源,不容易被察觉。开发者在检查时认为服务器处于正常运行的状态,但挖矿包

2022-01-07

Brave 是基于 Chromium 的一款免费开源网络浏览器,主打隐私保护,其默认设置就会自动阻止在线广告和网站跟踪。Brave Software(Brave 浏览器所属公司)于 2015 年由 Brendan Eich 和 Brian Bondy 联合创立,其中前者是 JavaScript 的创造者

2022-01-17

的方式实现下载。人们可以把 YouTube-DL 看作是一个专门的浏览器,你不会因为可以用它来访问 YouTube 上的音乐视频就禁止 Firefox 浏览器。” Uberspace 的律师指出,这一诉讼的目的是旨在实现某种先例或"fundamental judgment"。成功可

2022-09-24

的 kinetic 能量,微妙的渐变填充也是如此。吉祥物的艺术作品看起来生动活泼”。 与以往一样,除了彩色版本,默认壁纸往往也会提供灰度版本: 用户可以通过 Ubuntu Launchpad 下载这些默认壁纸,其将以4K 和 8K 的分辨

2022-03-25

意浏览,而不必担心设备会受到损害,然而现在每个 Web 浏览器通常都有重大的安全漏洞,下一步的目标是寻找更安全的技术,并推广到 Web 标准中。 更广的加密范围:所有用户通信都应该加密。现在 HTTP 流量的保护技术已接近

2022-09-03

,转换,编辑和分类所有主流格式的电子书。Calibre 是个跨平台软件,可以在 Linux、Windows 和 macOS 上运行。 Calibre 6.4 正式发布,此次更新内容如下: 新功能 Conversion pipeline:在 flattening CSS rules 时添加对 !important 的支持 Co