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.
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.
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.
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.
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.