Subject: Emacs-Packages should contain native-compiled files

From: Mekeor Melire <[email-masked]>
Date: Wed, 12 Jul 2023 18:19:12 +0000

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 
<https://issues.guix.gnu.org/63987>.

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.