(address . bug-guix@gnu.org)
Emacs can interpret/load at least four kinds of source files.
Listed with increasing performance:
- Emacs-Lisp source code: *.el
- Byte-compiled Emacs-Lisp: *.elc
- Native-compiled Emacs-Lisp: *.eln
- Shared-object files: *.so
Guix installs el- and elc-files into ~/.guix-profile/share/emacs/site-lisp which is added to the
environment-variable EMACSLOADPATH. eln-files are installed into
~/.guix-profile/lib/emacs/native-site-lisp which is added to
EMACSNATIVELOADPATH. For Emacs-related so-files, Guix currently
does not have any convention; see
If I understand correctly, it is only the following Emacs-packages that ship with eln-files when installed with Guix, because they specify `#:emacs ,emacs` in the package declaration, so that native-compilation is available during build-time which is used if it's available: https://git.savannah.gnu.org/cgit/guix.git/tree/guix/build/emacs-utils.scm?h=6d0b3684628fe24555055d4a97d703a1b0b59660#n144
emacs-auctex
emacs-citeproc-el
emacs-zig-mode
emacs-flycheck-grammalecte
emacs-sudo-edit
emacs-elquery
emacs-cov
emacs-pos-tip
emacs-posframe
emacs-xelb
emacs-exwm
emacs-xelb-no-x-toolkit
emacs-exwm-no-x-toolkit
emacs-exwm-x
emacs-jabber
emacs-ement
emacs-circe
emacs-esxml
emacs-nov-el
emacs-wordgen
emacs-picpocket
emacs-lsp-mode
emacs-jsdoc
emacs-tramp
emacs-elpher
emacs-telega
So, if my understanding is correct, and assuming that we want to ship eln-files, Emacs-packages should all be built with a package of Emacs that supports native-compilation.