From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Gregory Heytings Newsgroups: gmane.emacs.bugs Subject: bug#51523: 29.0.50; gnus-mime-view-part-externally very slow Date: Mon, 01 Nov 2021 21:14:14 +0000 Message-ID: <6abcac838b9fc735488f@heytings.org> References: <87v91dmcyz.fsf@gnus.org> <7b7f5641fcf9629c6074@heytings.org> <875ytcwxp7.fsf@gnus.org> <6abcac838b0dd46d94cf@heytings.org> <87sfwgvi73.fsf@gnus.org> <6abcac838bc0f53a0f78@heytings.org> <6abcac838bb83b0904d7@heytings.org> <6abcac838b7f89ee4e21@heytings.org> <831r3zncow.fsf@gnu.org> <6abcac838b521de77925@heytings.org> <83zgqnlt7t.fsf@gnu.org> <87y267revf.fsf@gnus.org> <83v91blrux.fsf@gnu.org> <87o873rdyx.fsf@gnus.org> <83r1bzlrkw.fsf@gnu.org> <87bl33rdrv.fsf@gnus.org> <83mtmnlr93.fsf@gnu.org> <87wnlrpyok.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="fl2rksPiwl" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="20221"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 51523@debbugs.gnu.org, monnier@iro.umontreal.ca To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Nov 01 22:16:05 2021 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 1mheey-00052T-K2 for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 01 Nov 2021 22:16:04 +0100 Original-Received: from localhost ([::1]:59156 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mheew-000195-R6 for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 01 Nov 2021 17:16:02 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:38924) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhedy-00014s-PB for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 17:15:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:52952) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mhedy-0007VJ-G0 for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 17:15:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mhedx-0000a9-UG for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 17:15:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Gregory Heytings Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Nov 2021 21:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51523 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo Original-Received: via spool by 51523-submit@debbugs.gnu.org id=B51523.16358012612151 (code B ref 51523); Mon, 01 Nov 2021 21:15:01 +0000 Original-Received: (at 51523) by debbugs.gnu.org; 1 Nov 2021 21:14:21 +0000 Original-Received: from localhost ([127.0.0.1]:36259 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mhedJ-0000Yc-BS for submit@debbugs.gnu.org; Mon, 01 Nov 2021 17:14:21 -0400 Original-Received: from heytings.org ([95.142.160.155]:45108) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mhedD-0000YK-Vw for 51523@debbugs.gnu.org; Mon, 01 Nov 2021 17:14:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635801254; bh=kX+8YBC7TDrJCvfO6mkd0d3wFtNmPL7wDovmQOOOFco=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=EXPAtqkrVYLXxnUEfuPx8wYXmTYFOTsqM0oBSHhfOlrwSzoM8OKnqfJSmArrizaN5 k+FIuSpzZF6x+KHF5P6svY/p3CvIR3QWAmtbZIYJX41RSkPq1P1/MU09G1cvaYZxuA dmHArMb2OgE4+vg3nWVxUue1fKqo5as3xwbPl47BU3C+t6k7XYGU7+CeuYvUACKN3A m329Ri/6RDg0QlMwSNTU7Yb53ryULEnganswIAG6oq8LAqcvKU6ud4wfo5U+6wrJmC e0b8/f77bkJiqXORVAA/PzcEOn+fNAho22UbIo+YNeefmKyNRPCi5aJfodLlBfpSLT 7jZqSmrYmWOQw== In-Reply-To: <87wnlrpyok.fsf@gnus.org> Content-ID: <6abcac838baee2513454@heytings.org> 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" Xref: news.gmane.io gmane.emacs.bugs:218789 Archived-At: --fl2rksPiwl Content-Type: text/plain; charset=us-ascii; format=flowed Content-ID: <6abcac838b20da86129e@heytings.org> I attach an improved version of file-has-changed-p. Following Eli's suggestion, it records the file size together with its timestamp. Stefan: > > This API doesn't seem safe. > > If two packages read&parse the same file and both rely on this function > to decide when to reparse, the second package can get a nil value > (because the first has caused the mtime to be reset in the hash table) > even though the file has changed since it last parsed it. > I agree with you, and added a second optional "tag" argument to the function, in which one can for example pass the name of the calling function, or the name of the library. It's the responsibility of the caller to use the tag they want. Eli: > > What would be the purpose of replacing with an older file, but keeping > the old time stamp? And why is Gnus obligated to support such strange > use cases? We can always tell the users to bump the file's time stamp > by 'touch'ing it, no? > It's not a strange use case at all. For example, you make a backup of your ~/.mailcap file, make some changes in the original file, decide that after all they're not what you want, and do mv ~/.mailcap.bak ~/.mailcap. > > But the real answer to that question is to compare the contents, not > file's attributes. Testing attributes is an approximation, and once we > are using an approximation, it is legitimate to ask when it's okay for > the approximation to fail. > It's an approximation indeed, but it's a very safe one. It's what rsync uses, and I haven't seen a single case in which it failed to do TRT in twenty years or so. The likelihood that a file with the exact same filename, same size and same timestamp have different contents is, in practice, zero. It is of course possible to cheat that detection mechanism, but only if you do it on purpose. --fl2rksPiwl Content-Type: text/x-diff; name=Improve-file-has-changed-p.patch Content-Transfer-Encoding: base64 Content-ID: <6abcac838b12dc2dbafc@heytings.org> Content-Description: Content-Disposition: attachment; filename=Improve-file-has-changed-p.patch RnJvbSBmOGI5NjliMWFjZWQ1OGU3NGU5NDJhMDkzMzViYTNmM2M3NTJlYmEx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBNb24sIDEgTm92 IDIwMjEgMjE6MTA6NDkgKzAwMDANClN1YmplY3Q6IFtQQVRDSF0gSW1wcm92 ZSBmaWxlLWhhcy1jaGFuZ2VkLXAuDQoNCiogbGlzcC9maWxlcyAoZmlsZS1o YXMtY2hhbmdlZC1wKTogQWRkIGEgc2Vjb25kIGFyZ3VtZW50LCBhbmQgdXNl IGl0Lg0KVXBkYXRlIHRoZSBkb2NzdHJpbmcuDQoNCiogZG9jL2xpc3ByZWYv ZmlsZXMudGV4aTogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uLg0KDQoqIGxp c3AvbmV0L21haWxjYXAuZWw6IEFkZCBhIHNlY29uZCBhcmd1bWVudCB0byB0 aGUgY2FsbCB0bw0KZmlsZS1oYXMtY2hhbmdlZC1wLg0KLS0tDQogZG9jL2xp c3ByZWYvZmlsZXMudGV4aSB8ICA4ICsrKysrLS0tDQogbGlzcC9maWxlcy5l bCAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0N CiBsaXNwL25ldC9tYWlsY2FwLmVsICAgIHwgIDQgKysrLQ0KIDMgZmlsZXMg Y2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pDQoN CmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9maWxlcy50ZXhpIGIvZG9jL2xp c3ByZWYvZmlsZXMudGV4aQ0KaW5kZXggMjUwZjdhM2Y5Zi4uY2U5NjdlZTM4 MSAxMDA2NDQNCi0tLSBhL2RvYy9saXNwcmVmL2ZpbGVzLnRleGkNCisrKyBi L2RvYy9saXNwcmVmL2ZpbGVzLnRleGkNCkBAIC0xMzE0LDEzICsxMzE0LDE1 IEBAIEZpbGUgQXR0cmlidXRlcw0KIEBlbmQgZXhhbXBsZQ0KIEBlbmQgZGVm dW4NCiANCi1AZGVmdW4gZmlsZS1oYXMtY2hhbmdlZC1wIGZpbGVuYW1lDQor QGRlZnVuIGZpbGUtaGFzLWNoYW5nZWQtcCBmaWxlbmFtZSB0YWcNCiBUaGlz IGNvbnZlbmllbmNlIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuLCBmb3IgaW5z dGFuY2UsIHBhcnNpbmcgZmlsZXMNCiBydW4tdGltZSwgYW5kIHlvdSB0eXBp Y2FsbHkgd2FudCB0byByZS1yZWFkIGEgZmlsZSB3aGVuIGl0IGhhcw0KIGNo YW5nZWQuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbm9uLUBjb2Rle25pbH0g dGhlIGZpcnN0IHRpbWUgaXQncw0KIGNhbGxlZCBvbiBAdmFye2ZpbGVuYW1l fSBpbiBhbiBFbWFjcyBzZXNzaW9uLCBidXQgd2lsbCByZXR1cm4NCi1AY29k ZXtuaWx9IG9uIHN1YnNlcXVlbnQgY2FsbHMgaW4gdGhhdCBzZXNzaW9uICh1 bmxlc3MgdGhlIGZpbGUNCi1jaGFuZ2VzIGl0cyBtb2RpZmljYXRpb24gdGlt ZSkuDQorQGNvZGV7bmlsfSBvbiBzdWJzZXF1ZW50IGNhbGxzIGluIHRoYXQg c2Vzc2lvbiAodW5sZXNzIHRoZSBmaWxlIHNpemUNCitvciBtb2RpZmljYXRp b24gdGltZSBoYXMgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUpLiAgV2l0aCBh biBvcHRpb25hbA0KK2FyZ3VtZW50IEB2YXJ7dGFnfSwgdGhlIHNpemUgYW5k IG1vZGlmaWNhdGlvbiB0aW1lIGNvbXBhcmlzb25zIGFyZQ0KK2xpbWl0ZWQg dG8gY2FsbHMgd2l0aCB0aGUgc2FtZSB0YWcuDQogQGVuZCBkZWZ1bg0KIA0K IEBkZWZ1biBmaWxlLWF0dHJpYnV0ZXMgZmlsZW5hbWUgJm9wdGlvbmFsIGlk LWZvcm1hdA0KZGlmZiAtLWdpdCBhL2xpc3AvZmlsZXMuZWwgYi9saXNwL2Zp bGVzLmVsDQppbmRleCA1ZTdiZTM4NDRlLi5kN2RmYTkzOTllIDEwMDY0NA0K LS0tIGEvbGlzcC9maWxlcy5lbA0KKysrIGIvbGlzcC9maWxlcy5lbA0KQEAg LTYxODEsMjEgKzYxODEsMjUgQEAgZmlsZS1pbi1kaXJlY3RvcnktcA0KIAkg ICh1bmxlc3MgbWlzbWF0Y2gNCiAJICAgIChmaWxlLWVxdWFsLXAgcm9vdCBk aXIpKSkpKSkpDQogDQotKGRlZnZhciBmaWxlLWhhcy1jaGFuZ2VkLXAtLWhh c2gtdGFibGUgKG1ha2UtaGFzaC10YWJsZSkNCisoZGVmdmFyIGZpbGUtaGFz LWNoYW5nZWQtcC0taGFzaC10YWJsZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0 ICMnZXF1YWwpDQogICAiSW50ZXJuYWwgdmFyaWFibGUgdXNlZCBieSBgZmls ZS1oYXMtY2hhbmdlZC1wJy4iKQ0KIA0KLShkZWZ1biBmaWxlLWhhcy1jaGFu Z2VkLXAgKGZpbGUpDQorKGRlZnVuIGZpbGUtaGFzLWNoYW5nZWQtcCAoZmls ZSAmb3B0aW9uYWwgdGFnKQ0KICAgIlJldHVybiBub24tbmlsIGlmIEZJTEUg aGFzIGNoYW5nZWQuDQotVGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9mIEZJTEUg aXMgY29tcGFyZWQgdG8gdGhlIG1vZGlmaWNhdGlvbg0KLXRpbWUgb2YgRklM RSBkdXJpbmcgYSBwcmV2aW91cyBpbnZvY2F0aW9uIG9mIGBmaWxlLWhhcy1j aGFuZ2VkLXAnLg0KLVRoZXJlZm9yZSB0aGUgZmlyc3QgaW52b2NhdGlvbiBv ZiBgZmlsZS1oYXMtY2hhbmdlZC1wJyBhbHdheXMNCi1yZXR1cm5zIG5vbi1u aWwuIg0KLSAgKGxldCogKChhdHRyIChmaWxlLWF0dHJpYnV0ZXMgZmlsZSAn aW50ZWdlcikpDQotCSAgKG10aW1lIChmaWxlLWF0dHJpYnV0ZS1tb2RpZmlj YXRpb24tdGltZSBhdHRyKSkNCi0JICAoc2F2ZWQtbXRpbWUgKGdldGhhc2gg KGludGVybiBmaWxlKQ0KLQkJCQlmaWxlLWhhcy1jaGFuZ2VkLXAtLWhhc2gt dGFibGUpKSkNCi0gICAgICh3aGVuIChub3QgKGVxdWFsIG10aW1lIHNhdmVk LW10aW1lKSkNCi0gICAgICAgKHB1dGhhc2ggKGludGVybiBmaWxlKSBtdGlt ZSBmaWxlLWhhcy1jaGFuZ2VkLXAtLWhhc2gtdGFibGUpKSkpDQorVGhlIHNp emUgYW5kIG1vZGlmaWNhdGlvbiB0aW1lIG9mIEZJTEUgaXMgY29tcGFyZWQg dG8gdGhlIHNpemUNCithbmQgbW9kaWZpY2F0aW9uIHRpbWUgb2YgRklMRSBk dXJpbmcgYSBwcmV2aW91cyBpbnZvY2F0aW9uIG9mDQorYGZpbGUtaGFzLWNo YW5nZWQtcCcuICBUaGVyZWZvcmUgdGhlIGZpcnN0IGludm9jYXRpb24gb2YN CitgZmlsZS1oYXMtY2hhbmdlZC1wJyBhbHdheXMgcmV0dXJucyBub24tbmls Lg0KK1RoZSBvcHRpb25hbCBhcmd1bWVudCBUQUcgY2FuIGJlIHVzZWQgdG8g bGltaXQgdGhlIGNvbXBhcmlzb24gdG8NCitpbnZvY2F0aW9ucyB3aXRoIGlk ZW50aWNhbCB0YWdzOyBpdCBjYW4gZm9yIGV4YW1wbGUgYmUgdGhlIHN5bWJv bA0KK29mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiINCisgIChsZXQqICgoZmls ZWF0dHIgKGZpbGUtYXR0cmlidXRlcyBmaWxlICdpbnRlZ2VyKSkNCisJIChh dHRyIChjb25zIChmaWxlLWF0dHJpYnV0ZS1zaXplIGZpbGVhdHRyKQ0KKwkJ ICAgICAoZmlsZS1hdHRyaWJ1dGUtbW9kaWZpY2F0aW9uLXRpbWUgZmlsZWF0 dHIpKSkNCisJIChzeW0gKGNvbmNhdCAoc3ltYm9sLW5hbWUgdGFnKSAiQCIg ZmlsZSkpDQorCSAoY2FjaGVkYXR0ciAoZ2V0aGFzaCBzeW0gZmlsZS1oYXMt Y2hhbmdlZC1wLS1oYXNoLXRhYmxlKSkpDQorICAgICAod2hlbiAobm90IChl cXVhbCBhdHRyIGNhY2hlZGF0dHIpKQ0KKyAgICAgICAocHV0aGFzaCBzeW0g YXR0ciBmaWxlLWhhcy1jaGFuZ2VkLXAtLWhhc2gtdGFibGUpKSkpDQogDQog KGRlZnVuIGNvcHktZGlyZWN0b3J5IChkaXJlY3RvcnkgbmV3bmFtZSAmb3B0 aW9uYWwga2VlcC10aW1lIHBhcmVudHMgY29weS1jb250ZW50cykNCiAgICJD b3B5IERJUkVDVE9SWSB0byBORVdOQU1FLiAgQm90aCBhcmdzIG11c3QgYmUg c3RyaW5ncy4NCmRpZmYgLS1naXQgYS9saXNwL25ldC9tYWlsY2FwLmVsIGIv bGlzcC9uZXQvbWFpbGNhcC5lbA0KaW5kZXggNGRlZGQzOGMyMi4uZTQwY2Yy YTMzNiAxMDA2NDQNCi0tLSBhL2xpc3AvbmV0L21haWxjYXAuZWwNCisrKyBi L2xpc3AvbmV0L21haWxjYXAuZWwNCkBAIC00NDcsNyArNDQ3LDkgQEAgbWFp bGNhcC1wYXJzZS1tYWlsY2Fwcw0KICAgICAgICAgICAgICAgKCIvZXRjL21h aWxjYXAiIHN5c3RlbSkNCiAgICAgICAgICAgICAgICgiL3Vzci9ldGMvbWFp bGNhcCIgc3lzdGVtKQ0KIAkgICAgICAoIi91c3IvbG9jYWwvZXRjL21haWxj YXAiIHN5c3RlbSkpKSkpDQotICAgICh3aGVuIChzZXEtc29tZSAobGFtYmRh IChmKSAoZmlsZS1oYXMtY2hhbmdlZC1wIChjYXIgZikpKSBwYXRoKQ0KKyAg ICAod2hlbiAoc2VxLXNvbWUgKGxhbWJkYSAoZikNCisgICAgICAgICAgICAg ICAgICAgICAgKGZpbGUtaGFzLWNoYW5nZWQtcCAoY2FyIGYpICdtYWlsLXBh cnNlLW1haWxjYXBzKSkNCisgICAgICAgICAgICAgICAgICAgIHBhdGgpDQog ICAgICAgOzsgVGhlIH4vLm1haWxjYXAgZW50cmllcyB3aWxsIGVuZCB1cCBm aXJzdCBpbiB0aGUgcmVzdWx0aW5nIGRhdGEuDQogICAgICAgKGRvbGlzdCAo c3BlYyAocmV2ZXJzZQ0KIAkJICAgICAoaWYgKHN0cmluZ3AgcGF0aCkNCi0t IA0KMi4zMy4wDQoNCg== --fl2rksPiwl--