Back to the schedule
Previous: Emacs with Nyxt: extend your editor with the power of a Lisp browser
Next: On the design of text editors

Emacs development updates

John Wiegley

Q&A: maybe after the conference; will try to attend
Duration: 7:17

This talk was also streamed at an alternate time for APAC hours:

If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at and we'll forward your question to the speaker.

00:00 Introduction 00:18 Emacs 28 00:33 Native compilation 02:36 Build with Cairo by default 02:55 New mode, but off by default: context-menus 03:22 Tab-bar and tab-line received many enhancements 03:37 A command can marked as specific to a mode 04:20 Transient input methods 05:00 show-paren-mode is enabled by default 05:14 We now have a Non-GNU ELPA 05:39 repeat-mode 06:18 project.el has dozens of new commands 06:26 Shorthands for Lisp symbols 06:54 Emacs 29 is just beginning



  • the real question: do we still have time to get our patches in to the 28 branch ^_^
  • So I assume a lot of distros will make those native-comp related packages some sort of dependency, right?
    • the conversations I have seen among the distro maintainers seems to suggest that at least some of them will bundle the .eln files
      • What about ELPAs?
        • if a distro packages elisp files they would, but for ELPA even the .elc files aren't stored (iirc?), so those would be compiled asynchrously
  • That's great so that I'm not using weird commands on incompatible modes
  • Yes yes yes, the input mode update sounds incredible. I already hack that in my init.el, but I guess it'll be native.
  • thank you so much for the great work on Emacs!
  • why would emoji support be important in any way.. for anybody? Especially.. in the larger scheme of things or more important problems? Am i missing something?
    • Unicode compatibility's always a good thing
  • so you have to have a toolchain present even if you are only using precompiled .eln files


Hello, my name is John Wiegley. I'm a past co-maintainer of Emacs. Nowadays, all of the work and mailing list traffic is handled by Eli Zaretskii and Lars Ingebrigtsen. I just wanted to give you an update of what has been happening and what is soon to come in Emacs development.

[00:00:18.560] So I spoke to Eli and he gave me the lowdown on Emacs 28, which is the next big release to come up yet. He says that we hope to release this soon. Pre-testing has not yet started, but maybe looking at the first quarter of next year.

[00:00:33.600] The biggest feature coming in Emacs 28 is going to be native compilation, and this will make some Emacs code two to four times as fast, depending on what kind of Lisp you're running and how much of your Lisp code is just Lisp, or makes calls to primitive functions. There were previous JIT attempts. Some of them still live on in development branches, but they were found to not speed things up too much. The version coming in Emacs 28 has much better results than these past attempts, but it should be noted that it has some side effects. One is that natively-compiled files are going to be system-dependent, so they can't be included in any distributions the way we do now with .elc files, since those run on any platform. This means that you will need to compile those files for your own machine, sometimes, depending on how the compilation process goes. It could vary by processor. And it requires you also to have the right compilation environment. This means that you may need tools from the gcc tool chain that aren't installed as part of the default, so you will maybe have to do some work to set up the right compilation environment for your platform. Natively-compiled files are also kept in a separate directory. There are some issues having to do with recompilation too, so there are certain changes which, if made to the Emacs source code between releases, may require you to recompile all of the natively-compiled files that you had compiled previously. Also, the file names of compiled files that get installed have hashes on them depending on the Emacs that they were built against, so Emacs should be able to detect when recompilation is necessary, but it may be difficult for distributions who want to know what all of the build files are going to be in advance in order to prepare a binary distribution for that for that platform. So these are all little wrinkles that we're going to discover and have to work out as this functionality comes out and starts getting used in lots of different distributions.

[00:02:36.400] Another feature is that Cairo is now being built with by default, and this is one step further toward better support for emojis. If you build with Cairo, you will get all of the emoji sequences defined by the latest Unicode, and in full color, the exact same as on your smartphone , and it works on macOS as well.

[00:02:55.760] There's a new mode, but it is off by default, called context-menus mode, and this gives menus that appear when you right-click somewhere in a buffer, but now will make it easier for other modes to define what those context menus should look like, so that's sort of making that support... having it less custom in each module that implements that type of behavior. They can now do it through this context and then use the facility.

[00:03:22.959] Tab-bar and tab-line have received many enhancements. So there's new commands, new variables, there's quite a large number of changes, so if you like those modes, if you use them, then you should be happy with what's coming. There is a command...

[00:03:37.840] Now, a command can be marked as being specific to a mode, so that if you're not in that mode, then, when you press M-x, it won't appear in the tab completion list. Right now, M-x is a full population of every interactive command known to Emacs, but in many cases, unless you're in a text-mode buffer or a latex-mode buffer, or some programming language mode buffer, a lot of the commands that might be presented to you today are irrelevant to that buffer that you're in. So commands can now specify in their interactive declaration which mode they're specific to, and in that case, they will only appear in the completion list for that mode. In fact, only be available in that mode to execute.

[00:04:20.320] There are going to be transient input methods, and what this means is that right now, with Emacs, you can hit a key sequence to change your input method to, say, latin1 or to Arabic or Hebrew or some other language, so that you can start entering text using that input mode, but transient input methods will allow you to switch to an input mode temporarily. So if you're mostly writing in English text, but you want to insert one Greek letter, you don't have to switch to an input mode that has Latin and Greek letters. You can just switch over to a Greek input mode, momentarily enter in the Greek letter, and then come back to your default input method.

[00:05:00.880] show-paren-mode will be enabled by default in Emacs 28, so that's the highlighting of parens whenever your cursor is on or near a closing paren or an opening paren, for example.

[00:05:14.560] We're also going to have a NonGNU ELPA, so there will be a ELPA repository just like the ELPA we have today, except it will have packages in it that have not gone through the same level of copyright assignment requirements as the GNU ELPA. So NonGNU ELPA will make it easier for packages to get into a repository that is managed by the package.el that ships with Emacs.

[00:05:39.520] There's going to be a repeat-mode added to Emacs 28, repeat-mode.el. What this does is when you turn it on, when you enable repeat-mode, then certain commands which are executed by keybindings like C-x u for undo will allow you to just keep hitting that u, that final letter you used for the command to keep repeating that function. This works today already for things like macro repetition, C-x e, where you can just keep hitting e to repeat the macro as many times as you like, but that was a custom feature just for macros. This makes repeat mode accessible to most commands.

[00:06:18.400] The project.el package has dozens of new commands, so check the documentation there to find out what's going to be new in project.el.

[00:06:26.720] And there will be shorthands for Lisp symbols supported in the Lisp symbol reader. This means that for packages like s and f that have a whole bunch of really short named functions that might pollute the namespace, those functions now can be implemented behind a prefix where the symbol reader can be taught that there is a shorthand for that prefix, and that way, it'll only apply for the use of that package.

[00:06:54.960] And then finally, work on Emacs 29 has just started. I don't have any details to report to you there, just to say that now the ship is moving on to the next release after, and Emacs 28 has a release branch and is getting cleaned up and ready for release. And that is the technical summary of what's new in Emacs. Thank you.

Back to the schedule
Previous: Emacs with Nyxt: extend your editor with the power of a Lisp browser
Next: On the design of text editors