Discord переписал клиент на Rust — и запускается быстрее, чем Electron успевает показать экран загрузки
Every Windows 11 app should kill Electron, and Discord just showed why

Discord показал новый клиент на Rust и GPUI: в ролике соучредителя Станислава Вишневского он загружает список друзей раньше, чем текущее приложение на Electron проходит экран «Starting». Расход памяти — около 290 МБ при двух одновременно открытых аккаунтах, примерно на 70% меньше привычного 1 ГБ. Обновления идут в фоне, а мобильные приложения переходят с React Native на общий код на Rust. Приватное тестирование начнётся скоро.
«Новый клиент Discord с меньшим потреблением памяти — это лишь часть истории. Клики ощущаются мгновенными, я уже не могу вернуться назад. Посмотрите на время загрузки».
- cheschire
Я почти уверен, что это было известно ещё на заре Electron. Это даже было одной из главных претензий к VS Code, когда он только вышел.
Ценность Electron всегда была в том, чтобы одна команда делала одно приложение, поддерживаемое на нескольких платформах с минимальными дополнительными усилиями.
Эта статья никак этого не опровергает.
- ezst
Это что, полный переписанный UI на нативном/не-веб фреймворке? Потому что если нет, то это всё ещё работает в браузере, то есть где-то на 80% сохраняет раздутость Electron, а быстрее он, возможно (в основном?), потому что они ещё не успели навесить столько всего, сколько есть в обычном клиенте.
Discord — это серверный протокол (клиент почти ничего не делает, кроме отображения состояния, заданного сервером), там очень мало логики/вычислений, которые могли бы объяснить такую разницу.
- LaurensBER
Electron довольно крут тем, что позволяет маленькой команде построить приличное GUI-приложение, используя уже имеющиеся веб-навыки, но в то же время кажется, что пора бы уже что-то получше.
При таких безумных ценах на RAM довольно раздражает, что приходится запускать несколько приложений, пожирающих гигабайты, только чтобы сделать базовые задачи (90% — это чтение и запись сообщений, в случае Discord). Я понимаю, что другие люди могут пользоваться более продвинутыми функциями (голосовой чат и т.д.), но их можно было бы подгружать по требованию.
Мне кажется немного безумным, что я спокойно запускаю целый Linux-стек (+ Podman, мониторинг, алертинг и несколько сервисов) в 512 МБ RAM (с 40% свободных, только что проверил!). А моему Windows-ПК нужно 5,5 ГБ только чтобы показать рабочий стол! Реалистично ему нужно где-то между 8 и 16 ГБ для базового веб-сёрфинга, и даже тогда он может подтормаживать, если в фоне крутится пара приложений вроде Discord.
- mococa
Не понимаю этой идиократии — ведь суперлегко (я сам в одиночку делал это много раз) иметь единую кодовую базу на Qt для всех ОС, даже для BSD.
Думаю, люди стали суперленивыми... «А, ну будет жрать пару сотен мегабайт RAM, не проблема, давайте так и выпустим».
Это компании с миллиардами или даже триллионами, которые выпускают хрень на Electron.
- smusamashah
Мне кажется, мы уже так привыкли к медленному запуску приложений. Недавно я начал пользоваться Task Slinger [1], и каждый раз, когда я его запускаю, у меня ощущение, что он уже работал и просто показал своё окно. Хотел бы я, чтобы всё современное ПО было таким.
- bemtevi
Мне редко нравилось какое-либо Electron-приложение — и из-за производительности, и потому что это, кажется, поощряет ощущение раздутости, за неимением лучшего слова. Пробовал VS Code, но бросил, когда они начали пихать в него слишком много ИИ и слишком много сложности. Sublime намного лучше.
Не знаю... во всех Electron-приложениях есть что-то неприятное.
- EddieRingle
Discord, на мой взгляд, тут не образец для подражания. Они убили своё нативное Android-приложение и перешли на React Native, а теперь бросают React Native (при этом мобилка почему-то сохраняет «нативный UI», согласно твиту их CTO). Если они хотели максимизировать переиспользование кода и ускорить разработку фич, им стоило бы рассмотреть Kotlin Multiplatform — тогда они могли бы пропустить крюк через React Native и при этом строить приложения, действительно нативные для платформы. (Rust и его какофония UI-фреймворков нигде особо не являются платформенно-нативными, насколько я знаю. Может, на Pop OS, но я не знаю никого, кто целенаправленно под неё метит.)
Это, очевидно, субъективно, но Rust как язык просто недостаточно эргономичен для многих случаев, куда люди пытаются его применить, особенно для разработки UI. Большинство Rust-библиотек для UI, что я видел, либо используют более императивный стиль, либо пытаются воспроизвести более декларативные подходы вроде Compose UI или SwiftUI, но без приятной языковой эстетики, которая делает их простыми для чтения и написания. И если контраргумент в том, что это всё будут читать и писать LLM, то это совсем другая банка с червями: (1) эпоха субсидированного инференса быстро подходит к концу, и (2) если уж вы всё равно используете LLM, почему бы не поддерживать приложения, максимально нативные для каждой платформы?
- azuanrb
Electron всегда был про быстрый выпуск кросс-платформенных приложений ценой повышенного потребления памяти и потенциально худшей производительности. С LLM или без, его основное ценностное предложение остаётся тем же. LLM просто усиливают уже имеющиеся сильные стороны фреймворка.
Raycast, изначально нативный лаунчер для macOS, недавно выпустил v2 на гибридной архитектуре. Это не Electron, но подход похож на десктопное приложение Spotify — веб-технологии внутри нативной оболочки.
Потребление памяти всё ещё довольно значительное. В простое он использует около 350–450 МБ, а в зависимости от нагрузки иногда доходит до 1–2 ГБ. Плюс в том, что теперь они могут делить большую часть кода между macOS и Windows и развиваться дальше, выходя за рамки просто лаунчера приложений.
Всё всегда было про компромиссы, и LLM в корне этого не меняют.