【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

评论

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

Deel、Whatnot、Nowports,YC 净收入最高公司生意秘诀

B Impact

基于Hologres向量计算与大模型免费定制专属聊天机器人

阿里云大数据AI技术

人工智能 hologres

Hello,Vector DB|可能是最易上手的 Faiss 教程

Zilliz

Faiss Milvus Zilliz 向量数据库 zillizcloud

2023-07-25:你驾驶出租车行驶在一条有 n 个地点的路上 这 n 个地点从近到远编号为 1 到 n ,你想要从 1 开到 n 通过接乘客订单盈利。你只能沿着编号递增的方向前进,不能改变方向 乘

福大大架构师每日一题

福大大架构师每日一题

Coral Finance 将为 Zepoch 节点空投,Nautilus生态空投季开启

BlockChain先知

海量数据×桂林银行 | 满足金融用户稳健周密需求,做好国内数据库演进的实践担当#openGauss

daydayup

openGauss数据库荣获中国计算机学会(CCF)科技成果特等奖

daydayup

Nautilus Chain:主权模块化区块链的早期实践

西柚子

openGauss 开源社区再次入选“科创中国”开源创新榜

daydayup

Burp Suite 几个基本工具的使用

QE_LAB

渗透测试 测试工具 安全测试

TypeScript 玩转类型操作之字符串处理能力

小乌龟快跑

JavaScript typescript 类型推断

使用show effective grants查看权限

GreatSQL

greatsql greatsql社区

海量数据×桂林银行 | 满足金融用户稳健周密需求,做好国内数据库演进的实践担当 openGauss

daydayup

运用事件与定时器实现字幕滚动效果(Qt开发)

智趣匠

openGauss数据库源码解析系列文章——事务机制源码解析(三)

daydayup

数字化转型与架构-规划篇|殊途同归的解决方案框架

数字随行

数字化转型

年内实现全面自动驾驶?快来恶补一下自动驾驶技术吧!

博文视点Broadview

Java中的JDBC的使用方法有哪些?

java易二三

Java 编程 程序员 计算机

出海新模式:从蔚赫信息收购德国博世LABCAR HiL 技术看如何通过海外IP并购实现全球化布局

千流出海

千流出海

openGauss数据库源码解析系列文章——事务机制源码解析(四)

daydayup

openGauss数据库源码解析系列文章——事务机制源码解析(一)

daydayup

Oracle单表数据量大的优化思路

zhengzai7

oracle 分区

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

openGauss加入 CNCF Landscape

daydayup

Ubuntu 18.04系统编译安装Redis教程。

百度搜索:蓝易云

redis 云计算 Linux ubuntu 运维

UE像素流送是什么?像素流推流原理介绍

3DCAT实时渲染

云流化 实时渲染云

Ubuntu 18.04系统编译安装Memcached教程。

百度搜索:蓝易云

memcached 云计算 Linux ubuntu 运维

提示工程101|与 AI 交谈的技巧和艺术

SEAL安全

人工智能 AI LLM 提示工程 企业号 7 月 PK 榜

Java Web应用开发案例|使用监听器统计Web站点的在线用户数

TiAmo

Java web 用户统计 开发案例

从电商指标洞察到运营归因,只需几句话?AI 数智助理准备好了!

Kyligence

数据分析 数智助理

Docker学习路线11:Docker命令行

小万哥

Java c++ Python Go Docker

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