写点什么

Vercel Labs 开源 Zero-Native:一个基于 Zig 的跨平台原生应用框架

作者:Bruno Couriol
  • 2026-06-18
    北京
  • 本文字数:1481 字

    阅读完需:约 5 分钟

近日,Vercel Labs 开源了 zero-native,这是一个用于原生桌面应用的跨平台框架(未来版本计划支持移动应用)。Zero-native 绕过了 Electron 运行时,转而采用操作系统原生的 WebView,并声称能够以极低的开销构建出更小、更高效的原生应用。Zero-native 采用 Zig 语言编写,因此可以直接与原生的 C 语言库互操作,并具备快速增量编译的特性。

Zero-native 允许开发人员将 Web 前端(Next.js、React、Vue、Svelte)与 Zig 后端进行组合。

通常,跨平台框架(例如 Electron)会随应用程序一起提供完整的浏览器运行时,这会带来巨大的内存开销。该框架旨在解决这一问题,提供轻量级的二进制文件并减少内存占用。作为一种应急方案,开发人员仍然可以通过配置 app.zon 清单文件,利用 Chromium 嵌入式框架(CEF)将 Chromium 打包到应用程序中。

据报道,Zig 的增量编译速度比 Rust 还快。去年,Roc 编程语言的创建者 Richard Feldman 宣布将他们的编译器从 Rust 完全重写为 Zig,并指出,Rust 编译速度比较慢是主要痛点之一:

Rust 的编译速度很慢,而 Zig 的编译速度很快。这虽然不是唯一的原因,但确实是一个重要原因。

反馈循环缓慢严重影响了我们的工作效率,也降低了我们在处理代码库时的乐趣。光是等待构建一个测试就得花上几秒钟,甚至在测试还没开始运行之前,这种体验实在令人不快。

对于应用程序开发而言,增量编译至关重要,因为这是一个高度迭代的过程。例如,Web 开发人员已经习惯了支持快速重载或即时热重载的开发环境。

此外,Zig 还能直接与 C 应用程序二进制接口(ABI)进行交互。因此,在复用本地原生的 C 语言库时无需使用外部函数接口。开发人员无需承担生成外部函数接口绑定或管理接口定义语言所带来的构建时开销。相反,他们只需要包含一个系统头文件,就可以直接调用平台 SDK 或音频编解码器。这有助于进一步降低增量编译的开销。

在安全性方面,zero-native 采用基于权限的系统(如 Deno 和 Tauri)来限制前端随意读取本地文件或直接调用原生平台 API。相反,Zig 代码必须显式注册其希望使用的原生命令,而且 app.zon 清单必须显式授予相关权限。

Zero-native 进入了一个高度活跃的 Electron 替代方案生态系统。这些方案的目标是缓解跨平台应用的臃肿问题(例如 WebUILynxJSTauri)。

WebUI 利用操作系统上现有的浏览器和 WebView 作为 C/C++ 或 Nim 等后端语言的图形用户界面(GUI),而无需打包 Chromium。Tauri 同样使用操作系统的原生 WebView,配合 Rust 后端以及连接前端与后端的进程间通信机制。

Lynx 是一个基于 Rust 的框架,它通过双线程引擎将 UI 渲染与业务逻辑分离,从而将前端(Web 标记、CSS 和 JavaScript)编译为真正原生的 UI 原语。Lynx 可编译并运行在华为 HarmonyOS 上。该系统搭载了 Cangjie——一种具有原生效果处理程序和代数数据类型的新型开源编译语言

虽然依赖原生 WebView 进行渲染可以减小应用程序发布包的大小,但也使用户面临不同操作系统之间的兼容性问题和渲染差异。更重要的是,如果系统中不存在或找不到原生 WebView,或者其版本不受支持,应用程序可能会崩溃或无法启动。

在 Reddit 上,有开发人员针对这个新的开源框架未提供详细信息发表了评论:

说实话,这真的很酷。[…] 出于好奇,我想知道,Vercel 的团队是否用它构建过什么?如果没有对比,很难判断它与 Tauri 或 Electron 等其他框架相比效果怎么样。

Zero-native 仍然是一个处于活跃开发阶段的实验性框架。目前,它支持 macOS 和 Linux 桌面系统,而 Windows 和移动端的支持还尚在开发当中。

原文链接:https://www.infoq.com/news/2026/06/zero-native-zig-xplatform-vercel/