Emacs 31.1 automates tree-sitter grammars and retires unexec
4 min read

GNU Emacs 31.1 was released on 24 August 2026, and the change most likely to
alter a working day is small: tree-sitter grammars can now install themselves.
The release announcement, posted to the info-gnu-emacs mailing list by Sean
Whitton, points to etc/NEWS for the details rather than listing them, so the
shape of the release comes from the rundowns published alongside it - a
rewritten completion system, a set of window-layout commands, and the removal
of the unexec dumper that has been deprecated since Emacs 27.
Tree-sitter grammars stop being a manual chore
Emacs 31.1 adds a treesit-auto-install-grammar option that installs
tree-sitter grammars automatically, according to Mastering Emacs's rundown of
the release. Until now, using a tree-sitter major mode meant sourcing the
grammar yourself and keeping its version aligned with what the mode expected -
a mismatch produced errors that looked like editor bugs rather than a
dependency problem. Mastering Emacs describes the new option as eliminating
that manual version management.
Tree-sitter navigation also gets more complete. The same rundown lists
treesit-forward-sexp-list and treesit-forward-list for movement across
structural nodes, plus a treesit-explore command for inspecting the parse
tree - the practical way to work out why a mode is highlighting or indenting
something unexpectedly.
The completion system was rewritten
The Completions buffer can now appear eagerly rather than waiting to be asked
for, and the flex matching algorithm has been rewritten, per both Mastering
Emacs and Linux Compatible's coverage of the release candidate. Completion
categories can inherit from one another, and RET now selects the candidate
chosen with M-UP or M-DOWN.
Linux Compatible also documents minibuffer-visible-completions gaining an
up-down value: "You can also use minibuffer-visible-completions with a new
'up-down' value to navigate completions independently of the minibuffer." For
anyone who has assembled this behaviour out of third-party packages, the
question worth asking after upgrading is which of those packages are now
redundant.
Window layouts get first-class commands
Rearranging a window layout has meant deleting and re-splitting windows by hand. Emacs 31.1 adds commands that operate on the layout as a whole, listed by Mastering Emacs:
| Command | What it does |
|---|---|
window-layout-rotate-clockwise | Rotates the layout clockwise |
window-layout-counterclockwise | Rotates it the other way |
window-layout-flip-topdown | Flips the layout vertically |
window-layout-flip-leftright | Flips it horizontally |
window-layout-transpose | Transposes rows and columns |
other-window-backward (C-x O) | Moves to the previous window |
split-window can also resurrect a window that was deleted, per the same
source. Two terminal-facing changes land alongside these: xterm-mouse-mode
is enabled by default in terminals that support it, and child frames now work
on TTY frames.
What was removed, and one fix that did not land
The unexec dumper is gone. It had been deprecated since Emacs 27, and Mastering
Emacs marks its removal as "the end of an era" - relevant mainly to anyone
building Emacs themselves or maintaining packaging for it. The built-in ctags
program was also removed, with Universal Ctags the expected replacement.
Two items did not make this release. The garbage collector work has been postponed to Emacs 32, according to Mastering Emacs. And Linux Compatible reports that a vulnerability in Emacs Lisp symbol shorthands has a mitigation in this release line but that the full resolution is deferred to version 32 - worth knowing if you open Elisp files from sources you do not control.
Unicode support moves to version 17.0, with new input methods for polytonic Greek, Tifinagh, Northern Iroquoian languages including Mohawk and Oneida, Burmese variants, and Syriac.
What this means for developers
The tree-sitter change is the one to act on first. If your config carries
hand-rolled grammar-installation code or a pinned grammar commit, try
treesit-auto-install-grammar on a scratch config before deleting anything -
then remove whatever it makes redundant. The same applies to completion: the
eager Completions buffer and the rewritten flex matcher overlap with what
several popular packages exist to provide, and running 31.1 with a
deliberately minimal config for an afternoon is the fastest way to find out
what you no longer need to carry.
If you build Emacs from source or maintain a package for a distribution, read
the unexec removal as a build-system change and check your recipe before
upgrading users. The ctags removal deserves the same treatment: anything
shelling out to the bundled binary needs Universal Ctags installed instead.
Two things argue for patience rather than haste. The announcement itself
delegates the detail to etc/NEWS, so C-h n inside a freshly built 31.1 is
the authoritative list - not any summary, including this one. And the symbol
shorthand fix landing only in Emacs 32 means the security story here is
incomplete; if you routinely open untrusted Elisp, that is a reason to keep
watching rather than to consider the matter closed.
Sources
- Emacs 31.1 released - GNU info-gnu-emacs mailing list
- What's New in Emacs 31.1? - Mastering Emacs
- GNU Emacs 31.1 RC1: Completion Overhaul, Window Commands and Unicode 17.0 - Linux Compatible
Related articles

SourceHut bans LLM-assisted code and tickets from 10 September
SourceHut will prohibit LLM-written code, tickets and emails from 10 September 2026. Enforcement is honour-based, with no automated AI detection tools at all.

Firefox 157 will ship JPEG XL with a Rust decoder
Mozilla will enable JPEG XL by default in Firefox 157 at the end of September, but only after commissioning Google Research to rewrite the decoder in Rust.

Cloudflare's Kitesurf is a browser built for AI agents, not people
Cloudflare built Kitesurf, an agent-first browser that runs in V8 isolates on Workers - 3-7x lighter than Chromium on CPU and memory, free in beta, Playwright-compatible.
The developer AI briefing
3–5 stories a day, what they mean for developers. Free, no spam.