news 2026/10/15 6:56:08

Verso 浏览器上手指南:用 Servo 引擎写一个自己的 Rust 浏览器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Verso 浏览器上手指南:用 Servo 引擎写一个自己的 Rust 浏览器

Verso 浏览器上手指南:用 Servo 引擎写一个自己的 Rust 浏览器

【免费下载链接】versoMirror of https://gitlab.com/verso-browser/verso项目地址: https://gitcode.com/GitHub_Trending/vers/verso

如果你想在本地动手跑一个不依赖 Chromium、改用 Servo 引擎渲染网页的浏览器,或者正想借一个真实项目搞懂 Rust 是怎么嵌入网页引擎的,Verso 就是为此准备的。它用 Rust 写成,把 Servo 引擎装进一个多窗口、多标签的图形界面里,定位是"探索 Servo 如何长成成熟浏览器"的实验场,而不是一个追求功能齐全的日常主力浏览器。下面直接带你把它装起来,再讲清楚它能做什么、里面怎么搭。

三步跑起来

最短路径就三步:克隆仓库、进目录、用 cargo 启动。装好 Rust 工具链后,在仓库根目录执行下面的命令即可拉起窗口。

git clone https://gitcode.com/GitHub_Trending/vers/verso cd verso cargo run

三个平台要额外备好的依赖不一样,先看这张表再开跑:

平台前置工具
Windows用 scoop 装 git、python、llvm、cmake、curl,再pip install mako
macOS装 Xcode,brew 装 cmake、pkg-config、harfbuzz、python@3,pip3 install mako,并用 rustup 装 Rust
Linux推荐 Flatpak(配 24.08 的 Platform 与 Rust/LLVM 扩展)或 Nix(shell.nix),项目不再单独排查裸机编译问题

Linux 用户如果不想碰 Flatpak/Nix,按 Servo 官方书的说明自己搭环境也可以,但作者只对前两种方式的构建问题做处理,这点要心里有数。

装起来之后能做什么

Verso 的界面是为"多视图"设计的,想同时对照两个页面时,它支持多窗口、多标签独立浏览,各自有地址和状态,不用来回切。你打开的每个标签由独立的 WebView 驱动,窗口大小、缩放、位置都能单独调。

对网页本身的兼容性,它走 WebRender 做合成,WebGPU 的纹理通道已经接进渲染管线;但 WebGL 线程目前还是关着的,重度 3D 页面暂时别指望。需要蓝牙设备的功能页能跑,因为蓝牙线程是默认启用的;而音视频多媒体现在挂的是占位的 dummy 后端,还没接真正的解码,遇到需要播放的页面会打折扣。

想边看边查页面,可以加--devtools-port启动,起一个 DevTools 服务,用 Firefox 的开发者工具远程连进来检查 DOM 和样式。下载、书签、历史记录、本地存储这些日常状态都有模块在管,触控和键盘输入也被统一处理过。

这些能力能稳,跟选 Rust 直接相关:内存安全让它在开一堆标签时更少出野指针式的崩溃。安全上,网络层走 rustls 做 TLS,证书可配,沙盒能力正在逐步补齐。整体说,它适合拿来"看引擎怎么干活",不适合当唯一的主力浏览器。

它的里面长什么样

选型上,Verso 把 Servo 当成"引擎"来嵌入,Rust 负责引擎之外的一切:窗口、事件、输入、UI 状态。整个代码库按职责拆得很细,src/webview/ 装着标签和网页视图相关的逻辑,src/compositor.rs 负责把渲染组件拼到一起,src/tab.rs 管单个标签的状态与历史,src/window.rs 管窗口。浏览器和引擎进程之间靠一套独立的消息定义通信,就是 versoview_messages/ 里那组可序列化的指令。你读代码时按"窗口→标签→视图→合成"这条线走,基本就能抓住主干。

常见问题

怎么自定义启动行为?配置集中在 src/config.rs,启动参数也都能透传,比如用--user-agent改标识、--zoom-level调缩放、--init-script在每个文档开始时注入脚本、--devtools-port开调试服务。

想加功能应该从哪下手?入口在 src/webview/webview.rs 附近,照着现有标签逻辑扩就行。不过要提前说清:项目目前处于归档状态、不再接受新功能请求,作者只接 bug 修复类的改动。

已知限制和后续计划?多进程模式、全平台沙盒、Gstreamer 多媒体、以及把 WebGL 线程真正打开,都还列在未来计划里没做完;这也是它没能跟上 Servo 后续大版本、选择先归档的原因。它的一些改动已经并回了 Servo 上游。

Verso 现在已归档维护,但作为"Rust + Servo"的完整样例仍然完整,适合照着读、照着改来理解一个浏览器是怎么从引擎里长出来的。

【免费下载链接】versoMirror of https://gitlab.com/verso-browser/verso项目地址: https://gitcode.com/GitHub_Trending/vers/verso

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 6:55:27

SD-SDI BT656 720×576i 数字视频流编码与FPGA实现

简介:这份资料面向FPGA视频开发方向的工程师与课程设计学生,聚焦SD-SDI标准下720576i(PAL制)数字视频流的BT656编码实现。内容系统梳理了576i行数据格式、各字段组成、帧与场结构,明确消隐区与有效显示的起止行数、奇偶…

作者头像 李华
网站建设 2026/10/15 6:55:26

airllm轻量推理框架:让大模型在消费级显卡上实现本地化部署

模型权重刚下载完那一刻,我差点以为这台机器要原地起飞。一个十几GB的开源基座模型,光原始权重就占掉了大半内存,我的显卡显存只有那么点,加载到一半直接报Out of Memory。这是两年前我刚开始碰大模型本地化部署时最熟悉的场景。后…

作者头像 李华
网站建设 2026/10/15 6:54:28

JDK 11升级实战:从ZGC到模块化,迁移踩坑与核心特性全解析

JDK 11 发布到现在已经不算新了,但每隔一段时间我都会遇到有人问:项目还在 JDK 8,要不要升 11?升了到底能带来什么?说实话,JDK 11 这个版本在 Java 发展史上是一个非常特殊的节点,它既是 Oracle…

作者头像 李华
网站建设 2026/10/15 6:53:45

思科设备企业网络搭建实战:VLAN划分、单臂路由与NAT配置详解

最近刚完成一个挺典型的项目:用思科设备给一家几十人的公司搭一套完整的网络环境,并且要输出一张能直接看懂的网络简图。这个任务听起来不复杂,但真正上手你会发现,它几乎把企业网络里最常用的基础功能都串了一遍——VLAN划分、VL…

作者头像 李华
网站建设 2026/10/15 6:53:30

半透明语音提醒助手:用PySide6构建本地定时待办工具

定时提醒小助手2.0是我最近花时间重写的一款本地待办提醒工具,它的三个关键词很直白:半透明、指定时间、语音提示。说白了,就是在桌面上放一块几乎不占地方的半透明面板,你往里丢几条待办事项,设定好时间,到…

作者头像 李华
网站建设 2026/10/15 6:53:20

乡村文旅项目债务重组与资产盘活实战指南

1. 项目背景与核心挑战在城乡融合发展的大背景下,乡村文旅项目成为盘活闲置资产、带动地方经济的重要抓手。2021年接触到的"一如文旅"项目,位于浙江某传统村落,原为集体所有的老旧茶厂改造项目,前期因规划不当已累积300…

作者头像 李华