UP | HOME

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"

Author: <schiptsov@gmail.com>

Email: lngnmn2@yahoo.com

Created: 2023-08-08 Tue 18:42

Emacs 29.1.50 (Org mode 9.7-pre)