GNU Emacs 31.0.91 pretest drops completion overhaul, layout rotation, and battery-aware native compilation
The second pretest in the 31.1 cycle removes the legacy unexec dumper, rewrites the flex completion style, and adds a dozen new window management commands.
GNU Emacs 31.0.91 is here. Sean Whitton announced the pretest release on the info-gnu-emacs mailing list today, July 23, 2026. You can grab the tarball from alpha.gnu.org right now.
This hits the pretest window with a heavy hand. Emacs 31 has been quietly accumulating architectural tweaks since the last stable release, and 31.0.91 pulls a lot of those threads together. The unexec dumper is finally gone after four years of deprecation. The portable dumper now actually works on m68k a.out targets, which is a nice win for anyone running vintage hardware. Old system ctags are gone too, with Universal Ctags taking over.
Window & Frame Management
If you have ever fought with Emacs window geometry, the new commands might feel like a relief. window-layout-rotate-clockwise and its counter-clockwise sibling rotate your entire setup with a single keystroke. Flip layouts top-down or left-right with window-layout-flip-topdown. There is also a transpose command to swap horizontal and vertical splits, plus cyclic rotation via rotate-windows. Frames get their own upgrades too. You can now grab a unique frame ID, rename text-mode frames, split or merge them on the fly, and even clone frames using the new cloned-from parameter.
Completion & Display Overhaul
The completion system got a serious tune-up. A new flex style replaces the old algorithm entirely. It parses candidates faster and handles partial matches with less friction. Eager display of the *Completions* buffer is now opt-in, controlled by completion-eager-display and completion-eager-update. You can finally navigate completions with up and down arrows while keeping the minibuffer in focus. Hit RET to pick whatever you last selected with M-<UP> or M-<DOWN>.
Startup order flipped for site administrators. site-start.el now loads before early-init.el, so sysadmins can override things that were previously locked behind init guards. xterm-mouse-mode is finally enabled by default in compatible terminals. If you have a user-lisp/ directory in your config, Emacs will recursively byte-compile and autoload it on startup. Native compilation gets a new native-comp-async-on-battery-power option, which is useful if you noticed your laptop fan spinning up every time you save a buffer.
Unicode 17.0 is fully supported. That brings in polytonic and archaic Greek via a new greek-polytonic input method, Tifinagh script for Berber languages, and Northern Iroquoian languages like Mohawk and Oneida. Burmese-based scripts and Syriac languages round out the list. If you work with older texts or regional dialects, the coverage is considerably broader than before.
The build system gained a --with-systemduserunitdir option for systemd user units. GCC defaults for 32-bit x86 now prefer -mfpmath=sse or -fno-tree-sra to dodge a known compiler bug. To verify the tarball, pull the .sig file and run gpg --verify. The SHA256 checksum is 21cff7e087e8b4f2ff9e013e359215814c322948cee71154f94864a1b0fa40a1. Run M-x report-emacs-bug if you hit a wall during testing. The full changelog lives in etc/NEWS inside the tarball, and you can browse the git tree at git.savannah.gnu.org.
Head here to download the tarball.
