NEO Emacs (WIP): GPU powered Emacs written in Rust with a modern display engine. Aiming for modern design & multi-threaded Elisp, 10x performance, zero-pause concurrent GC and 100% Emacs compatibility.
1,221
stars
22,624
commits
Rust
primary language
Sep 14, 2026
updated
"I started Neomacs because I love Emacs, I respect Emacs, and I want to evolve the legendary Emacs into the ultimate modern powerhouse." — Eval Exec
✨ "While other editors can save your files, only Emacs can save your soul." ✨
Emacs, rewritten in Rust — unleashed on the GPU, fixing what 40 years of C never could.
Built for 100% compatibility with the Emacs ecosystem you already have — your config, your packages, your muscle memory.
Install · Showcase · Animations · Architecture · FAQ · Discussions
NEO Emacs keeps everything that makes Emacs Emacs — your init.el, your packages, your
muscle memory — and rebuilds the machinery underneath: the display engine runs on the
GPU, and the ~300,000-line C core is reimplemented in Rust. GNU Emacs itself serves as
the test oracle, so every rewritten subsystem is verified to behave identically.
(Why rewrite Emacs?)
[!IMPORTANT] NEO Emacs is a work in progress. Expect rough edges, breaking changes, and missing features — bug reports are very welcome.
[!NOTE] NEO Emacs is a hard fork of GNU Emacs (Lisp tree synced to
emacs-31.1). The C core has been fully replaced by Rust. Fork provenance and rationale: FAQ.
Cursor, buffer-switch, and scroll animations — GPU-rendered at display refresh rate:
https://github.com/user-attachments/assets/85b7ee7b-3f4a-4cd2-a84f-86a91d052f11
https://github.com/user-attachments/assets/275c6d9a-fced-44f6-8f43-3bbd2984d672
xdisp.cinit.el, packages, and muscle memory;
every rewritten subsystem is diffed against GNU Emacs as a test oracle, and
real-world configs like Doom Emacs are the daily test bedneomacs -nw)Prefer system packages? Download them from Releases:
| Platform | Packages |
|---|---|
| Linux | .deb · .rpm · tarball · AppImage (x86_64, aarch64) |
| macOS (experimental) | .dmg · .zip · .tar.gz (Apple Silicon) |
| Windows (experimental) | installer .exe · portable .zip (x86_64, aarch64) |
For terminal, batch, and Linux container deployments, the complete application
is also published for amd64 and arm64 on
evalexec/neomacs and
ghcr.io/eval-exec/neomacs.
See the Docker guide.
The Linux product links the system GStreamer runtime and provides video. Every
Linux artifact carries it: the .deb and .rpm declare the dependency, and the
AppImage bundles that closure, though codec plugin families still come from the
host.
git clone https://github.com/eval-exec/neomacs && cd neomacs
# Optional (recommended): repo dev shell with all dependencies
nix develop --accept-flake-config
# Compiles Rust, bootstraps Elisp, generates the portable dump
cargo xtask fresh-build --release
./target/release/neomacs
Run Cargo commands from within the checkout (normally its root). Cargo discovers
.cargo/config.toml from the invocation directory; Neomacs uses that config to
provide member crates with the repository root for shared Lisp and test assets.
Platform dependencies (Arch, macOS, Nix/Cachix) and the test suites: docs/building.md.
| Area | State |
|---|---|
| 100% GNU Emacs compatibility (oracle test suites) | 🚧 ~95%, closing the last gaps |
| JIT compilation + inline caching for Elisp | 🚧 working, profiling and improving |
| zero pause GC | 🚧 maturing |
| Elisp-hackable frontend — GPU shaders, surfaces | 🚧 early, expanding |
| Rust Elisp runtime — evaluator, bytecode VM, portable dump | 🚧 refactoring, testing, improving |
GPU display + layout engine (replaces xdisp.c) | 🚧 early, improving |
| Inline images, 4K video, WebKit browser | 🚧 works today, experimental, improving |
| High-performance neo-term (GPU terminal) | 🚧 in development |
| Cursor / scroll / buffer-switch animations | 🚧 polishing, catalog growing |
| Performance | 🔬 profiling, benchmarking, tuning |
| True multi-threaded Elisp | 🔬 designing, researching, experimental attempts |
TUI renderer (neomacs -nw) | 🚧 usable, polishing |
| Cross-platform support | 🚧 Linux & macOS first; Windows awaiting testing; WASM, Android & iOS planned |
Everything runs in Rust across two threads — the Emacs thread owns the Elisp runtime and editor state, the render thread owns the GPU.
Design principles, the full module map, and why Rust/wgpu: docs/ARCHITECTURE.md.
NEO Emacs is a long-term project that takes significant ongoing work to build, test, and maintain. If NEO Emacs is useful or exciting to you, please consider supporting its development on ❤️ GitHub Sponsors ❤️.
Crypto donations are also welcome — scan a QR code or copy an address:
| BTC (Bitcoin) | Ethereum — ETH · USDC · any ERC-20 |
|---|---|
![]() | ![]() |
| bc1p0y3fzffqrqw08k8nc2ge3dfj02hr22ku8nugnc04ek522gty9kjsyy8lgc | 0xF5e8493b611F8D4c07850C2cC77b38dD632620F2 |
Built with wgpu · winit · cosmic-text — cursor animations inspired by Neovide.
GNU General Public License v3.0 (same as Emacs)
Hacker News (2)
Rust
57.9%
Emacs Lisp
37.7%
Common Lisp
2.2%
NEO Emacs (WIP): GPU powered Emacs written in Rust with a modern display engine. Aiming for modern design & multi-threaded Elisp, 10x performance, zero-pause concurrent GC and 100% Emacs compatibility.
1,221
stars
22,624
commits
Rust
primary language
Sep 14, 2026
updated
"I started Neomacs because I love Emacs, I respect Emacs, and I want to evolve the legendary Emacs into the ultimate modern powerhouse." — Eval Exec
✨ "While other editors can save your files, only Emacs can save your soul." ✨
Emacs, rewritten in Rust — unleashed on the GPU, fixing what 40 years of C never could.
Built for 100% compatibility with the Emacs ecosystem you already have — your config, your packages, your muscle memory.
Install · Showcase · Animations · Architecture · FAQ · Discussions
NEO Emacs keeps everything that makes Emacs Emacs — your init.el, your packages, your
muscle memory — and rebuilds the machinery underneath: the display engine runs on the
GPU, and the ~300,000-line C core is reimplemented in Rust. GNU Emacs itself serves as
the test oracle, so every rewritten subsystem is verified to behave identically.
(Why rewrite Emacs?)
[!IMPORTANT] NEO Emacs is a work in progress. Expect rough edges, breaking changes, and missing features — bug reports are very welcome.
[!NOTE] NEO Emacs is a hard fork of GNU Emacs (Lisp tree synced to
emacs-31.1). The C core has been fully replaced by Rust. Fork provenance and rationale: FAQ.
Cursor, buffer-switch, and scroll animations — GPU-rendered at display refresh rate:
https://github.com/user-attachments/assets/85b7ee7b-3f4a-4cd2-a84f-86a91d052f11
https://github.com/user-attachments/assets/275c6d9a-fced-44f6-8f43-3bbd2984d672
xdisp.cinit.el, packages, and muscle memory;
every rewritten subsystem is diffed against GNU Emacs as a test oracle, and
real-world configs like Doom Emacs are the daily test bedneomacs -nw)Prefer system packages? Download them from Releases:
| Platform | Packages |
|---|---|
| Linux | .deb · .rpm · tarball · AppImage (x86_64, aarch64) |
| macOS (experimental) | .dmg · .zip · .tar.gz (Apple Silicon) |
| Windows (experimental) | installer .exe · portable .zip (x86_64, aarch64) |
For terminal, batch, and Linux container deployments, the complete application
is also published for amd64 and arm64 on
evalexec/neomacs and
ghcr.io/eval-exec/neomacs.
See the Docker guide.
The Linux product links the system GStreamer runtime and provides video. Every
Linux artifact carries it: the .deb and .rpm declare the dependency, and the
AppImage bundles that closure, though codec plugin families still come from the
host.
git clone https://github.com/eval-exec/neomacs && cd neomacs
# Optional (recommended): repo dev shell with all dependencies
nix develop --accept-flake-config
# Compiles Rust, bootstraps Elisp, generates the portable dump
cargo xtask fresh-build --release
./target/release/neomacs
Run Cargo commands from within the checkout (normally its root). Cargo discovers
.cargo/config.toml from the invocation directory; Neomacs uses that config to
provide member crates with the repository root for shared Lisp and test assets.
Platform dependencies (Arch, macOS, Nix/Cachix) and the test suites: docs/building.md.
| Area | State |
|---|---|
| 100% GNU Emacs compatibility (oracle test suites) | 🚧 ~95%, closing the last gaps |
| JIT compilation + inline caching for Elisp | 🚧 working, profiling and improving |
| zero pause GC | 🚧 maturing |
| Elisp-hackable frontend — GPU shaders, surfaces | 🚧 early, expanding |
| Rust Elisp runtime — evaluator, bytecode VM, portable dump | 🚧 refactoring, testing, improving |
GPU display + layout engine (replaces xdisp.c) | 🚧 early, improving |
| Inline images, 4K video, WebKit browser | 🚧 works today, experimental, improving |
| High-performance neo-term (GPU terminal) | 🚧 in development |
| Cursor / scroll / buffer-switch animations | 🚧 polishing, catalog growing |
| Performance | 🔬 profiling, benchmarking, tuning |
| True multi-threaded Elisp | 🔬 designing, researching, experimental attempts |
TUI renderer (neomacs -nw) | 🚧 usable, polishing |
| Cross-platform support | 🚧 Linux & macOS first; Windows awaiting testing; WASM, Android & iOS planned |
Everything runs in Rust across two threads — the Emacs thread owns the Elisp runtime and editor state, the render thread owns the GPU.
Design principles, the full module map, and why Rust/wgpu: docs/ARCHITECTURE.md.
NEO Emacs is a long-term project that takes significant ongoing work to build, test, and maintain. If NEO Emacs is useful or exciting to you, please consider supporting its development on ❤️ GitHub Sponsors ❤️.
Crypto donations are also welcome — scan a QR code or copy an address:
| BTC (Bitcoin) | Ethereum — ETH · USDC · any ERC-20 |
|---|---|
![]() | ![]() |
| bc1p0y3fzffqrqw08k8nc2ge3dfj02hr22ku8nugnc04ek522gty9kjsyy8lgc | 0xF5e8493b611F8D4c07850C2cC77b38dD632620F2 |
Built with wgpu · winit · cosmic-text — cursor animations inspired by Neovide.
GNU General Public License v3.0 (same as Emacs)
Hacker News (2)
Rust
57.9%
Emacs Lisp
37.7%
Common Lisp
2.2%