Trend Report · 2026-11-06 · 科技 · 约 7 分钟读完 · Haowu Lab 出品

Discord 的 Rust 重写为什么突然火了

一张 290MB 早期截图,让 Discord 多年的 Rust 迁移突然出圈。

左侧是层层叠加的浏览器运行时,右侧是 Rust 与 GPUI 路线;内存柱仅为意象,不表示同条件对比结果。

为什么突然火了

  1. 01

    Discord CTO Stanislav Vishnevskiy 在一手公告中确认:桌面客户端正用 Rust 和 GPUI 重建,GPUI 来自 Zed 编辑器团队。

  2. 02

    Windows Latest 把早期版本的 290.2MB 与现有客户端接近 4GB 的数字放在一起传播,但两者没有被展示为同机器、同任务的对比。

  3. 03

    Discord 早在 2020 年就把 Read States 服务从 Go 迁到 Rust,原因是垃圾回收停顿会周期性推高延迟。

  4. 04

    Hacker News 的讨论很快超出内存数字,开发者关心辅助功能、原生控件、平台适配,以及新界面框架是否会让生态进一步分裂。

一条技术公告能迅速出圈,靠的是极其直观的反差:许多人从早开到晚的聊天软件、长期积累的“占内存”印象,再配上一个小得多的任务管理器数字。The Verge 与 IT Home 报道了 Discord 桌面端弃用 Electron 的消息,Windows Latest 提到的 290.2MB 则让架构变化变成了一张容易转发的图。

但如果只把它理解为“一张截图逼着 Discord 重写”,就把时间顺序看反了。Discord 使用 Rust 至少已有数年;GPUI 背后的 Zed 团队又有人参与过 Atom,而 Atom Shell 正是 Electron 的起点。真正有意思的是,同一条桌面软件技术谱系,一条分支把网页技术带进无数客户端,另一条分支后来决定摆脱浏览器运行时。现在,Discord 把这两条分支接到了一起。

290MB 与 4GB 不能直接相除

290.2MB 来自公告传播期间展示的早期构建,约 4GB 则描述另一种情况下的现有 Windows 客户端。公开材料没有证明两者使用相同硬件、相同服务器数量、相同通话状态、相同缓存与运行时长,也没有统一进程统计口径。因此,把两个数字直接相除,再得出内存下降超过九成的结论,证据并不够。

这不代表内存问题只是错觉。Electron 把 Chromium 浏览器引擎与 Node.js 一起带进桌面应用,应用自己的功能尚未计算,底层运行时就已经存在。但客户端占用也不会只由框架决定:语音或视频通话、大量服务器、动态内容、缓存、多进程拆分,都可能改变最终数字。换成 Rust 并不会让这些工作凭空消失。

更稳妥的理解是,Discord 认为新的客户端底座有机会改善资源占用与响应表现,并愿意为此承担重写成本。早期数字说明团队正在朝这个方向推进,却不是每位用户未来都稳定在 290MB 的承诺。真正有说服力的比较,需要接近正式发布的版本、可重复的任务和清楚的进程统计方式。

这次讨论还有一个更大的背景:内存正成为科技产业越来越醒目的约束,AI 内存超级周期梳理了这条变化。并不是说内存价格促使 Discord 做出决定,而是当硬件资源再次受到关注时,用户对臃肿桌面软件的耐心也更少了。老问题遇上了新语境,传播力自然不同。

脉络时间线

  1. 2013-03Atom Shell 起步

    GitHub 为 Atom 编辑器搭建桌面外壳,让网页界面获得桌面能力;Electron 官方历史把自身源头追溯到这里。

  2. 2015-04Atom Shell 改名 Electron

    这套 Chromium 与 Node.js 运行时被开放给更多应用复用,Discord 后来成为最有知名度的用户之一。

  3. 2020-02Rust 已在 Discord 解决过问题

    Read States 服务从 Go 改写到 Rust,针对的是垃圾回收造成的周期性延迟尖峰,而不是追逐语言热度。

  4. 2022-08Android 开发路线收拢

    重建后的 Android 客户端采用 React Native,以便与 iOS 更一致地推进功能,也说明跨平台并不只有网页外壳一种办法。

  5. 2023Zed 解释为什么重新开始

    Zed 团队回顾 Atom 的架构限制,说明为何用 Rust 构建 GPUI,而不是继续在原有网页技术底座上迭代。

  6. 2026-11Discord 公布 GPUI 重写

    CTO Stanislav Vishnevskiy 公开桌面端迁移方向,早期截图与 Electron 对比随后把它推向更大的技术社区。

来龙去脉:Atom 分出的两条路线

Electron 当年解决的是交付难题

在 Electron 普及之前,要同时做好 Windows、macOS 和 Linux 应用,往往意味着面对三套界面工具与平台行为。Electron 给出的答案很直接:沿用开发者熟悉的网页技术,自带确定的浏览器引擎,大部分界面代码可以复用。Electron 十周年的官方回顾也明确把这段历史连接到 Atom Shell。

Discord 与这套方案天然契合。它本来就有网页产品,界面迭代快,用户又希望不同系统里的体验尽量一致。Chromium 和 Node.js 让这种一致性更容易实现。代价不只是安装包或任务管理器里的一个数字,而是让一个浏览器取向的运行时,长期承载一款许多人从不主动关闭的通信软件。

Zed 的“重新开始”叙述提供了另一面。团队成员曾参与 Atom,后来认为原有架构限制了想达到的性能,于是用 Rust 构建 Zed 与 GPUI,让界面通过 GPU 加速绘制。Zed 走到 1.0,至少说明 GPUI 已支撑真实桌面产品,而不是停留在演示项目;但编辑器的成熟不等于 Discord 所需的功能已经自动齐全。

Discord 的 Rust 经验并非临时补课

2020 年的 Discord 工程博客很关键。当时的问题非常具体:Go 的垃圾回收器会让 Read States 服务周期性停顿,形成延迟尖峰。团队用 Rust 重写后,把垃圾回收这一因素移除了,并观察到对应改善。这是一次围绕明确瓶颈做出的迁移,而非因为 Rust 在社区里流行就全面换栈。

当然,一个后台服务与完整桌面客户端不可同日而语。后者还包括语音通话、直播、悬浮层、辅助功能、自动更新,以及多年累积的平台细节。但旧项目证明 Discord 内部已有 Rust 工程经验。今天的决定更像把用过的工具扩展到新问题,而不是第一次接触这门语言。

2022 年的 Android 改造则补上了另一块拼图。Discord 用 React Native 让 Android 与 iOS 的功能开发更一致,却没有因此把所有界面都变成网页。此次公布的思路同样区分共享 Rust 应用核心与原生移动界面。所谓“跨平台”,核心是复用工程成果;Electron、React Native 和 GPUI 的差别,在于各自选择共享到哪一层。

底层究竟改了什么

现有桌面底座
Electron:Chromium + Node.js
公布的新方向
Rust 应用核心 + GPUI
疯传的早期数字
290.2MB,缺少同条件语境
此前 Rust 节点
2020 年 Read States
移动端思路
共享核心,保留原生界面
正式发布时间
公开材料尚未确定

Rust 与 GPUI 并不是同一个层面的替换。Rust 关系到编程语言、内存管理方式和应用核心;GPUI 关系到界面怎样组织与绘制。弃用 Electron 因而不是把一种语言机械换成另一种语言,而是要重建消息列表、设置页、通话按钮等所有元素通向屏幕的那一层。

这既是机会,也是工作量所在。量身搭建的技术栈能减少不需要的运行时负担,让团队更细致地控制性能;与此同时,成熟浏览器过去代劳的许多细小行为,也需要重新接住。文字输入、屏幕阅读器、高对比度设置、窗口管理、媒体权限,都不是界面完成后再补的装饰。对通信工具来说,它们就是功能本身。

长期影响更大的或许是共享核心。如果产品逻辑能够统一,桌面与移动界面又分别遵循所在平台的交互方式,Discord 就有机会减少重复开发,同时不再复制浏览器外壳的高度一致性。不过,公告描述的是方向。能否做到,仍要看后续实现,而不是从框架名称直接推出结果。

各方怎么说

把项目描述为使用 GPUI 的 Rust 重建,同时通过共享应用核心与原生移动界面复用工程成果,而不是把同一套网页界面拉伸到所有设备。
Discord CTO Stanislav Vishnevskiy公告帖,转述x.com ↗
回顾 Atom 的架构限制,认为继续在同一底座上迭代已无法实现目标,因此转向 Zed 与基于 Rust 的 GPUI。
Zed架构历史文章,转述zed.dev ↗
说明 Go 版 Read States 服务受到垃圾回收延迟尖峰影响,Rust 针对这一具体问题提供了解法,同时团队也讨论了采用较新语言的取舍。
Discord Engineering2020 年迁移记录,转述discord.com ↗

Hacker News 的价值在于,它没有把内存当成唯一坐标。有人欢迎桌面软件不再捆绑完整浏览器运行时;也有人追问 GPUI 能否接住辅助功能与熟悉的平台行为,或者新的界面工具是否会让桌面生态更加分散。

这些都应该留待实现回答,而不是提前判定胜负。Electron 不必然低效,原生代码也不天然节省资源。Discord 的特殊之处是规模:单个用户只改善一点,乘上大量长时间在线的客户端,总量可能很可观;反过来,一个常见平台行为缺失,也可能立刻影响许多社区。

接下来真正该看什么

后续节点都很具体:哪些操作系统先收到新客户端,旧功能如何对齐,悬浮层与通话怎样迁移,辅助功能如何覆盖。外部比较也需要分清空闲与通话、刚启动与长时间运行、单进程与应用总占用,不能再用两张孤立的截图补齐缺失条件。

GPUI 自身也会受到关注。编辑器与面向海量用户的聊天客户端,是两种分发规模。如果迁移顺利,Discord 会让更多团队第一次认真研究这套框架;如果遇到困难,同样能说明替换成熟跨平台运行时不仅是绘制界面的问题,更是组织、兼容与长期维护的问题。

所以,目前站得住的结论不是“Discord 已把内存降低九成”,而是一家有多年 Rust 经验的公司,公开决定更换桌面客户端的核心底座;它选择的框架,还意外地把故事带回 Atom。截图解释了为什么大家此刻看见,技术谱系才解释了这件事为什么值得理解。

常见问题

现在的 Electron 桌面版已经下架了吗?

没有。公告说的是正在进行的重建,不是现有客户端立即消失。本文引用的公开材料尚未确定最终发布时间与完整平台切换安排。

290.2MB 能代表未来正式版的占用吗?

不能。它是早期构建的数字,与约 4GB 的现有客户端数字没有形成同任务、同条件的对照。通话、服务器、缓存、运行时长和进程统计方式都会影响实际占用。

Rust 和 GPUI 是一回事吗?

不是。Rust 是应用使用的编程语言,GPUI 是 Zed 团队开发的 Rust 界面框架。Discord 的决定同时涉及应用核心和桌面界面层,两者不能混为一谈。

这是否意味着 Discord 放弃跨平台开发?

不是。公布的方向仍通过 Rust 应用核心共享工程成果,并保留原生移动界面。变化在于共享到哪一层、桌面界面怎样绘制,而不是各平台从此完全独立重写。

更多解读

参考来源