From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Native compilation: the bird-eye view Date: Sat, 16 May 2020 14:51:29 +0300 Message-ID: <83o8qocd32.fsf@gnu.org> Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="71074"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Andrea Corallo Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat May 16 13:52:16 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jZvMW-000IOb-1G for ged-emacs-devel@m.gmane-mx.org; Sat, 16 May 2020 13:52:16 +0200 Original-Received: from localhost ([::1]:47218 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZvMV-0008Qh-3l for ged-emacs-devel@m.gmane-mx.org; Sat, 16 May 2020 07:52:15 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44288) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZvM1-0007xd-0X for emacs-devel@gnu.org; Sat, 16 May 2020 07:51:45 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:40409) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZvLx-0006Mp-Ea; Sat, 16 May 2020 07:51:41 -0400 Original-Received: from [176.228.60.248] (port=4599 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jZvLw-0003Va-Pa; Sat, 16 May 2020 07:51:41 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:250477 Archived-At: Maybe this was already discussed (in which case please point me to that discussion), but if not: how will this feature be integrated into the Emacs distribution and usage patterns? First, we cannot bundle the *.eln files with the source tarball of the Emacs release, because these files are too specific to the architecture (and perhaps also to the versions of the OS and the libc) of the system where they were produced. Right? If so, they will have to be generated on the end-user machines, or perhaps by whoever prepares the Emacs binary distributions -- assuming that the binary distributions are sufficiently compatible to allow that, notwithstanding the differences between the system where the *.eln files were generated and the system where they will be installed and used. (I don't know what is the granularity of the binary distros wrt machine architecture and OS versions -- will that allow to be sure the *.eln files are compatible with the target system?) The next question is whether we want the *.eln files to exist up front for all the Lisp files on the end-user system, or we want them to be generated in JIT-like manner, whenever the corresponding Lisp library is loaded on demand? The answer to this question might then influence the place where the *.eln files are kept -- the JIT alternative would suggest to have some kind of cache directory where we put the compiled files, similar to what Guile does. And finally, what about the *.elc files and their relation to the corresponding *.eln files? Do we always load a .eln file if available, do we let the user specify their preferences, something else? Comments are welcome.