From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Re: How does one find out what file a library has been loaded from? Date: Wed, 20 Jul 2022 11:47:11 +0000 Message-ID: References: <83bktlnuog.fsf@gnu.org> <83sfmxm79z.fsf@gnu.org> <83fsiwncem.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32751"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Jul 20 13:50:04 2022 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 1oE8DM-0008NJ-6h for ged-emacs-devel@m.gmane-mx.org; Wed, 20 Jul 2022 13:50:04 +0200 Original-Received: from localhost ([::1]:58852 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oE8DL-0006DE-9B for ged-emacs-devel@m.gmane-mx.org; Wed, 20 Jul 2022 07:50:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36622) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oE8Aq-0002MC-84 for emacs-devel@gnu.org; Wed, 20 Jul 2022 07:47:30 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:16441 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1oE8Ao-0004rR-4F for emacs-devel@gnu.org; Wed, 20 Jul 2022 07:47:28 -0400 Original-Received: (qmail 21191 invoked by uid 3782); 20 Jul 2022 11:47:12 -0000 Original-Received: from acm.muc.de (p4fe15de5.dip0.t-ipconnect.de [79.225.93.229]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 20 Jul 2022 13:47:12 +0200 Original-Received: (qmail 4892 invoked by uid 1000); 20 Jul 2022 11:47:11 -0000 Content-Disposition: inline In-Reply-To: <83fsiwncem.fsf@gnu.org> X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de Received-SPF: pass client-ip=193.149.48.1; envelope-from=acm@muc.de; helo=mail.muc.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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:292303 Archived-At: Hello, Eli. On Tue, Jul 19, 2022 at 22:13:53 +0300, Eli Zaretskii wrote: > > Date: Tue, 19 Jul 2022 17:07:09 +0000 > > Cc: emacs-devel@gnu.org > > From: Alan Mackenzie > > > > A further point is that Emacs should not deceive its users. > > > It doesn't. > > It most assuredly does. The doc string for load-history says that > > FILE-NAME is the name of a file that has been loaded into Emacs. > > This is untrue. > Not really (please take a good look at what the code actually does). If it loads a .eln file, and says it has loaded a .elc file, that is an untruth. Not a "sort of not quite true", but a blatant untruth. I had a look at the relevant code in lread.c some while ago. > But if you are bothered by that detail, I'm okay with having a note > there regarding *.eln files. (Somehow, I'm not sure you will settle > for that.) I will write a patch for the doc string and another for the Elisp manual. I'm not happy with the state of things, but will probably have to accept it. > > > You are timing compiled Lisp code. How exactly was it compiled > > > shouldn't matter _in_principle_, .... > > You might well want to compare the speed of byte compiled code with > > the same source native compiled, as many of us have already attempted > > to do. > If you want to do that, just knowing what was actually loaded won't > help you, because you will have to actually _prevent_ Emacs from > loading the .eln files, and that's not easy and currently not really > supported on the user level, at least not conveniently. So you will > have to rename directories and stuff, and once you are there, > load-history is the last thing you will worry about, because you will > know in advance what Emacs loads, as you force it to do that yourself. Yes. I don't think this is good. But I suspect it's my own fault for not paying attention to the emacs-devel threads about these things a year or two ago. That you input M-x load-file RET ~/foo.elc RET, and get a different file loaded instead doesn't strike me as at all good. > > Or do you mean "difficult means"? Let me propose that there should be > > an easy way of finding this out. > Andrea gave you one way; I gave another. None of them is difficult, > please don't exaggerate. There's nothing particularly difficult in any of Emacs if you're prepared to put in the time and energy to find out about it. The method Andrea gave is not easy to remember, and (having looked for it) is not to be found in the Elisp manual. It involves the obscure undocumented abstraction "native compilation unit". But it is certainly a lot better than no method at all. > > It is clear that load-history no longer supports all its use cases. > > Andrea has reported that trying to update it lead to too many problems. > Yes, and therefore we won't change load-history any time soon. Please > use the other ways that were proposed, even if you for some reason I > cannot understand don't like them. These other ways jar horribly with what used to be the philosophy (I know you don't like the word) of Emacs, of being open and honest with users. I shouldn't have to use obscure workarounds to discover what should be open and obvious. > > So, how about a new additional variable called something like > > load-file-history which would be like load-history, just it would > > store the name of the source file (if known) as well as the name of > > the loaded file? > No, we won't have that. It isn't needed, from my POV, and having yet > another load-related path list will complicate the part of Emacs that > is already mind-boggling. > Again, you have been pointed to two ways of getting the information > you want, and that is more than enough for a corner use case such as > this one. I will set about amending the doc string and manual entry for load-history. -- Alan Mackenzie (Nuremberg, Germany).