"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." ✨

NEOMACS banner

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.

CI Latest release Downloads License: GPL-3.0 Discussions X: Eval-Exec

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?](docs/faq.md)) > [!IMPORTANT] > NEO Emacs is a **work in progress**. Expect rough edges, breaking changes, and missing > features — [bug reports](https://github.com/eval-exec/neomacs/issues) are very welcome. > [!NOTE] > NEO Emacs is a hard fork of GNU Emacs (Lisp tree synced to `emacs-31.0.90`). The C core > has been fully replaced by Rust. Fork provenance and rationale: [FAQ](docs/faq.md). ## Showcase [![NEO Emacs Showcase Video](https://img.youtube.com/vi/WZRWWuuNZX0/maxresdefault.jpg)](https://youtu.be/WZRWWuuNZX0?si=yHUy1lUDTznUbTMx) **Cursor, buffer-switch, and scroll animations** — GPU-rendered at display refresh rate: https://github.com/user-attachments/assets/85b7ee7b-3f4a-4cd2-a84f-86a91d052f11
More: 4K video, inline browser, inline terminal, rounded box faces… ### Inline 4K Video Playback — DMA-BUF zero-copy, GPU backend https://github.com/user-attachments/assets/275c6d9a-fced-44f6-8f43-3bbd2984d672 ### Inline 4K Images — GPU-decoded, won't block the Emacs main thread Inline 4K images in Emacs buffer ### Inline Web Browser (WPE WebKit) — GPU backend, DMA-BUF zero-copy Inline WPE WebKit browser in Emacs buffer ### Inline Terminal (Alacritty) — GPU-backed terminal embedded in a buffer Inline Alacritty terminal in Emacs buffer ### GPU Text with Rounded Box Faces Round corner box face attribute
## Highlights - **GPU display engine** — text, images, and effects rendered via wgpu (Vulkan · Metal · DX12 · GL); ~4,000 lines of Rust replace ~50,000 lines of `xdisp.c` - **Rich media in buffers** — inline 4K video (GStreamer + VA-API), GPU-decoded images, a WPE WebKit browser, and a GPU terminal — all zero-copy via DMA-BUF - **Animations everywhere** — 8 cursor modes, 21 scroll effects, 10 buffer transitions at display refresh rate, all configurable from Elisp ([full catalog](docs/animations.md)) - **Hackable below the Lisp line** — in GNU Emacs, hackability ends where the C display engine begins; NEO Emacs opens the whole frontend to Elisp, from render effects down to GPU shaders (WGSL) — hack the pixels, not just the text - **Compatibility as the contract** — your `init.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 bed - **Pure-Rust core** — no C left: the Elisp evaluator, bytecode VM, GC, portable dump, and editor internals are all memory-safe, modern Rust - **GUI or terminal** — the same binary renders on the GPU or in a TTY (`neomacs -nw`) - **What's next** — true multi-threaded Elisp and a concurrent zero-pause GC ([status](#status)) ## Install Download the latest release for your platform from **[Releases](https://github.com/eval-exec/neomacs/releases/latest)**: | Platform | Packages | |----------|----------| | **Linux** | AppImage · `.deb` · `.rpm` · tarball (x86_64, aarch64) | | **macOS** *(experimental)* | `.dmg` (Apple Silicon) | | **Windows** *(experimental)* | installer `.exe` · portable `.zip` |
Build from source ```bash 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 ``` Platform dependencies (Arch, macOS, Nix/Cachix) and the test suites: [docs/building.md](docs/building.md).
## Status | 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 | ## Architecture 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](docs/ARCHITECTURE.md). ## Sponsoring 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](https://github.com/sponsors/eval-exec). ## Acknowledgments Built with [wgpu](https://wgpu.rs/) · [winit](https://github.com/rust-windowing/winit) · [cosmic-text](https://github.com/pop-os/cosmic-text) — cursor animations inspired by [Neovide](https://neovide.dev/). ## License GNU General Public License v3.0 (same as Emacs)