Emacs pgtk & native-comp (aka. gccemacs)

This is the announcement thread for emacs-pgtk-native-comp, where you can find bleeding-edge Emacs builds combining the work-in-progress pgtk and native-comp branches.

The following builds are produced from a Guix package, but will run on any linux system using a stand-alone pack. Alternatively, you can compile emacs-pgtk-native-comp on ArchLinux-based systems using the AUR package, or install it from the Nix overlay.

Builds

The latest build is available here (updated 2021-04-28).
Earlier builds can be found here.

Changelog

emacs master changelog
feature/pgtk changelog
feature/native-comp changelog
pgtk-nativecomp changelog

Installation

using the stand-alone pack

The emacs-...-guix-pack.tar.xz file contains a self-contained emacs build which can run on any linux system.

To use it, download and extract the archive somewhere, then launch bin/emacs directly or add the bin/ directory to your PATH.

mkdir emacs-pgtk-native-comp
cd emacs-pgtk-native-comp
tar xf /path/to/emacs-...-guix-pack.tar.xz
export PATH="$PWD/bin:$PATH"
which emacs # .../emacs-pgtk-native-comp/bin/emacs
using the Guix package manager

The emacs-...-guix-archive.nar.xz file contains a complete export of the Guix build.

To import it for the first time, you’ll need to accept the signing key:

cat /path/to/signing-key.pub | guix archive --authorize

Then you can import the build archive and install it using the package hash:

xzcat /path/to/emacs-...-guix-archive.nar.xz | guix archive --import
guix install `cat /path/to/package-hash.txt`
which emacs # ~/.guix-profile/bin/emacs

NOTE: Run with FONTCONFIG_PATH=/etc/fonts for Guix Emacs to see your system fonts.

What is pgtk?

The pgtk branch (Pure GTK) adds a new rendering engine to Emacs, replacing the legacy X11 implementation with one using only GTK APIs. This brings native Wayland support to Emacs, and also gives improved rendering performance on X11.

See masm11’s pgtk branch for more information.

What is native-comp?

The native-comp branch (aka. gccemacs) adds functionality for compiling Elisp to native code. The compiler runs a number of optimization passes to generate code which performs noticeably faster than interpreted or byte-compiled Elisp.

See the official gccemacs page and the GccEmacs wiki for more information.

When will these be released?

The native compilation branch has been merged to master and will be included in Emacs 28, but pgtk is still under development/review. The objective is to have it stabilized and merged for the Emacs 28 release, but that is not guaranteed.

10 Likes

Update: Build emacs-pgtk-native-comp-28.0.50-85.c4c9dcb includes the latest change from the upstream native-comp branch.

Update: Build emacs-pgtk-native-comp-28.0.50-86.ee7f34f merges the latest changes from native-comp, including a merge from master.

Update: Build emacs-pgtk-native-comp-28.0.50-88.d3bd0f4 includes the latest changes from native-comp.

Update: Build emacs-pgtk-native-comp-28.0.50-89.17aa4b9 contains the latest changes from native-comp.

Update: Build emacs-pgtk-native-comp-28.0.50-90.eeb94f3 contains the latest changes from native-comp.

Update: Build emacs-pgtk-native-comp-28.0.50-91.ad5e245 contains the latest changes from native-comp, including a merge from master.

Update: Build emacs-pgtk-native-comp-28.0.50-92.69aafa2 contains the latest changes from native-comp.

Update: Build emacs-pgtk-native-comp-28.0.50-93.8db9098 contains the latest changes from native-comp.

Update: Build emacs-pgtk-native-comp-28.0.50-94.f6cf967 includes the latest fix from the pgtk branch.

Update: Build emacs-pgtk-native-comp-28.0.50-99.e4e6db7 includes the latest fixes from the pgtk and native-comp branches, including a merge from master.

The pgtk branch has now moved to savannah, so I’ve rebuilt the pgtk-nativecomp branch as a fresh merge of feature/native-comp and feature/pgtk. The previous branch has been renamed to pgtk-nativecomp-old, so you can track down older builds there.

Update: Build emacs-pgtk-native-comp-28.0.50-100.87f6d4f includes the latest updates from the pgtk and native-comp branches.

Update: Build emacs-pgtk-native-comp-28.0.50-105.29657ce includes the latest updates from the pgtk and native-comp branches, including a merge from master.

I’ve also fixed a problem with the Guix package which prevented native compilation from working correctly in a pure environment without binutils on the PATH.

Update: Build emacs-pgtk-native-comp-28.0.50-107.fc535f1 includes the latest updates from the native-comp branch.

Update: Build emacs-pgtk-native-comp-28.0.50-109.436b933 includes the latest changes from the native-comp and pgtk branches, including a merge from master.

Update: Build emacs-pgtk-native-comp-28.0.50-110.0218ca6 includes the latest change from native-comp.

Update: Build emacs-pgtk-native-comp-28.0.50-114.8905b35 includes the latest changes from the native-comp and pgtk branches, including a merge from master.

Update: Build emacs-pgtk-native-comp-28.0.50-116.9cfb569 contains the latest changes from the native-comp branch, including a merge from master.

Update: Build emacs-pgtk-native-comp-28.0.50-119.f9df75d contains the latest changes from the native-comp and pgtk branches, including a merge from master.

Update: Build emacs-pgtk-native-comp-28.0.50-122.ea61382 includes the latest changes from the native-comp branch.