IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Discord abandonne son application Electron, basée sur le framework web, qui peut consommer jusqu'à 4 Go de RAM sous Windows 11
La nouvelle version réécrite en Rust ne consomme quant à elle que 290 Mo

Le , par Alex

0PARTAGES

3  0 
Discord est en train de réécrire son application en Rust, et la société a désormais présenté le nouveau client fonctionnant parallèlement à l'actuel. Le cofondateur et directeur technique Stanislav Vishnevskiy, qui avait confirmé cette refonte, a déclaré que la réduction de la consommation de mémoire n'était « qu'une partie de l'histoire », soulignant le temps de démarrage de la nouvelle application et affirmant que naviguer dans celle-ci « donne une impression d'instantanéité ». Cette refonte remplace Electron, le framework web sur lequel repose le client de bureau actuel. Une première version pour Windows 11 partagée par Vishnevskiy, répertoriée sous le nom de « Discord Phoenix » dans le Gestionnaire des tâches, utilisait 290,2 Mo de RAM alors que deux comptes étaient connectés simultanément.

Electron (anciennement connu sous le nom d’Atom Shell) est un framework logiciel libre et open source développé et maintenu par la Fondation OpenJS. Ce framework est conçu pour créer des applications de bureau à l’aide de technologies web (principalement HTML, CSS et JavaScript, bien que d’autres technologies telles que les frameworks front-end et WebAssembly soient également possibles) qui sont rendues à l’aide d’une version du moteur de navigation Chromium et d’un backend utilisant l’environnement d’exécution Node.js. Il utilise également diverses API pour offrir des fonctionnalités telles que l'intégration native avec les services Node.js et un module de communication inter-processus.

Rust est un langage de programmation polyvalent qui met l'accent sur les performances, la sécurité des types, la concurrence et la sécurité de la mémoire. Rust prend en charge plusieurs paradigmes de programmation. Il s'inspire de concepts issus de la programmation fonctionnelle, notamment l'immuabilité, les fonctions d'ordre supérieur, les types de données algébriques et la correspondance de motifs. Rust propose également des structs, des énumérations, des traits et des méthodes comme alternatives à la programmation orientée objet traditionnelle, sans recourir aux classes ni à l'héritage. Rust garantit la sécurité de la mémoire (c'est-à-dire que toutes les références pointent vers de la mémoire valide) sans recourir à un ramasse-miettes classique ; à la place, les erreurs de sécurité de la mémoire et les conflits d'accès sont évités par le « vérificateur d'emprunt », qui suit la durée de vie des objets référencés lors de la compilation.

Début octobre, l’équipe de développement de Rust a officiellement publié la version 1.99, qui apporte des améliorations significatives à ce langage de programmation système. Cette version introduit une prise en charge stabilisée des fonctions variadiques C-ABI avec les ABI « C » et « C-unwind », permettant désormais aux développeurs d’écrire des fonctions variadiques directement en Rust plutôt que de se contenter d’appeler des fonctions définies en externe, comme celles de la bibliothèque libc. Au-delà de la prise en charge des fonctions à arguments variables, cette version apporte des améliorations concrètes en matière de gestion de la mémoire et de code non sécurisé.

Selon un nouveau rapport, Discord est en train de réécrire son application en Rust, et la société a désormais présenté le nouveau client fonctionnant parallèlement à l'actuel. Le cofondateur et directeur technique Stanislav Vishnevskiy, qui avait confirmé cette refonte, a déclaré que la réduction de la consommation de mémoire n'était « qu'une partie de l'histoire », soulignant le temps de démarrage de la nouvelle application et affirmant que naviguer dans celle-ci « donne une impression d'instantanéité ».

Cette refonte remplace Electron, le framework web sur lequel repose le client de bureau actuel. Une première version pour Windows 11 partagée par Vishnevskiy, répertoriée sous le nom de « Discord Phoenix » dans le Gestionnaire des tâches, utilisait 290,2 Mo de RAM alors que deux comptes étaient connectés simultanément. La version mobile est également concernée, React Native étant abandonné sur les téléphones. Aucune date de sortie n’a encore été annoncée. Discord parle d’une nouvelle version en cours de développement, et Vishnevskiy a déclaré que l’entreprise espérait la soumettre à des tests auprès des utilisateurs « bientôt™ ».


Electron permet à une entreprise de créer une application de bureau à partir du même code web que celui utilisé pour un site web. Le hic, c’est que chaque application Electron intègre sa propre copie de Chromium, le moteur derrière Google Chrome ; ainsi, exécuter Discord sur votre PC revient en fait à faire tourner un navigateur allégé en arrière-plan. Rust est un langage de programmation qui se compile directement en code natif pour la machine sur laquelle il s’exécute, sans couche de navigateur sous-jacente.

Discord n’en est pas à son coup d’essai avec Rust. Vishnevskiy a indiqué que l’entreprise l’utilisait depuis 2018, et qu’une grande partie de son infrastructure, de sa technologie vocale et de certaines composantes du client actuel fonctionnaient déjà sur ce langage. Dans un article de blog technique publié en 2020, Discord a expliqué comment elle avait migré « Read States », le service qui suit les canaux et les messages lus par chaque utilisateur, de Go vers Rust afin d’éliminer les pics de latence. À l’époque, elle utilisait également Rust pour son SDK de jeux ainsi que pour la capture et l’encodage vidéo dans Go Live, sa fonctionnalité de partage d’écran.

Le reste du client a constitué la partie la plus difficile. Vishnevskiy a qualifié le passage de l’ensemble du code vers Rust de « Saint Graal », et l’histoire des applications mobiles explique pourquoi. L’application iOS a été développée à l’origine avec React Native, tandis que l’application Android y est passée il y a quelques années car elle prenait constamment du retard en matière de fonctionnalités. Dans le cadre de cette refonte, les applications mobiles conservent leur interface native mais partagent leur code sous-jacent avec la version de bureau via Rust. Une base de code commune devrait permettre à Discord de développer une fonctionnalité une seule fois et de la déployer partout, ce qui correspond exactement au problème que React Native avait été appelé à résoudre sur Android.

Vishnevskiy laissait entendre ce changement depuis plusieurs jours. Le 3 novembre, il a déclaré à un utilisateur sur X que l’équipe travaillait sur une mise à jour bien plus importante, et lorsqu’un autre utilisateur a plaisanté en disant que Discord exécutait deux copies de Chromium, il a répondu : « Ou zéro. » La plupart des suppositions se sont alors portées sur Tauri, une alternative populaire à Electron basée sur Rust. Vishnevskiy a démenti cette hypothèse : « Ce n’est pas Tauri, c’est GPUI, bravo à tous pour vos suppositions. »

Cette distinction est importante, car les applications Tauri sont écrites en Rust mais affichent généralement une interface web via la vue web intégrée au système d’exploitation. Le simple fait de choisir Rust n’aurait pas permis de savoir si Discord conservait son interface utilisateur basée sur le web. GPUI, le framework d’interface développé par l’équipe à l’origine de l’éditeur de code Zed, dessine quant à lui l’interface de manière native. Vishnevskiy a précisé que la nouvelle application elle-même est native et n’utilise la vue Web du système que pour le contenu intégré, tel que les vidéos YouTube et les « Activities », ces jeux intégrés à l’application comme Wordle et Putt Party.

Discord a ajouté ses propres correctifs à GPUI, et Vishnevskiy a indiqué que l’entreprise examinerait ce qu’elle pourrait apporter en retour au framework lorsque cela présenterait un intérêt pour l’ensemble de la communauté. Pour les utilisateurs, ce changement ne devrait pas être visible à l’écran. Interrogé par un développeur de bots sur la manière dont les boutons, les menus et les autres éléments de l’interface s’afficheraient dans la nouvelle application, M. Vishnevskiy a déclaré : « L’application a le même aspect et fonctionne exactement comme l’actuelle. » Lorsqu’on lui a demandé si les performances s’amélioreraient, il a répondu : « Nous nous attendons à ce qu’elles soient meilleures. »

La comparaison officielle de Discord, publiée le 5 novembre, présente à gauche l’application que les utilisateurs utilisent quotidiennement et à droite la version reconstruite en Rust. Vishnevskiy a mis l’accent sur la vitesse plutôt que sur la mémoire, affirmant que la réduction de l’utilisation de la RAM n’était « qu’une partie de l’histoire » et attirant l’attention des spectateurs sur le temps de démarrage. Le nouveau client ne devrait pas afficher l’écran « Démarrage », car il n’a plus besoin de charger au préalable les bibliothèques d’Electron.


Discord est l’une des applications Electron les plus gourmandes en ressources sous Windows. Selon un rapport, Discord occupait...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !