弃用Electron、4GB内存占用直接砍到290MB!Discord宣布用Rust重写客户端

CSDN · 软件开发

CSDN 2026-11-06 14:21 江苏 极大地减少了内存的占用 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 内存价格疯涨,软件开发商也开始想办法给用户的电脑「减负」了。最近,又一款软件宣布要弃用 Electron,原因很直接:减少内存占用。 这家公司便是知名语音社交平台 Discord。11 月 5 日,Discord 联合创始人兼 CTO Stanislav Vishnevskiy 在 X 上公开展示了正在开发的新客户端。与目前基于 Electron 的版本不同,新客户端将完全使用 Rust 重写,桌面界面则交给 GPUI 框架处理。 更引人注意的是,他还晒出了一张 Windows 11 任务管理器截图。截图显示,这款暂定名为「Discord Phoenix」的新客户端,内存占用仅为 290.2MB。 这是什么概念? 根据 Windows Latest 的报道,Discord 目前的 Windows 客户端即使处于闲置状态,也可能占用 1~2GB 内存,某些情况下甚至会飙升至 4GB。 一边是 GB 级别的内存消耗,一边只有 290MB,新旧版本之间的差距一目了然。 两个账号同时登录,内存占用只有 290MB 值得注意的是, Stanislav Vishnevskiy 后续还透露,上面截图中的新客户端实际上同时登录了两个 Discord 账号。这也是新版本支持的一项功能。 当然,290.2MB 目前只是早期开发版本的一次运行数据,还不能直接代表正式版在各种使用场景下的内存表现。比如,语音通话、视频播放、屏幕共享,以及长时间运行后会占用多少资源,目前都还没有公开的测试数据。 但至少从这次展示来看,新客户端的资源占用表现已经相当令人期待。 事实上,Discord 自己也很清楚 Windows 客户端存在内存问题。 早在 2025 年 12 月,就有 Discord 员工在 Reddit 上透露,公司正在测试一项机制:当客户端内存占用超过 4GB 时,自动重启应用。 当时,这名员工还表示,正常使用情况下,客户端内存占用应该低于 1GB。 显然,自动重启更像是一种临时补救措施,而不是从根本上解决问题。 而这一次,Discord 似乎决定直接从客户端架构入手。 Electron 终于要退场了,Rust 接棒 Stanislav Vishnevskiy 在 X 上解释了这次重构背后的技术选择。 他表示,Discord 从 2018 年开始就一直是 Rust 的早期采用者。公司的大量基础设施、语音技术,甚至当前客户端的一部分代码,都已经使用 Rust 构建。 “一直以来,我们最想实现的目标,就是让整个客户端都迁移到 Rust,”Stanislav Vishnevskiy 说道。 他明确表示, 新版本将彻底告别 Electron,同时也会放弃 React Native。 “ 移动端仍然会保留原生 UI,但应用代码将通过 Rust 与桌面端共享。我们希望很快就能让用户参与测试。 ” 这里简单解释一下,为什么这次重构值得关注。 Electron 本身并不是一门编程语言,而是一个允许开发者使用 Web 技术构建桌面应用的框架。它的优势在于跨平台开发:开发者可以利用 HTML、CSS 和 JavaScript 等技术,把原本运行在浏览器中的网页应用打包成桌面软件。 问题在于,Electron 应用通常会自带一套 Chromium 浏览器内核。 这意味着,当你在电脑上打开 Discord 时,实际上也相当于在后台运行了一套独立的浏览器环境。应用本身的功能、界面以及各种后台任务,还要在这套环境中运行。 对于开发者而言,这种方式确实省事,能够减少跨平台开发和维护的工作量。 但对用户来说,代价就是额外的资源开销。 而 Rust 的路线则有所不同。它是一门能够编译为原生机器代码的系统编程语言,具备内存安全等特性。配合 GPUI 这样的原生 UI 框架,Discord 可以摆脱 Electron 所带来的 Chromium 运行时开销。 Vishnevskiy 还特别强调, 在桌面端, 新客户端将采用 Rust 和 GPUI 构建,而不是此前不少人猜测的 Tauri。 要知道,Tauri 虽然同样支持 Rust,但通常仍然依赖操作系统提供的 WebView 来渲染界面;而 GPUI 则是使 用 Rust 构建原生界面的框架。这次 Discord 不只是换了一门编程语言,而是准备从底层重新调整整个客户端的实现方式。 关于 Electron 的争议 事实上,Discord 并不是第一个尝试摆脱 Electron 的大型软件。 早在 2023 年,微软就为 Microsoft Teams 推出了全新的桌面客户端,用 WebView2 替代

查看原文