Emacs 30

It's official; Emacs 30 has been released! Let's try it!

If you've never compiled Emacs before, make sure you have the dependencies first.

cd ~/Downloads
❯ wget https://ftpmirror.gnu.org/emacs/emacs-30.1.tar.xz
❯ wget https://ftpmirror.gnu.org/emacs/emacs-30.1.tar.xz.sig
❯ wget https://ftp.gnu.org/gnu/gnu-keyring.gpg
❯ gpgv --keyring ./gnu-keyring.gpg emacs-30.1.tar.xz.sig emacs-30.1.tar.xz
gpgv: Signature made Sun 23 Feb 2025 12:01:12 PM EST
gpgv:                using RSA key BB02E407AE9EAA87C9E72A1D2D4E1FE95957135D
gpgv:                issuer "stefankangas@gmail.com"
gpgv: Good signature from "Stefan Kangas <stefan@marxist.se>"
gpgv:                 aka "Stefan Kangas <skangas@skangas.se>"

Looks good. Thanks, Stefan!

cd ~/Emacs
❯ tar xf ~/Downloads/emacs-30.1.tar.xz
❯ cd emacs-30.1
❯ ./autogen.sh
...
❯ ./configure
...
❯ make -j$(nproc)
...
❯ src/emacs -Q

Now if we M-x describe-variable RET system-configuration-features RET, we see

"ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
 JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES
 NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3
 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM
 XINPUT2 XPM GTK3 ZLIB"

we have NATIVE_COMP, SQLITE3, and TREE_SITTER without any arguments to configure. Nice!

❯ sudo make install

Now before we blindly copy our Emacs 29 configuration, let's think about it. For example, Emacs 30 includes which-key, so our configuration changes from

(use-package which-key
  :ensure t
  :config
  (which-key-mode))

to just

(which-key-mode)

That is, which-key is included, but we still have turn it on, I guess.

I took the opportunity to go through my whole configuration and tidy up a bit.

A couple of things I haven't had a chance to try yet are RustOwl, which should make use of the new :vc attribute in use-package and perl-ts-mode, which requires Emacs 30 for some reason.

Philip Kaludercic gave a nice talk on Emacs 30 Highlights at EmacsConf last year.

screenshot of Emacs 30 with some Rust code

Thanks to everyone involved in the development and release of Emacs 30! This is the best release ever!