Looking Ahead to Emacs 30
Looking ahead to Emacs 30 [LWN.net]


Ignore previous instructions; subscribe to LWN today

Every article on LWN.net is written by humans, for humans. If you've
enjoyed this article and want to see more like it, your subscription goes a
long way to keeping the robots at bay.  We are offering a free one-month trial subscription (no credit card required) to get you started.



EmacsConf 2023 was, like its
recent predecessors, an online conference with lots of talks about various
aspects of the Emacs
editor—though, of course, it is way more than just an editor.  Last year's
edition was held in early December.  One of the
talks that looked interesting was on Emacs
development, which was given live by John Wiegley.  In it, he briefly
described some 
of the biggest features coming in Emacs 30, which is the next major version
coming for the tool.


Talk


Wiegley's talk is something of a yearly tradition at EmacsConf,
apparently.  He noted that he is not an Emacs maintainer, so he gathered
the information for the presentation by talking for an hour with Eli
Zaretskii, who 
is a longtime maintainer. Zaretskii told him that Emacs 29, released
in July 2023, had lots of new features; some of those were "quite radical",
Wiegley said, 
but it has been successful and well-received.  The Emacs 29.2 release was imminent at the time of the talk; it came out in
mid-January.  The plan is to make a new release branch for Emacs 30
sometime fairly shortly after that
point, he said.



Emacs 30 looks like it will "be a little less interesting that Emacs 29
was" because there will likely be fewer big changes going in, but that does
not mean there is nothing planned.  To start with, it will have Android
support, which is a feature that LWN tried out
last year. "If you have ever wanted to have native Emacs on a tablet", which
is something Wiegley has "always wanted", it will be available in the new
release.  There is also much better touchscreen support coming in Emacs 30
for both 
tablets and laptops.



Emacs "Grand
Unified Debugger" (GUD) mode is getting support for the LLDB debugger that is used with the LLVM
compiler suite.  It
will be particularly useful on macOS and is another feature he is
personally looking forward to.  Emacs perl-mode is being deprecated in
favor of C Perl
mode because the project does not want to
support two Perl major modes with its "meager resources".



One of the headline features
for Emacs 29 was optional support for the Tree-sitter parsing
library that brings better and faster syntax recognition and
highlighting, code 
indentation, and so on. Tree-sitter will generate parsers for languages
that are specified using JavaScript to describe the grammar; the output is
a concrete syntax
tree that can be used by other tools.  
Emacs 29 shipped with more than 20 new major modes
for various programming (and other) languages, which can be used when Emacs
is built with Tree-sitter.  Many different programming languages
(C, C++, Rust, Python, Go, Java, Ruby, ...), configuration languages (YAML,
TOML, JSON), and other language types (Bash, CSS, CMake, Dockerfile, ...)
got new major modes (e.g. python-ts-mode) as part of the new feature.



Tree-sitter uses the grammar libraries, which must be built from the
JavaScript grammar and be present
on the local system, in order to parse the structure of the language.  The
Tree-sitter modes 
avoid using
Emacs Lisp and regular expressions for syntax recognition as is done now,
Wiegley said.  Over time, more and more languages will receive
Tree-sitter-based major modes. For Emacs 30, three new Tree-sitter modes
have been added: Lua, Elixir, and HTML.



The last new feature that he mentioned is better byte-compiler warnings for
"many more questionable 
constructs".  These include things like empty macro bodies and missing
expressions in places where they are expected; "just silly stuff that might
litter the code".  The new warnings will "help you clean up the code and
get rid of those potential sites of error". There is a long
list of new warnings in the NEWS file for Emacs 30.



Wiegley also noted that Zaretskii had asked him to mention that Stefan
Kangas has been added
as an Emacs maintainer.  Kangas also gave a talk at EmacsConf this
year. 



As part of a Q&A session after the talk, Wiegley discussed his favorite
recent features, with native
compilation being near the top of the list.  He uses a lot of different
modes within his Emacs buffers, including Org Mode, Gnus,
and Eshell
so native compilation has made a big difference.  It has "brought the user
experience much closer to a modern app than some of the lagging and
slowness that I might have experienced in the past".  He also touched on
topics like
using machine-learning tools such as ChatGPT (including for writing Emacs
Lisp code), support 
for Emacs on macOS (he is a longtime user and has not encountered any major
problems), Rosetta
Code, and more.


Other features


Looking at the NEWS
file shows lots of other bits that are coming 
in Emacs 30.  For example, native compilation will now build automatically
with Emacs if libgccjit
is available on the build system.  On Linux systems, Emacs will now be the
default application for handling org-protocol
URIs; the 
emacsclient.desktop file has been changed to register as the
handler of the protocol.    X selection requests (for selecting and yanking, also known as
copying and pasting) are
"now handled much faster and asynchronously", so they
should work better over slow networks.



There are entries for new and changed features for many different parts of
Emacs, including Dired,
Grep,
Network
Security Manager, Version
Control, Compilation
Mode, and more.  The NEWS file is nearly 2,000 lines of text,
in an Org-format document naturally, which should give some sense for the
amount of 
changes; another data point of interest is that the file for Emacs 29, which
Zaretskii and Wiegley said was a much larger release, is more than double
that length.



One change that was made was partially unmade after a lengthy
debate about changing the existing behavior of the
jump-to-register and 
point-to-register commands.  A change was proposed in
October 2023 for the behavior of the register-name prompt.  At the
time, the participants in the bug thread settled on making the new behavior
the default, but once it got merged into the main branch, complaints arose.
As shown
in the NEWS file, the complaints were addressed by making the
default be to preserve the existing
behavior, while allowing others to customize the prompt behavior.



So the Emacs 30 release will be a hodge-podge of features, bug
fixes, user options, and more throughout the huge footprint of the tool.
The release cadence seems to have picked up over the last few major
releases, which can be seen on the
release history page, so we may well see Emacs 30 before the end of the
year.



Another thing that seems likely in that time span is another EmacsConf, which seem to land near the
end of each calendar year.  The report from the 2023
edition describes a lively conference with lots of interesting talks, all
of which are available for viewing in a variety of formats.  The report
also details the free-software tools that were used to
organize and host the virtual conference as well as the process
improvements tried and the finances for the
conference, all of 
which will be of interest to other conference organizers.



As noted five months ago, I am a relative
newcomer to really trying to get the most out of Emacs, though I have used it
for a long time.  Of course, that simply means that there are lots of
opportunities to 
learn new things—too many in truth.  The EmacsConf talks look like they
provide even more of such opportunities, should time allow.  There
certainly does not seem to be much of a bottom to this particular rabbit
hole. 

           Index entries for this article
           ConferenceEmacsConf/2023
            

            