From 3fd28987f7f1e4da226d650166cc64e71e30e645 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sat, 20 Jun 2026 23:26:44 -0400 Subject: perf: re-enable native-comp JIT and hand GC to gcmh early-init.el disabled JIT native compilation with (setq native-comp-deferred-compilation nil), the obsolete alias of native-comp-jit-compilation. Despite the comment, setting it nil turns JIT off entirely rather than making it synchronous. Most modules then ran interpreted for the daemon's lifetime, and the native-comp-speed/jobs settings in system-defaults.el were dead. The "Selecting deleted buffer" async race that prompted the disable was an Emacs 28/29 issue. This is 30.2. I re-enabled it with native-comp-jit-compilation t and silent async warnings. GC was pinned at the stock 800KB: early-init restored it post-startup and the minibuffer setup/exit hooks bounced back to it. That's Emacs's bare-editor default, far too low for 184 packages, so GC pauses fired often during completion, agenda, and LSP/AI work. I replaced both hand-rolled mechanisms with gcmh, which keeps the threshold at 1GB during activity and collects on idle. Verified a clean full launch in a throwaway daemon (JIT on, gcmh active, no backtrace) and gcmh's threshold cycle in batch. --- init.el | 1 + 1 file changed, 1 insertion(+) (limited to 'init.el') diff --git a/init.el b/init.el index 227b8396c..cf6b75bd4 100644 --- a/init.el +++ b/init.el @@ -26,6 +26,7 @@ (require 'host-environment) ;; convenience functions re: host environment (require 'keyboard-compat) ;; terminal/GUI keyboard compatibility (require 'system-defaults) ;; native comp; log; unicode, backup, exec path +(require 'gcmh-config) ;; garbage collection strategy (gcmh) (require 'keybindings) ;; system-wide keybindings and keybinding discovery ;; -------------------------- Utilities And Libraries -------------------------- -- cgit v1.2.3