返回资讯中心
外部精选
软件工程
#社区热议

Discord联合创始人展示Rust新客户端启动速度远超Electron版

来源标题:Every Windows 11 app should kill Electron, and Discord just showed why

Discord联合创始人Stanislav Vishnevskiy发布了一段15秒对比视频,显示新的Rust客户端在冷启动下已加载好友列表,而现有Electron客户端仍停留在加载界面。该视频播放量达230万,Discord员工确认两者均为冷启动。新客户端以Discord Phoenix显示,同时登录两个账号时内存占用为290.2MB。

Hacker Newsthunderbong2026/11/7 · 8 天前20 分钟阅读

以下正文由 AI 翻译自 Hacker News(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Discord 新的 Rust 客户端已经加载完好友列表了,而当前的 Electron 应用还卡在加载界面上——这段 15 秒的对比视频来自 Discord 联合创始人兼 CTO Stanislav Vishnevskiy 的 X 账号。截至本文撰写时,视频播放量已达 230 万次,Discord 员工也确认两个应用都是从冷启动开始的。

Vishnevskiy 还透露,新客户端(在任务管理器中显示为 Discord Phoenix)占用 290.2MB 内存,而且当时同时登录了两个账号——这倒让这个本就很高效的内存占用更说得通了。

“新的 Discord 客户端占用更少内存只是故事的一部分。点来点去的感觉是即时的,我回不去了。看看启动时间吧,”Vishnevskiy 在 X 上写道。Discord 官方账号也分享了这段视频,左边是当前客户端,右边是 Rust 重写版。

我们逐帧看了这段视频。令人印象深刻的是,当前客户端先被打开,显示了一个空白的深色窗口大约三秒钟,然后弹出一条提示:“在远古时代,Discord 最初只是一个纯浏览器应用。”有趣的是,这个 Electron 应用今天依然带着一个浏览器引擎。

新客户端大约在一秒半后被双击打开,但它的窗口在一秒内就淡入显示了。当旧应用在启动约五秒后进入界面时,Rust 版本已经加载好了好友列表,而 Electron 客户端还在短暂显示“当前没有在线好友”。

当然,X 上有人问新应用是不是直接从系统托盘弹出的。“两个都是冷启动,真的就这么快。我们在内部已经用了一段时间了,我第一次打开它的时候还以为是我忘了关掉它,”Discord 音视频负责人 Coral 回复道。

拍摄这段视频的 Discord 社交与社区团队成员 Travis 补充说,如果是托盘启动,“好友列表早就已经加载好了!”Vishnevskiy 感谢他“找到了这些破旧的老笔记本”——那是带 Copilot 键的 ThinkPad,所以是 2024 年或更新的型号,我可不敢说它们破旧或老。它们是很漂亮的机器!

你可能已经知道,当前应用打开时通常会检查更新并显示“正在启动”界面,X 上有人说这“每次大概要 5-10 秒”。被问到为什么新客户端跳过了这一步时,Coral 说:“它启动得太快了,加上是新架构,所以我们根本不需要那个模态框。我们在后台自动更新。”

Discord 也没有把更新交给 Microsoft Store 或 Windows 的 Update Orchestration Platform,因为 Coral 在被问到时说“我们目前没有这么做”。

当有人回复说 290MB 对一个聊天应用来说“仍然很恶心”时,Vishnevskiy 说:“那些 4K 头像装饰总得在某个地方渲染吧 ;) 但说正经的,这个客户端实际上同时运行着两个账号,新客户端是支持这个的。”

现在的账号切换器最多允许你添加五个账号并在它们之间切换。被问到新客户端能否让工作和个人账号同时运行“而不需要在中间拆掉客户端”时,Vishnevskiy 回答:“可以。”再次令人印象深刻且兴奋。

作为对比,一位 Discord 员工在 2025 年 12 月表示,正常使用情况下内存占用低于 1GB,而公司测试过在 4GB 时自动重启应用。所以,290.2MB 比 1GB 低了大约 70%,而在我们的电脑上,Electron 应用通常空闲时占用 1-2GB。需要说明的是,这只是一个早期版本的快照,Discord 并没有发布两个客户端的同条件基准测试,但我们拿到 Rust 版本后会做这个测试。

Discord 确实尝试过从内部修复 Electron。其九月的更新日志称,升级到 Electron 42 将 CPU 使用率中位数降低了约 17%,但“代价是 p50 内存使用量出现了较小的回退(约 4%)”。就连后来测试的游戏模式开关也没有提到内存。

Electron 从 Chromium 继承了多进程架构,所以每个 Electron 应用都自带一个浏览器引擎,有一个主进程,每个窗口还有一个渲染进程。很多人猜测 Discord 会选择 Tauri,它用 Rust 处理应用逻辑,但在系统 webview(Windows 上是 WebView2)里用 HTML、CSS 和 JavaScript 构建界面。

Discord 选择了 GPUI,这是来自 Zed 代码编辑器开发者的“一个快速、混合即时与保留模式、GPU 加速的 Rust UI 框架”。GPUI 在 GPU 上绘制界面,不使用任何 HTML,而 Discord 自 2018 年起就在用的 Rust 则在没有垃圾回收器的情况下管理内存。

你可能会问,为什么不用 WinUI?(至少我想到了)。Discord 没有提到它,也不太可能提到,因为微软的原生框架只能在 Windows 上运行,而 GPUI 已经在 Windows、macOS 和 Linux 上驱动 Zed。Discord 在 GPUI 之上有自己的补丁,Vishnevskiy 说“如果与社区相关,我们会看看能向上游贡献什么”。

Web 技术留在合理的地方,比如 YouTube 嵌入和 Activities 会使用系统 webview。“我们使用类似 Tauri 的原生 webview,”Vishnevskiy 在谈到 Activities 时说。

手机端保留原生界面,但会通过 Rust 与桌面端共享应用代码。关于 React Native,Vishnevskiy 解释说:“从一开始 iOS 应用就是 React Native 写的,Android 在几年前也被移植到了 React Native,以实现功能对等,因为它之前在功能上一直落后。”

浏览器版本将继续渲染 HTML,但“逻辑将用 WASM 而不是 JS”。WebAssembly(WASM)让用 Rust 等语言编写的代码能在浏览器内运行,所以 Web 应用也能共享 Rust 代码。至于外观,不管你喜不喜欢,“应用的外观和运行与当前版本完全一致,”Vishnevskiy 说。

如果你想试试,Discord 营销总监 Ryan K. Rigney 说:“很快就会进入非公开测试。我们会花时间确保它先稳定和安全。不会太久的。”我倒宁愿等他们把 bug 都修完。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →