Servo 是一个 Web 浏览器引擎的原型,使用 Rust 语言开发,当前基于 OS X 和 Linux 开发。
Servo浏览器引擎的目标是为开发者提供最大的灵活性。为了实现这个目的,它必须提供稳定的API和ABI。它使用Rust编写,这使它可以提供能够从C语言中直接调用的API。考虑到重新设计一个嵌入式Web API非常复杂,比如需要编写大量的文档,测试大量的框架以及大力的推广应用等,所以他们采用了一种不同的方式。
Servo实现了Chromium嵌入式框架的API。这意味着,正在使用CEF的开发者不需要对应用程序做任何修改就可以比较Blink和Servo引擎的性能,未来的开发者也不需要考虑另外一种浏览器API。这种实现方式主要包含两个方面的工作:
确保“符号(Symbol)”完全覆盖:Servo嵌入式库可以钩连每个CEF函数调用。同时,任何时候分配的供外部使用的struct,其大小和成员位置必须与真正的CEF所分配的struct类似。符号列表可以借助Linux工具nm取得。
尽可能准确的模拟每个方法调用的功能:这需要完全了解CEF的每个函数以及它如何连接到浏览器引擎。
部分介绍内容节选自 InfoQ