Outil CLI
eval-exec/neomacs avatar
eval-exec/neomacs

NEO Emacs : une réécriture d'Emacs en Rust avec GPU

NEO Emacs (WIP) : Emacs alimenté par GPU écrit en Rust avec un moteur d'affichage moderne. Visant un design moderne et un Elisp multithread, des performances 10x, un GC simultané sans pause et une compatibilité 100 % Emacs.

1 269 étoiles48 forksRustGPL-3.0

En bref

De quoi s’agit-il ?
Un projet en cours de développement qui déplace le moteur d'affichage d'Emacs vers le GPU et remplace son noyau C par Rust, tout en visant la compatibilité avec les configurations et paquets existants.
À qui s’adresse-t-il ?
Le tableau d'état montre que la plupart des domaines centraux sont encore en développement actif ou en optimisation ; le vrai Elisp multithread et un GC sans pause sont encore au stade de conception. Le README ne contient pas de dates de sortie, de benchmarks de performance ou de déclarations sur la stabilité ou les engagements de support.
Puis-je l’utiliser commercialement ?
Oui, sous conditions. GPL-3.0 est une licence copyleft : si vous distribuez un logiciel qui l’inclut, vous devez publier le code source de ce logiciel sous la même licence. Un usage interne, sans distribution, ne déclenche pas cette obligation.
Est-il encore maintenu ?
Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
En quel langage est-il écrit ?
Principalement Rust, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Positionnement du projet et état actuel

NEO Emacs est un fork d'Emacs en cours de développement, lancé par Eval Exec. L'idée centrale du projet est de réimplémenter le noyau C d'Emacs en Rust et de déplacer le moteur d'affichage sur le GPU, tout en maintenant la compatibilité avec l'écosystème Emacs existant. Selon le README, le projet est explicitement un travail en cours : des angles rugueux, des changements cassants et des fonctionnalités manquantes sont attendus, et les rapports de bogues sont les bienvenus. Le README indique également que NEO Emacs est un fork dur de GNU Emacs, avec l'arbre Lisp synchronisé sur emacs-31.0.90 et le noyau C entièrement remplacé par Rust.

La compatibilité comme contrat

Le projet considère la compatibilité comme son contrat central. Le README affirme que les fichiers init.el, les paquets et la mémoire musculaire des utilisateurs doivent continuer à fonctionner. Pour vérifier cela, GNU Emacs lui-même est utilisé comme oracle de test : chaque sous-système réécrit est vérifié pour se comporter de manière identique à GNU Emacs. Des configurations réelles comme Doom Emacs servent de banc d'essai quotidien. Le tableau d'état place actuellement la compatibilité avec GNU Emacs à environ 95 %, les derniers écarts étant encore en cours de comblement.

Moteur d'affichage GPU et médias riches

Le moteur d'affichage est un objectif majeur. Il rend via wgpu, avec les backends Vulkan, Metal, DX12 et GL. Le README prétend qu'environ 4 000 lignes de Rust remplacent les quelque 50 000 lignes de xdisp.c. Le moteur prend en charge l'intégration de médias riches dans les tampons : vidéo 4K via GStreamer et VA-API, images décodées par GPU, navigateur WPE WebKit et terminal adossé au GPU, le tout en zéro copie via DMA-BUF. Les animations font également partie des fonctionnalités, avec 8 modes de curseur, 21 effets de défilement et 10 transitions de tampon, tous configurables depuis Elisp.

Installation et compilation

Des paquets préconstruits sont listés pour Linux (AppImage, .deb, .rpm, tarball, pour x86_64 et aarch64), macOS (.dmg expérimental pour Apple Silicon) et Windows (installateur .exe expérimental et .zip portable). Le README fournit également des étapes de compilation depuis les sources : cloner le dépôt, entrer éventuellement dans l'environnement de développement avec nix develop, puis exécuter cargo xtask fresh-build --release pour compiler le code Rust, amorcer Elisp et générer le dump portable. Le binaire obtenu se lance avec ./target/release/neomacs. Les dépendances de plateforme et les suites de tests sont référencées dans docs/building.md, qui n'est pas reproduit dans le README.

Architecture : deux threads

Le résumé d'architecture du README indique que tout s'exécute en Rust sur deux threads : le thread Emacs possède le runtime Elisp et l'état de l'éditeur, tandis que le thread de rendu possède le GPU. Les principes de conception, une carte complète des modules et la justification du choix de Rust et de wgpu sont annoncés dans docs/ARCHITECTURE.md. Le README souligne également que tout le frontend, des effets de rendu jusqu'aux shaders GPU écrits en WGSL, est ouvert à Elisp, afin que les utilisateurs puissent bidouiller les pixels et pas seulement le texte.

Statut et feuille de route

Le tableau d'état détaille la progression par domaine. La compatibilité avec GNU Emacs est indiquée à environ 95 % et les derniers écarts sont en cours de comblement. La compilation JIT et le cache inline fonctionnent, mais sont profilés et améliorés. Le GC sans pause mûrit. Les shaders GPU et surfaces hackables depuis Elisp sont à un stade précoce et en expansion. Le runtime Elisp en Rust, comprenant l'évaluateur, la VM bytecode et le dump portable, est en cours de refactorisation et de test. Le moteur d'affichage et de disposition GPU est précoce et s'améliore. Les images inline, la vidéo 4K et le navigateur WebKit fonctionnent aujourd'hui mais restent expérimentaux. Le neo-term haute performance (terminal GPU) est en développement, et les animations sont en cours de polissage. Les performances sont profilées et benchmarkées, le vrai Elisp multithread est en conception et en recherche, et le rendu TUI est utilisable mais encore en cours de polissage. La prise en charge multiplateforme privilégie Linux et macOS ; Windows attend des tests, et WASM, Android et iOS sont prévus.

Dépendances, remerciements et licence

Les remerciements listent wgpu, winit et cosmic-text comme bibliothèques avec lesquelles le projet est construit, et précisent que les animations de curseur s'inspirent de Neovide. La licence est GPL-3.0, la même qu'Emacs. Cependant, l'extrait de licence fourni ne contient pas le texte de licence lui-même ; il indique seulement qu'aucun fichier LICENSE courant n'a été trouvé. Les termes exacts de la licence ne sont donc pas disponibles dans le matériel fourni. Le README décrit également le projet comme à long terme et invite au parrainage via GitHub Sponsors. Il ne fait aucune déclaration sur la sécurité, le support ou la garantie.

Conclusion éditoriale

Le tableau d'état montre que la plupart des domaines centraux sont encore en développement actif ou en optimisation ; le vrai Elisp multithread et un GC sans pause sont encore au stade de conception. Le README ne contient pas de dates de sortie, de benchmarks de performance ou de déclarations sur la stabilité ou les engagements de support.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté