【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

从零开始的新跨平台浏览器: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:283636

评论

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

北鲲云超算平台有哪些形式为高性能计算用户提供算力服务?

北鲲云

架构实战营模块四

WolvesLeader

「架构实战营」

☕【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了!

洛神灬殇

Java 注解 jpa 使用技巧 9月日更

谈谈几种数据库优化方法和依据的指标

Regan Yue

数据库优化 9月日更

【得物技术】MySQL 8.0:新的身份验证插件(caching_sha2_password)

得物技术

MySQL 默认方法 得物技术 身份 身份插件

Postman 如何调试加密接口?

星安果

Postman

阿里P8不眠不休,用了两个月整理出这本32W字Java面试手册,在Github上引起震动

Java 编程 程序员 面试 计算机

绝绝子!LeetCode官网首发的1137页的数据结构与算法刷题指南

Java 编程 程序员 面试 计算机

说要内推阿里的学长,替我整理好的Java面试题,分享给大家

Java spring 程序员 架构 编程语言

有人出15万要买下这份384页JDK源码笔记的版权,但被我果断拒绝,为了大家,我要开源

Java 程序员 架构 面试 计算机

一个Product Owner的假设引发的思考

Bruce Talk

敏捷 随笔 Agile Product Owner

被阿里奉为“座上宾”!2021公认最权威的分布式微服务指导手册

Java 程序员 面试 微服务 计算机

阿里内部神作Java并发原理JDK源码手册让Github沸腾,现已开源

Java 编程 程序员 面试 计算机

终于有人把大厂面试必考的动态规划、链表、二叉树、字符串全部整理出来了

Java 架构 面试 算法 后端

阿里第三版「SpringCloudAlibaba笔记」出世,全新技术限时开源

Java 编程 架构 面试 微服务

SRE实战(01)|初识SRE,探索SRE如何推进技术债务改造

方勇(gopher)

微服务 架构设计 SRE 服务治理 构架

Alibaba2021全新Java高并发终极版手册,现已在Github上标星80K

Java 编程 程序员 面试 计算机

跪了!阿里官方出品Spring Security王者手册,Github获赞70k+

spring 程序员 编程语言

Dubbo3.0|阿里巴巴服务框架三位一体的选择与实践

阿里巴巴云原生

阿里云 云原生 Dubbo3

美团一面:为什么选用Hbase,Hbase和MySQL的区别是什么?

Java MySQL 架构 面试 后端

程序员(媛)不懂汉服?岂能让别人小看,咱先靠肉眼大数据识别万张穿搭照

梦想橡皮擦

9月日更

模块8

Geek_35a345

联机数据分析OLAP:Kylin入门

正向成长

kylin

学生管理系统架构设计文档

Rabbit

"你的网站加载速度很慢怎么办?"——技术经理在面试中可能遇到的可怕问题

云原生

架构 面试 web技术 职业生涯

让项目顺利上线:做好转测试与上线准备

石云升

项目管理 管理 引航计划 内容合集 9月日更

什么是产品感?

吴世亮

产品 产品设计 数字化 产品感 sense

DDD领域驱动设计在团队中推广和实施

AiDaddy

Canvas制作转盘和钢琴

空城机

typescript 大前端 canvas 引航计划

智能世界的罗马是怎样建成的?

脑极体

报名领奖|云栖大会,10月19-22日杭州不见不散!

阿里巴巴云原生

阿里巴巴 阿里云 云原生 云栖大会

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