Skip to content

What is different about Emacs 28?

Emacs 28 has too many new features and changes to list all of them here. We list below a small selection; consult the Emacs NEWS file (C-h n) for the full list of changes in Emacs 28.

  • Emacs now optionally supports native compilation of Lisp files. This can improves performance significantly in some cases. To enable this, configure Emacs with the --with-native-compilation option.
  • The new NonGNU ELPA archive is enabled by default alongside GNU ELPA. Thus, packages on NonGNU ELPA will appear by default in the list shown by the list-packages command.
  • The Cairo graphics library is now used by default if present.
  • On GNU/Linux, Emacs now supports loading Secure Computing filters. To use this feature, invoke Emacs with the --seccomp=file command-line switch, where file names a binary file that defines the filtering. See the manual page of the seccomp system call for more details.
  • The new themes ‘modus-vivendi’ and ‘modus-operandi’ have been added. They are designed to conform with the highest standard for color-contrast accessibility (WCAG AAA).
  • On capable systems, Emacs now correctly displays Emoji and Emoji sequences by default, provided that a suitable font is available.
  • New system for displaying documentation for groups of functions (M-x shortdoc-display-group RET).
  • Emacs can now support 24-bit color text-mode terminals even if their terminfo database doesn’t state this support in a standard way. Set the COLORTERM environment variable to the value ‘truecolor’ to activate this.
  • The strike-through face attribute is now supported on capable text-mode terminals.
  • xterm-mouse-mode supports TTY menus.
  • A new minor mode context-menu-mode causes mouse-3 (a.k.a. “right-clicks”) of the mouse to pop up context-dependent menus.
  • Prefix commands to control the display of the results of the next command. C-x 4 4 command displays the result of command in a new window. C-x 5 5 command displays the results of command in a new frame.
  • Emacs now supports “transient” input methods. A transient input method is enabled for inserting a single character, and is then automatically disabled. Select a transient input method with C-u C-x \; enable it (for inserting a single character) with C-x \. New input methods compose (based on X Window System Multi_key sequences) and iso-transl are especially convenient with this feature, when you need to insert a single special character.
  • M-y, when invoked after a command that is not a yank command, allows selection of one of the previous kills.
  • New minor mode repeat-mode enables repeating commands with fewer keystrokes.
  • Among the many internal changes in this release, we would like to highlight that all files in the tree now use lexical-binding.