Emacs development updates
John Wiegley
In this talk, John Wiegley will briefly summarize important developments on the road to Emacs 29. He will not be able to answer questions right now, but you can post questions in the pad and he can follow up after the event.
00:00.000 Introduction 00:19.320 Emacs 29 release cycle 00:42.400 Overlays 01:29.080 Eglot 01:46.480 Tree-sitter 02:30.840 Very long lines 03:35.240 SQLite 03:50.080 XInput 04:11.320 Pure GTK build 04:24.640 Drag and drop 04:31.400 Double-buffering on Microsoft Windows 04:35.240 Emoji input 05:00.080 End
Description
What has been happening and what is soon to come in Emacs development
Bio: John Wiegley is a past maintainer of Emacs and frequent contributor of Emacs Lisp.
Discussion
Questions and answers
- Q: Any word on bringing someone like John W. back in in a maintainer
role? I think someone like him is good in that role and miss seeing
his messages as frequently!
- A: I very much appreciate the support! but now is not a good time. I have other distractions that would detract from my ability to support the community properly.
- Q: Does the user need to do anything to turn on support for long
lines?
- A: No! Just editing files with long lines should become much faster.
- Side note intersting vidoes about long lines
- https://www.youtube.com/watch?v=5C3wB3xiMmU Emacs Long Lines Fix
- https://www.youtube.com/watch?v=kflDJ9L4siw Emacs Long Lines, This Time With Feeling
- Q: Having emace init comand line option is nice" no more chemacs
for multiple emacs configs" and would make starter packs eaiser to
test, or makeing applications or scripts based off of emacs easier
to do. Is there anything else following this decection?
- A: I don't really follow this question well enough to have an answer!
- Q: The discussion during Howard's Eshell talk indicated demand for
enhancing Eshell and its documentation. For those of us interested
in pursuing that, where should we start? Should we explore moving it
from core into an independent package?
- A: Certainly new development could happen in an independent repository, with releases delivered back to the Emacs repository. There are other packages that also do this.
- Q: has any date been set for 29 release?
- someone else: I haven't seen dates on devel. The branch was just cut so I would expect it will be at least a few months. Could be longer as there are so many new features in 29 (tree-sitter, sql-lite, use-package to name a few I'm hyped for)
- someone else: Seems like a good release for dropping legacy and using all the new stuff everybody else is using. wayland, lsp, tree-sitter, better performance on long lines.
- A: I'm not aware of a specific date, but if you follow the emacs-devel list, updates are sometimes posted.
Is tree-sitter useful if you want to parse all the code in an application or is it more narrow, i.e. just for interactive parsing of changing code?
- A: I imagine it's generally useful for parsing any sort of text that you want to perform structural analysis on, whether in whole, in part or incrementally. I recommend checking out the web documentation on the tree-sitter libraries. Notes and other feedback:
XInput 2 support author here. X has historically seen three input APIs: Core Input, legacy XInput, and XInput 2. Emacs only ever used the first until Emacs 29, where it jumped straight to using the last. So it's not quite an ``update'', but rather an entirely new feature. Thanks for the great talk!
- A: Good to know, thank you for that clarification!
Thanks John! Thanks Eli!
Notes
Transcript
[00:00:00.000] Hello, it's time for another Emacs development update. I want to thank the organizers of EmacsConf for putting this together and also the maintainers of Emacs with a special thanks to Eli Zaretskii. It's really he who gave me this information so that I could pass it along to you.
[00:00:19.360] The main thing to discuss this time with regard to what's been going on with Emacs is Emacs 29. The release cycle for Emacs 29 should begin in December when a branch will be cut and the release work will start. We should be seeing Emacs 29 coming out fairly soon. Here's just a brief overview of some of the things to look forward to coming up in Emacs 29.
[00:00:42.480] Overlays have been re-implemented. If you haven't used them before, overlays are a way to apply a set of properties over a range of text so that you can have things like mouse clicks take on different behavior depending on where it happens in the text. This is different than text properties which associate the properties with the text itself. Overlays do not alter the text in any way and they simply, as the name suggests, overlay on the buffer. Now previously, overlays were implemented as linear lists which got very slow when there were a lot of overlays in a buffer. Now they're being re-implemented as trees, so that searching should be very fast, and in fact, comparable to text properties. This is already on the master branch and (more or less) is ready for release.
[00:01:29.280] Eglot has been ported into Emacs. Eglot is an LSP [Language Server Protocol] client for Emacs, one of the two that are often used. But now it's going to be included in core, so it's considered official and will be well integrated with other Emacs features.
[00:01:46.480] There's going to be a Tree-sitter library. Tree-sitter is a way of building fast incremental parsers. There's a website on Tree-sitter if you Google for that. This can be used for various features, but first and foremost, it'll be used for fontification and indentation in Emacs. Instead of heuristics and regular expressions, you can now build your fontifications based on a parse tree. There's a branch now that supports this for several modes already, like Python, TypeScript, and JavaScript. We don't have anyone yet working on it for C mode but Eli has challenged whether anyone in the community is interested. He would love to see Tree-sitter support added for C mode, because this has been quite slow when dealing with very, very large files and Tree-sitter should help that.
[00:02:32.000] There have been significant improvements in dealing with very long lines. This is something that has been a long time frequent complaint. Emacs becomes rather unusable if you open a giant file that's a single long line. Anyone who's ever tried to open a 30 megabyte JSON file that's all on one line will know this pain. Some modes, however, will have to adapt to this change, because sometimes access to the whole buffer is now forcefully restricted. If the mode requires access to the entire buffer at all times to work, then the developer of that mode will need to devise some simplifications so that they don't require that complete access. For example, if a mode used to go way back to the beginning of the buffer in order to determine if there's an unbalanced parenthesis, this won't work in the new long lines support mode, because the entire buffer is not always available. Emacs is sort of doing some restricting of the buffer heuristically in order to keep the visible range working very, very quickly now.
[00:03:35.280] Emacs can now build directly with SQLite. This means that SQLite databases can be directly accessible from Emacs. Should be nice for anyone whose mode wants to cache or store some queryable data.
[00:03:50.080] The XInput extension is now up to version 2. There are many extensions in this specification. From the user's point of view, it enables things like smooth scrolling and touch devices. Emacs will now use this by default on all systems where the library is installed. It should be on every modern system that uses X.
[00:04:11.320] There's also a pure GTK build in Emacs 29. The purpose of this is to allow Emacs on systems without X, such as Wayland or Broadway, to be able to have a graphical build of Emacs. There's also lots of improvements to drag and drop
[00:04:27.320] on X systems, for people who like drag and drop. And there's support for double buffering on Microsoft Windows.
[00:04:34.280] The last of the headline features
[00:04:38.480] coming for Emacs 29 is emoji input. So there will now be a prefix key, C-x 8 e for emoji input, along with several new commands to insert emoji by various forms of shorthand. There will even be an input method where you can write the plain English names of emojis and have the symbol inserted. So that rounds out some of the features
[00:05:02.160] coming up for Emacs 29. Sounds like an exciting release and it should be headed your way soon. I hope everybody has fun at the conference and enjoy yourselves.
Captioner: sachac
Questions or comments? Please e-mail emacsconf-org-private@gnu.org