Looking ahead to Emacs 30
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 | |
---|---|
Conference | EmacsConf/2023 |
Posted Jan 30, 2024 22:15 UTC (Tue)
by ejr (subscriber, #51652)
[Link] (4 responses)
Emacs. Just emacs.
Posted Jan 31, 2024 4:49 UTC (Wed)
by rsidd (subscriber, #2582)
[Link] (1 responses)
Posted Jan 31, 2024 9:13 UTC (Wed)
by dottedmag (subscriber, #18590)
[Link]
Posted Feb 3, 2024 10:01 UTC (Sat)
by bpearlmutter (subscriber, #14693)
[Link] (1 responses)
Posted Feb 6, 2024 18:11 UTC (Tue)
by ejr (subscriber, #51652)
[Link]
Posted Jan 31, 2024 5:40 UTC (Wed)
by alison (subscriber, #63752)
[Link] (1 responses)
Posted Jan 31, 2024 14:24 UTC (Wed)
by daenzer (subscriber, #7050)
[Link]
Note that EditorConfig isn't Emacs specific, in fact Emacs doesn't support EditorConfig out of the box, it's a plugin: https://editorconfig.org/#download
Posted Feb 8, 2024 6:42 UTC (Thu)
by callegar (guest, #16148)
[Link] (1 responses)
Wonder how this will be. Emacs has always been requiring a CTRL and an ESC key to be used nicely. Yet, getting a virtual keyboard with these keys seems to be an almost impossible task. The only thing that I know getting it is `termux` on Android, that adds a bar above the usual Android virtual keyboard with the important keys that are missing from the main keyboard. But I still have to find anything providing CTRL, TAB, ALT, ESC elsewhere. As an example, the plasma desktop supports the `maliit`, that unfortunately is almost completely useless for doing anything practical because it does not have a terminal layout (so no use for it with konsole, emacs, nor any app requiring keyboard accelerators).
Posted Feb 8, 2024 14:22 UTC (Thu)
by cidra (guest, #169548)
[Link]
Posted Feb 8, 2024 6:48 UTC (Thu)
by callegar (guest, #16148)
[Link]
\section{This is a very very long section header that cannot fit in a single line}
produces a visually pleasant
\section{This is a very very long section header
using hard wrap and auto fill, but
\section{This is a very very long section header
with visual line mode even with the adaptive wrap prefix.
Hah! A "bottom?"
Hah! A "bottom?"
Hah! A "bottom?"
... We are men of groans and howls,Hah! A "bottom?"
Mystic men who eat boiled owls,
Tell us what you wish, oh King,
Our magic can do anything.
Hah! A "bottom?"
Looking ahead to Emacs 30
Looking ahead to Emacs 30
Looking ahead to Emacs 30
Looking ahead to Emacs 30
Looking ahead to Emacs 30
␣␣that cannot fit in a single line}
that cannot fit in a single line}