开发者生态
morning
给 AI 腾内存?Discord 抛弃Electron,省70%内存还秒开:Windows应用该劫持了
摘要
近日,Discord联合创始人兼CTO Stanislav Vishnevskiy在X上宣布,Discord正将客户端迁移至Rust,桌面端将移除Electron,移动端也将放弃React Native。他展示的Windows任务管理器截图显示,新客户端以“Discord Phoenix”的名称运行,内存占用约290.2MB。相比之下,现有Windows客户端在加入多个服务器后,内存占用很容易达到...
Discord
Vishnevskiy
Discord联合创始人兼CTO
Stanislav
Vishnevskiy在X上宣布
Discord正将客户端迁移至Rust
桌面端将移除Electron
移动端也将放弃React
Native
他展示的Windows任务管理器截图显示
2026-11-10
1 阅读
约10分钟阅读
褚杏娟
字号:
近日,Discord联合创始人兼CTO Stanislav Vishnevskiy在X上宣布,Discord正将客户端迁移至Rust,桌面端将移除Electron,移动端也将放弃React Native。他展示的Windows任务管理器截图显示,新客户端以“Discord Phoenix”的名称运行,内存占用约290.2MB。相比之下,现有Windows客户端在加入多个服务器后,内存占用很容易达到1GB甚至更高。Vishnevskiy随后补充称,截图中的客户端同时运行着两个账户。 “新版 Discord 客户端内存占用更低,这还只是其中一点。点击操作流畅无比,我再也回不去了。看看启动速度就知道了。”Vishnevskiy 展示了新版客户端的效果: “我觉得它现在可能是我手机上响应速度最快的应用了。”Vishnevskiy 还展示了移动端效果: 之后,有网友询问网页客户端的变化,Vishnevskiy回答道,“我们会有一个 HTML 渲染器,但逻辑系统将采用 WASM 而非 JS。” 目前,Discord尚未公布正式上线时间,只表示希望尽快开放用户测试。 “恭喜你们终于发现Vibe Coding了。”有网友在Vishnevskiy帖子下评论,他没有正面回应。不过,Discord工程副总裁Mark Smith早在3月份就公开介绍过公司的内部AI开发平台Vibeyard。按照他的说法,Discord员工过去需要几天甚至几周才能交付一款内部应用,如今通过Claude、CLAUDE.md、GitHub Actions和Cloudflare基础设施,约两分钟就能完成部署。 因此,对于这次重构,大部分人认为是AI Coding, 不过官方没有明确这一说法。 内存飙到4GB,Discord甚至试过自动重启 Discord的内存问题由来已久。 2025年10月,Discord针对Windows客户端启动专项排查。到当年12月,团队已经修复至少9项与内存泄漏、死锁、缓冲区溢出等有关的问题,还增加了遥测和内存分析工具。 但问题并没有彻底解决。Discord披露,客户端正常使用时内存通常低于1GB,部分用户却会遭遇超过4GB的异常占用。一些问题甚至涉及操作系统、驱动程序和硬件,团队需要与外部合作伙伴共同定位。 经过一轮修复,Discord将内存占用的P95降低了约5%,但对于长期运行、频繁切换频道和服务器的用户来说,这还远远不够。 于是,自动重启实验出现了。 2025年底,Discord工程团队在Reddit解释了这项特殊的性能实验。当Windows客户端内存占用超过4GB时,程序可以在用户离开电脑后自行重启,以缓解持续增长的内存压力。为了避免干扰用户,Discord设置了严格的触发条件:客户端必须运行至少一小时、用户处于离开状态、没有进行语音通话,每天也只能重启一次。团队希望借此缓解部分用户的内存压力,同时收集更多异常数据。 Discord当时明确表示,这只是临时措施,不是解决内存问题的长久之计。 当时,这项决定在社区引发了讨论。一些用户认可Discord主动处理问题,但也有人认为,一款聊天软件需要靠自动重启控制内存,本身就足以说明客户端的性能问题已经相当严重。 随后,Discord继续沿着原有技术路线优化。今年9月8日,Discord公布了一轮性能改进:桌面端升级至Electron 42,调整部分调用方式后,CPU占用中位数下降约17%,但内存占用中位数反而增加约4%。 移动端也进行了类似的优化。React Native版本升级后,Android和iOS应用的平均CPU占用下降约5%,平均启动时间缩短约5%。 这些数据说明,Discord并非没有尝试过优化Electron,也不是因为一次性能问题突然决定重写客户端。相反,团队已经持续投入大量工作,但在原有架构下,不同性能指标之间仍然存在取舍。 对于Discord这样的产品,问题尤其敏感。它经常在用户运行游戏、直播或共享屏幕时保持后台在线。聊天客户端多消耗的CPU和内存资源,可能直接挤占游戏和其他应用的运行空间。 Discord 拿出了一套更彻底的方案:放弃Electron,用Rust重写整个客户端。 已经为这次Rust重构准备了多年 Rust并不是Discord临时选中的一门新语言。 Vishnevskiy表示,公司早在2018年就开始采用Rust。目前Discord的大量基础设施、语音技术和部分现有客户端代码已经使用Rust开发,将整个客户端迁移过去一直是团队希望实现的目标。 早在2020年,Discord还专门发表过一篇工程文章,解释为什么将一项核心后端服务从Go迁移至Rust。这项服务名为Read States,负责记录用户读过哪些频道和消息。Discord需要处理数十亿条已读状态,服务每秒涉及大量缓存更新和数据库写入,属于典型的高频访问场景。 当时的Go版本大多数时候运行很快,但几乎每隔两分钟就会出现一次明显的延迟峰值。工程团队排查后发现,问题与垃圾回收器(GC)扫描大型LRU缓存有关。 Discord尝试过调整垃圾回收参数、缩小缓存规模等办法,但缩小缓存又会导致更多数据需要从数据库读取,反而影响尾延迟。团队最终决定用Rust重写这项服务。 Rust通过所有权机制在编译阶段管理内存访问,不依赖传统垃圾回收器。迁移后,缓存中的对象可以在不再使用时及时释放,原有的周期性垃圾回收延迟问题也得到解决。Discord还利用Rust版本进一步调整了缓存结构和容量,提高了服务整体性能。 不过,这次迁移并不是毫无代价。Discord当时也提到,早期Rust异步编程生态还不够成熟,开发团队需要解决额外的技术问题。对于规模较大的系统,语言迁移需要考虑的远不只是运行效率。 这段经历为此次桌面客户端重构提供了背景。Discord已经积累了多年Rust开发经验,也验证过Rust在高频、低延迟业务中的价值。 不选Tauri,押注GPUI:Discord连界面都要推倒重来 Discord这次真正引人关注的技术选择,是GPUI。 在Vishnevskiy公布重构计划后,有开发者猜测Discord会采用Tauri。Tauri同样以Rust为核心,但它通常使用操作系统提供的WebView渲染界面,开发者仍然可以沿用HTML、CSS和JavaScript技术栈。这种方案能够减少Electron携带完整Chromium运行环境带来的部分开销,同时保留Web开发的便利性。 但Vishnevskiy明确表示,Discord没有采用Tauri,而是选择了GPUI。 GPUI最初由Zed编辑器团队开发,是一个基于Rust、利用GPU加速渲染的界面框架。与将Web界面装进桌面应用不同,GPUI允许开发者直接用Rust构建界面和交互逻辑。 Discord的目标并不是让新版本看起来像另一个产品。Vishnevskiy表示,新客户端的外观和功能将基本保持不变,但应用本身会采用原生实现,仅在YouTube、Activities等特定功能中使用系统WebView。 GPUI也并非拿来就能直接满足Discord的需求。一位参与此次重构的Discord开发人员透露,团队以Zed的GPUI为基础进行了大量修改,目前
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱