From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#73303: 30.0.91; Native compiler repeatedly interrupts at random moments Date: Tue, 17 Sep 2024 18:59:17 +0300 Message-ID: <865xqub7ai.fsf@gnu.org> References: <87wmjbmpnt.fsf@moondust.awandering> <867cbbcuen.fsf@gnu.org> <87plp2mhj1.fsf@moondust.awandering> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33521"; mail-complaints-to="usenet@ciao.gmane.io" Cc: acorallo@gnu.org, 73303@debbugs.gnu.org To: "N. Jackson" , Philip Kaludercic Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Sep 17 17:59:59 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1sqacQ-0008Xx-QC for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 17 Sep 2024 17:59:59 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqacJ-00050R-Lj; Tue, 17 Sep 2024 11:59:51 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqacG-0004x3-Pq for bug-gnu-emacs@gnu.org; Tue, 17 Sep 2024 11:59:49 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sqacG-0002yU-Gj for bug-gnu-emacs@gnu.org; Tue, 17 Sep 2024 11:59:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-version:References:In-Reply-To:From:Date:To:Subject; bh=J7XuawWY1UP9OnWfY7RKeq1IhK2eY1tVLANKfc9/UJk=; b=apyGGNJ2FPJjTDv3r79kOMZSjFyBddm6oWUzevHmm4myAv2lm075vTqxha39+3oGBPzVd+mKKWY/NPQ9LYwjuPiXZZ0XKfDE39JOaofL12WbS+Ez0iZtIrgqkaYKqfoxTEii4frQ8Lz1o1YgdqplmFYKSRmcRTe3XoEBSaw7iGCY7fV+C6m8Bc1BovEc26YQTML+My4TWMA+Egu0g/UxbjDFIeP2cVq40QMfaXmKLUJUiyAL3gIK2a716F8cLShntucwuptavD7gEf90dDCYXeVqZMqn7ECWsa/gokJyxH7fFUstVTXb3pXLY7nLEGa2e39xjXu2hDkCYgzkT43Dug==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sqacU-0004vs-St for bug-gnu-emacs@gnu.org; Tue, 17 Sep 2024 12:00:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 17 Sep 2024 16:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 73303 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: notabug Original-Received: via spool by 73303-submit@debbugs.gnu.org id=B73303.172658878518896 (code B ref 73303); Tue, 17 Sep 2024 16:00:02 +0000 Original-Received: (at 73303) by debbugs.gnu.org; 17 Sep 2024 15:59:45 +0000 Original-Received: from localhost ([127.0.0.1]:55771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sqacD-0004uh-24 for submit@debbugs.gnu.org; Tue, 17 Sep 2024 11:59:45 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:43210) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sqacB-0004uO-DL for 73303@debbugs.gnu.org; Tue, 17 Sep 2024 11:59:44 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqabq-0002ww-TJ; Tue, 17 Sep 2024 11:59:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=J7XuawWY1UP9OnWfY7RKeq1IhK2eY1tVLANKfc9/UJk=; b=mFHyXgJ3LSCzYzDMRQQj ZthtnVHI/MQ+cd9RKov/FHd4Xeglf8tAQy4uGd697U8gBd6fScG6iz0qVXPD8+lDKZR0S5TcpNzBV t7hOeHUV7ub2ZXALarrTTGhmaB9ANaY19XFcpqo9T+IO8A2LahErNyo9x0t9pyW8akAIvBbAjLuQZ AwojAXe8ozgmjJTPdZtYp2pJT4VTNZsb0HNUB079DRdoQD+vkO8RbvqoWM5OuN7a1rH/XQVDN8XCv qYVvx9ck1x4LnMHFNMHcI9fcKTyt1xX6W/RL4t5suUaDG1FbaVrypskCcGR1ZkbO/bATSFKn302UB JP4uzfCXZEtMyw==; In-Reply-To: <87plp2mhj1.fsf@moondust.awandering> (njackson@posteo.net) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:291950 Archived-At: > From: "N. Jackson" > Cc: 73303@debbugs.gnu.org, Andrea Corallo > Date: Tue, 17 Sep 2024 15:22:42 +0000 > > Hello Eli, thank you for your response. > > At 21:42 +0300 on Monday 2024-09-16, Eli Zaretskii wrote: > > > I see no bug in what you describe. > > Fair enough. The concern that prompted me to file a bug report was > not that native compile is broken (a literal bug) but rather that > since it's a newish feature you might welcome end-user feedback > about it's default behaviour (or perceived behaviour) that might > lead to to beneficial tweaks to either the behaviour or to the > documentation. The feedback is always welcome, of course (if my wording somehow made an impression it wasn't, I apologize). And what you describe is already known: a few users posted similar experiences during the development and testing of Emacs 29. So these issues are not new, and I think Emacs 30 is better equipped to deal with them, and gives users more knobs to deal with them. > > These warnings usually mean that the offending Lisp file lacks > > some 'require's. JIT native compilation runs in a separate Emacs > > session, which only loads the file it compiles, so any missing > > 'require's or autoloading cookies trigger these warnings, whereas > > when the same packages are loaded into your main Emacs session, > > they can benefit from packages loaded earlier in the session. > ... > > JIT native compilation is triggered by loading a .elc file that > > doesn't yet have a corresponding .eln file > > Thank you for the overview of how native compilation works. I had > wrongly guessed that it was deferring the compilation lazily and > doing it later on an idle timer or something of that sort. If I > understand what you are saying correctly, the native compiler, not > having a crystal ball, cannot possibly know ahead of time what .elc > files a user might load, so it cannot compile them ahead of time. Yes, exactly. JIT compilation compiles only packages that you load, when you load them for the first time. > However, as a naïve end-user of Emacs, when I am _using_ Emacs, as a > tool to get a job done -- writing an essay, say -- I don't want to > think about the guts of how Emacs works. I'm happy to save that for > when I'm building Emacs or maintaining my configuration files and > that is when I would want the native compilation to happen, if that > were possible. > > You write > > > You can disable these warnings if you are annoyed by them. They > > are just warnings, and will not usually cause any problems when > > using the compiled code. See > > native-comp-async-report-warnings-errors. > > Sweeping warnings under the rug isn't something I'm comfortable with > even if nine times out of ten (or 999 times in 1000) they're false > alarms. (I'm the sort of person that -Werror was made for.) If you set native-comp-async-report-warnings-errors to the value 'silent', the warnings will be logged in the *Warnings* buffer, where you can later review them, but will not be shown in a popup buffer, which might distract you when you don't want that. > > You can cause these compilations to happen at the beginning of your > > Emacs session if you change your init files such that Emacs loads all > > these files. > ... > > In any case, Emacs compiles each Lisp file just once, so you should > > only see these when you start a new Emacs version for the first time. > > I guess, then, that I would want to (somehow) process my init files -- > before using Emacs for the first time after upgrading to a new > version -- to ensure native compilation of all dependencies. > > Do you have any pointers on how to go about doing that? It seems > impractical for a casual Emacs user since they don't necessary know > what files will be loaded by the packages they use. The warnings > I've seen so far all refer to files I've never heard of. If your init file arranges for many packages to load only on demand, then I don't think there is a way, except summarily compile all the packages under your ~/.emacs.d/ directory (assuming that's where you install them). Maybe we should have a native-compile-directory function to make that easier; currently we only have emacs-lisp-native-compile, which compiles a single file. Andrea, WDYT? > I don't suppose there's a function > native-compile-eagerly-compile-all-dependencies-of-my-init-files-and-do-it-synchronously-right-now?! We could do that, but before we do' we'd need to come up with a find-all-dependecies-of-my-init-files function ;-) > If I can deal with my init files (ensuring that they won't load any > files that haven't yet been native compiled), it seems I would be > left with two potential sources of files being native compiled -- > Emacs itself, and newly installed/updated packages. Two questions > about that, then: > > 1. Does the native compiler compile all the .elc files in > Emacs itself into .eln files ahead of time, or does it also leave > those until they are loaded? The preloaded files are natively compiled as part of the build, but the rest are only natively compiled if the build uses the optional "ahead-of-time" feature, via a switch to the configure script. > 2. When the package system installs/updates a package, does it > natively compile the files at the same time as it byte compiles > them? I'm not sure, but I think it doesn't. Philip, can you answer that?