neomacs README

The project's README from github.com/eval-exec/neomacs. As one markdown file: README.md.

"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 — Next generation of Emacs

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 Sponsor NEO Emacs

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.

Showcase

Latest videos

Watch more demos and development updates on YouTube Eval Exec's YouTube channel.

NEO Emacs: Animated Buffer Transitions NEO Emacs (WIP) v0.0.14 released, still in it's early development NEO Emacs (WIP) is developing GPU Shader

Feature demos

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

Install

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)

On Windows, launch runneomacs.exe for the GUI without a console window. Installer shortcuts use this launcher. Use neomacs.exe from a terminal for -nw, --batch, redirected output, and shell exit status.

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.

The .rpm is built inside an el9 container, so it installs on RHEL 9, Rocky, Alma and Fedora 43+ — a package built on Ubuntu cannot, because rpmbuild records the build host's ncurses and glibc symbol versions as requirements. See releasing-linux.md.

Build from source
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.

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.


❤️ 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:

BTC (Bitcoin) Ethereum — ETH · USDC · any ERC-20
Bitcoin (BTC) donation QR code Ethereum donation QR code (ETH, USDC and other ERC-20 tokens)
bc1p0y3fzffqrqw08k8nc2ge3dfj02hr22ku8nugnc04ek522gty9kjsyy8lgc 0xF5e8493b611F8D4c07850C2cC77b38dD632620F2

Acknowledgments

Built with wgpu · winit · cosmic-text — cursor animations inspired by Neovide.

License

GNU General Public License v3.0 (same as Emacs)

neomacs (eval-exec/neomacs)

multithreading
Searching Database…

1.6K ·GitHub
What is this?NEO Emacs is GNU Emacs rewritten in Rust with a modern GPU display engine: the ~300,000-line C core is replaced by memory-safe Rust, aiming for 100% Emacs compatibility and 10x performance.
Is this a plugin for my current Emacs, or a whole separate editor I would install alongside it?A whole separate program, not an add-on: it is a hard fork of GNU Emacs whose Elisp tree is synced to emacs-31.1, with everything below the Lisp line rebuilt in Rust. You run it instead of your current Emacs.
How do I get it on my machine?Grab a package from GitHub Releases: .deb/.rpm/tarball/AppImage on Linux, .dmg or .zip on macOS (Apple Silicon), an installer .exe or portable .zip on Windows. Docker images and a Cargo build from source also exist.
Do I need to install Rust or any system libraries before it will run?Not for the prebuilt packages - they run as downloaded. On Linux the editor links the system GStreamer runtime for inline video, with codec plugins coming from the host; only building from source needs a Rust toolchain.
Can I already use it as my daily editor, or is it too rough for that?It is explicitly a work in progress: expect rough edges, breaking changes and missing features. macOS and Windows builds are experimental, and pieces like the zero-pause GC and multi-threaded Elisp are still maturing.
Does it only run as a GUI app, or can I use it in a terminal too?Both come from the same binary: a GPU-rendered GUI window, or a TTY session via neomacs -nw. The TUI renderer is usable today and still being polished.
Does it need a powerful GPU, or will an ordinary laptop handle it?It renders through wgpu, which works over Vulkan, Metal, DirectX 12 or OpenGL, so integrated graphics is enough - and in TTY mode the GPU is not needed at all.
Can it really show video, images and web pages inside a buffer?Yes - buffers can embed inline 4K video, GPU-decoded images, a WPE WebKit browser and a GPU terminal, with DMA-BUF zero-copy paths keeping the media on the GPU so the main thread never blocks.
Will my existing init.el, packages and keybindings keep working?That is the stated contract: the goal is 100% GNU Emacs compatibility, currently around 95% and closing. Every rewritten subsystem is diffed against GNU Emacs as a test oracle, and real configs like Doom Emacs serve as the daily test bed.
How deep can I customize it compared to stock Emacs?Deeper: in GNU Emacs hackability stops at the C display engine, while NEO Emacs opens the whole frontend to Elisp - down to render effects and GPU shaders written in WGSL.
Why rewrite Emacs in Rust instead of just using GNU Emacs?The author loves Emacs and wants to evolve it into 'the ultimate modern powerhouse': GPU rendering and a pure-Rust, memory-safe core today, with true multi-threaded Elisp and a zero-pause GC on the roadmap.
What are similar projects?neovide, spacemacs, SpaceVim, helix, vim, oni, LunarVim, awesome-neovim
Creator
eval-exec
Size
227 MB
Stars
1.6K
Age
8mo
Commits · 90 Days