Emacs 29
Emacs 29 (still in development) introduced Double Buffering on X11 (via
libXext) and an support for Tree Sitter parsers.
This is a good enough reason to give it a try.
This is how one build butterly-smooth and fast Emacs. No GTK or other
toolkits. No Xwidgets. All the best fonts, including form Apple (via
libotf) with modern rendering (via harfbuzz). And the usual stuff.
No fucking toxic systemd cancer, of course.
../configure --prefix=/usr/local \ --without-all \ --with-x \ --with-xdbe \ --with-xft \ --with-tree-sitter \ --with-x-toolkit=no \ --without-toolkit-scroll-bars --without-xaw3d \ --without-xwidgets \ --with-harfbuzz \ --with-cairo \ --with-libotf \ --with-xim \ --with-native-compilation=aot \ --with-xml2 --with-xpm --with-tiff --with-jpeg --with-gif --with-png --with-gnutls --with-selinux --with-wide-int --with-dbus --with-zlib --with-sound=alsa --enable-link-time-optimization --with-modules --with-json --with-tiff --without-libsystemd --with-gsettings --with-libgmp --with-imagemagick --without-pop --without-mailutils make -s bootstrap
This is how one compiles such things
#!/bin/bash export CC=gcc export CXX=g++ export LD=ld WARN="" #WARN="-W -Wall -Wextra -pedantic -Wformat -Werror=format-security" OPT="-m64 -march=native -mtune=native -O3 -fopenmp" SEC="-D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fstack-protector-all -fstack-clash-protection" PIE="-pie -fPIE" LTO="-flto" LOCAL="-I/usr/local/include" export CFLAGS="$WARN $OPT $SEC $LTO $PIE $LOCAL" export CXXFLAGS="-std=c++17 $CFLAGS" export LDFLAGS="-L/usr/local/lib -m64 $LTO $PIE -Wl,-pie -Wl,--gc-sections -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack" export CXXLDFLAGS="$LDFLAGS"