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"