写点什么

Servo:开源嵌入式浏览器引擎

  • 2015-06-01
  • 本文字数:1040 字

    阅读完需:约 3 分钟

嵌入式浏览器引擎可以嵌入其它应用程序,像常规 Web 浏览器一样展示内容,并允许开发者自定义用户体验。Mike Blumenkrantz 是 Enlightenment 的发布经理,同时也是 EFL 工具包的核心开发者。近日,他撰文介绍了由Mozilla 基金会和三星共同推动的开源嵌入式浏览器引擎项目Servo。

许多公司都使用了Web 内容嵌入技术。比如,Rhythmbox、Kate、Eclipse 等流行Linux 应用程序、Microsoft Entourage、Apple Mail for Mac、Adobe 的产品以及Valve 的 Steam 客户端等等。然而,向应用程序嵌入 Web 内容的 API 却很少, WebKit 是最流行的一个。但它的问题是不稳定,开发者经常会因为需要与它的更新保持同步而不得不修改应用程序。 Blink 是 WebKit 的一个分支。它也有稳定性问题,而且只能用于 C++。要解决这些问题,可以使用 Chromium 嵌入式框架(CEF)。该框架基于 Blink 浏览器引擎,但它实现了用户与底层引擎变化的隔离,并提供了基本的 C API 以及 C++ 扩展。目前,Valve 的 Steam 客户端以及 Adobe 的多种产品都使用了该 API。

Servo 浏览器引擎的目标是为开发者提供最大的灵活性。为了实现这个目的,它必须提供稳定的 API 和 ABI 。它使用 Rust 编写,这使它可以提供能够从 C 语言中直接调用的 API。考虑到重新设计一个嵌入式 Web API 非常复杂,比如需要编写大量的文档,测试大量的框架以及大力的推广应用等,所以他们采用了一种不同的方式。

Servo 实现了 Chromium 嵌入式框架的 API。这意味着,正在使用 CEF 的开发者不需要对应用程序做任何修改就可以比较 Blink 和 Servo 引擎的性能,未来的开发者也不需要考虑另外一种浏览器 API。这种实现方式主要包含两个方面的工作:

  • 确保“符号(Symbol)”完全覆盖:Servo 嵌入式库可以钩连每个 CEF 函数调用。同时,任何时候分配的供外部使用的 struct,其大小和成员位置必须与真正的 CEF 所分配的 struct 类似。符号列表可以借助 Linux 工具 nm 取得。
  • 尽可能准确的模拟每个方法调用的功能:这需要完全了解 CEF 的每个函数以及它如何连接到浏览器引擎。

目前,Servo 尚处于起步阶段, 团队还非常小,项目还面临着一些问题,比如借助 CEF 提供的 C++ 扩展跟踪 C API 执行。因此,Mike 希望,感兴趣的开发者能够加入他们。更多信息请查看 GitHub 页面


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-06-01 09:498065
用户头像

发布了 1008 篇内容, 共 421.5 次阅读, 收获喜欢 346 次。

关注

评论

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

协同发展,生态聚合丨1024程序员节暨「源聚一堂」开源技术沙龙(北京站)成功举办

开放原子开源基金会

关于数据库分片你需要知道的

遥遥知识库

Java 分布式数据库 后端 数据库分片 关于XX你应该知道的

得物 Redis 设计与实践

得物技术

redis 架构 运维

挑战吧,HarmonyOS应用开发工程师

HarmonyOS开发者

HarmonyOS

揭示Lombok的代码设计缺陷:探索封装问题

树上有只程序猿

lombok Java 开发

大模型在数据分析场景下的能力评测

Kyligence

数据分析 Kyligence Copilot

​交易所开发 PancakeSwap DeFi 成功的秘密:您的 DEX 发展蓝图

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

如何确定Apache Kafka的大小和规模

互联网工科生

kafka

1024程序员节|是时候,展示真正的实力了!

Openlab_cosmoplat

1024 1024程序员节

2023-10-25:用go语言,假如某公司目前推出了N个在售的金融产品(1<=N<=100) 对于张三,用ai表示他购买了ai(0<=ai<=10^4)份额的第i个产品(1<=i<=N) 现给出K(

福大大架构师每日一题

福大大架构师每日一题

TuGraph Analytics图建模研发:为图计算业务提速增效

TuGraphAnalytics

分布式 图计算 图平台 图研发 图运维

开箱即用!教你如何正确使用华为云编译构建服务CodeArts Build!

华为云PaaS服务小智

云计算 软件开发 华为云 编译构建

1024 有奖征名|来给矩阵起源办公室的新猫取名字呀~

MatrixOrigin

1024 MatrixOrigin MatrixOne

等保测评后还要花很多钱做等保整改吗?

行云管家

等保 等级保护 等保测评 等保2.0

焕新升级!新一代云原生可观测平台

华为云原生团队

云计算 容器 云原生 边缘计算

Op丨ARB链dapp代币合约质押项目系统开发

l8l259l3365

HarmonyOS多音频播放并发政策及音频管理解析

HarmonyOS开发者

HarmonyOS

一文了解企业云盘和大文件传输哪个更适合企业传输

镭速

大文件传输

博睿动态|GOPS全球运维大会2023上海站即将开启!

博睿数据

可观测性

战略牵手OXY精英设计、朗生、MPE美亚,小度合作生态重构再迎重要时刻

新消费日报

出海 SaaS 企业增长修炼手册2:Kyligence 落地 PLG 是如何避坑的?

Kyligence

指标管理 SaaS 增长

如何制作二维码会议签到系统?

草料二维码

多款国产操作系统安装数据库干货文档汇总(含Oracle/MySQL/国产数据库等)

墨天轮

MySQL 数据库 oracle 国产操作系统 麒麟软件

和鲸赞助!第16届中国R会议暨2023 X-AGI大会通知

ModelWhale

机器学习 R 数据科学 X-AGI 统计之都

唱衰PHP?这些言论别太离谱~《PHP综合现状分析报告》来了

禅道项目管理

php

一站式 DB2 数据管理解决方案

NineData

sql 数据 客户端 db2 NineData

Servo:开源嵌入式浏览器引擎_语言 & 开发_谢丽_InfoQ精选文章