Back
Neomacs: a GPU-rendered Rust hard fork of GNU Emacs
SiTech AI Team3 წთ. საკითხავი

Neomacs: a GPU-rendered Rust hard fork of GNU Emacs

Developer Eval Exec has published Neomacs, a work-in-progress hard fork of GNU Emacs whose C core has been rewritten in Rust. Rendering moves to the GPU via wgpu, and the project promises 100% compatibility with existing configs and packages.

NEO Emacs, or Neomacs, is a work-in-progress fork of GNU Emacs published on GitHub by the developer Eval Exec. The project keeps what users already depend on, including init.el, existing packages and keyboard habits, and rebuilds the machinery underneath: the display engine runs on the GPU, and the roughly 300,000-line C core has been reimplemented in Rust.

According to the repository, the shipped neomacs binary contains no C core at all. The Elisp evaluator, bytecode VM, garbage collector, portable dump, buffers, windows, keyboard handling, processes, layout and rendering are all written in Rust. The lisp directory, the Elisp half of the editor, is retained from GNU Emacs and kept in sync with the emacs-31 development line.

A GPU engine on its own thread

The architecture splits the work across two threads: the Emacs thread owns the Elisp runtime and editor state, while a render thread owns the GPU. The display engine is built on wgpu, which covers Vulkan, Metal, DX12 and OpenGL, and about 4,000 lines of Rust replace the roughly 50,000 lines of xdisp.c. Buffers can carry media: inline 4K video through GStreamer, GPU-decoded images, a WPE WebKit browser and a GPU terminal. A separate animation layer offers eight cursor modes, 21 scroll effects and ten buffer transitions, all configurable from Elisp.

Why a fork rather than a rewrite

The FAQ describes Emacs as a 40-year-old C codebase that has not kept up with modern hardware. The listed problems include CPU-only rendering designed for 1980s text terminals, no native video playback, and a GPU that sits idle. Elisp is said to lack inline caching and runtime JIT optimization, with a stop-the-world garbage collector, and because it runs on a single thread one slow call freezes the whole editor. Large files remain an issue: a single gap buffer holds the entire file, so a hundred-megabyte log still stalls the editor.

Forking rather than starting from scratch is deliberate. GNU Emacs stays in the project as a reference and test oracle: oracle suites, TUI grid comparisons and GUI parity checks diff Neomacs against GNU Emacs so each Rust rewrite can be verified to produce identical behaviour. The changes are, in the project's words, too invasive to ever be accepted upstream, which is why Neomacs is described as a hard fork.

Status and compatibility

Neomacs is explicitly labelled alpha: the README warns about rough edges, breaking changes and missing features, and asks users to file bug reports. The stated contract is 100% compatibility on observable behaviour, meaning semantics, behaviour and logical display, with freedom to be better below that line, for example in startup speed. The next goals are true multi-threaded Elisp and a concurrent, zero-pause garbage collector. The same binary renders on the GPU or in a terminal, and images for amd64 and arm64 are published on Docker Hub and the GitHub Container Registry. The repository had around 1,177 stars and 47 forks at the time of writing.

SSiTech

SiTech — AI-powered web development

We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.