From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Re: Emacs design and architecture. How about copy-on-write? Date: Sun, 24 Sep 2023 03:29:05 +0300 Message-ID: <8ab91f62-5a5b-7f63-6d8a-7cb417473e2b@gutov.dev> References: <87cyyhc7uu.fsf@dataswamp.org> <83ttrsg9nx.fsf@gnu.org> <83h6nrg4eg.fsf@gnu.org> <83v8c7elan.fsf@gnu.org> <877conk5ny.fsf@localhost> <83ttrreeu0.fsf@gnu.org> <87bkdzeas1.fsf@localhost> <83cyyfe5l8.fsf@gnu.org> <87led2o0nb.fsf@localhost> <83ttrqcpfb.fsf@gnu.org> <877comnv4a.fsf@localhost> <83fs3ackrq.fsf@gnu.org> <87ttrp89bx.fsf@localhost> <83led1aqnq.fsf@gnu.org> <87v8c3zun7.fsf@localhost> <83r0mr8w0j.fsf@gnu.org> <87bkduxz3l.fsf@localhost> <83cyya75eb.fsf@gnu.org> <877coh2lmd.fsf@localhost> <83r0mp3zh5.fsf@gnu.org> <55f29d31-947f-4cfc-a90e-36b0592ba12e@gutov.dev> <83lecx3uxt.fsf@gnu.org> <83il813u9e.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="4159"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Cc: yantar92@posteo.net, acm@muc.de, incal@dataswamp.org, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Sep 24 02:30:19 2023 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 1qkD0s-0000sg-0e for ged-emacs-devel@m.gmane-mx.org; Sun, 24 Sep 2023 02:30:18 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qkCzs-00070E-TP; Sat, 23 Sep 2023 20:29:16 -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 1qkCzr-0006zw-EP for emacs-devel@gnu.org; Sat, 23 Sep 2023 20:29:15 -0400 Original-Received: from wout4-smtp.messagingengine.com ([64.147.123.20]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qkCzp-0004my-6G; Sat, 23 Sep 2023 20:29:15 -0400 Original-Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 7367832002FB; Sat, 23 Sep 2023 20:29:10 -0400 (EDT) Original-Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Sat, 23 Sep 2023 20:29:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1695515349; x=1695601749; bh=0B+90Tt8PrOQe6oVAecKfVkrAHYkhoVmURh HFikIgng=; b=xwL7yKLiCPvewSgHixKIou5AjOzb+UUO40fPRs1Uor6IiOBmKZU NJXwsMZ2QJi2OrEfa6tlbm3+MjJRNl0s9x7Bps8WTibix1dyghEQ/Jbm6XhWGGjT vFLPo/VyQM2AGJi0Gl3gUaf43JZWGBWH4JRf56QmeyxdQ2QvgXfzLrH7FMV3Ox2E /K0MrnNmcnz+gCpWgSfCQt2CaiUvD5OgN6v8Ul2SVXp7Z2ChhLPTcoVqv77/fNGr nq6CQAYZs2Jns2k2TIlCTyBqSFJYCbHGIbLBmoH/nKCGtKpTzZa+fbQAfnJQPyBC nIbi5e45i1CBXMvy/GuLYYnpfN/baS7QXlA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1695515349; x=1695601749; bh=0B+90Tt8PrOQe6oVAecKfVkrAHYkhoVmURh HFikIgng=; b=aUsb4Z3WidFgzZ92OXSnZadPm6Uso2VW6YG/l3PuBxSmpyyAdV9 IeTqM1s/H5K280E22MgIqtAnk+00+coMXze8IYP62yClq5bezxRlhtRxQRvXiSz1 1Y/3R6TVn2c7aVDM0zOU/JFHBphnI3deLvi3oWjJa5Xgtey9igq9c9XIXvrdlurJ in2meTBZUekfQepRH45fqWST/F2ZEuhskVQvlsqJ4L+iTL6CQ0MZawz9RBstTDSM 0hxjMjKPt3zFkt9ca+Qxzqqt+l/fgBl88QptDDVO3GCuERT1pX56O8KzHJyhHzkh VCGVGqa1HkXxS3lbZnwsdMEYpn4ZPLmsO+Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedrudeluddgfeehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne goufhushhpvggtthffohhmrghinhculdegledmnecujfgurhepkfffgggfuffvvehfhfgj tgfgsehtjeertddtfeejnecuhfhrohhmpeffmhhithhrhicuifhuthhovhcuoegumhhith hrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnhepkeegieefteehffffveeu leelheeiteekteduhfejhefhvefgtefhlefhlefhffetnecuffhomhgrihhnpehgohhogh hlvgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr ohhmpegumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 23 Sep 2023 20:29:08 -0400 (EDT) Content-Language: en-US In-Reply-To: <83il813u9e.fsf@gnu.org> Received-SPF: pass client-ip=64.147.123.20; envelope-from=dmitry@gutov.dev; helo=wout4-smtp.messagingengine.com X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-1.473, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 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-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:311007 Archived-At: On 23/09/2023 16:15, Eli Zaretskii wrote: >> Date: Sat, 23 Sep 2023 16:08:23 +0300 >> Cc: yantar92@posteo.net, acm@muc.de, incal@dataswamp.org, emacs-devel@gnu.org >> From: Dmitry Gutov >> >> On 23/09/2023 16:01, Eli Zaretskii wrote: >>>> Date: Sat, 23 Sep 2023 15:53:11 +0300 >>>> Cc:acm@muc.de,incal@dataswamp.org,emacs-devel@gnu.org >>>> From: Dmitry Gutov >>>> >>>> On 23/09/2023 14:23, Eli Zaretskii wrote: >>>>> As a trivial example, any function that modifies a file-visiting >>>>> buffer could prompt the user if the file was meanwhile modified on >>>>> disk. This prompt is completely out of control of any Lisp program >>>>> which does something that modifies buffer text. How do we handle >>>>> these cases? their name is a legion. >>>> Any function that prompts the user is not supposed to be fast. So it >>>> might as well acquire any number of global locks to do that. >>> That's not my point. My point is that if we say that changes to adapt >>> existing code to threads are acceptable, we will have to make those >>> changes all over our infrastructure, otherwise programs written for >>> threads will not ready for threads 100%. >> >> I agree: functions like yes-or-no-p will have to, internally in their >> implementation, acquire the "redisplay lock" or whatever it'll be >> called, and do other things to ensure that they work from non-default >> threads too. >> >> This will likely make them a little slower compared to the single-thread >> model, but hopefully not to a degree that's humanly noticeable. > > I'm not bothered by slowness, I'm much more bothered by the magnitude > of the changes this will incur. I don't even know how to identify all > the places which would need such changes. That would be up to the implementor: do a patch, run with existing code, notice problems, patch some more. Etc. The issue is creating a reasonably complete (and useable) implementation that at least some developers start testing the waters. Anyway, some concern about performance might be warranted. For example, the recent "Python without GIL" project describes a 9% difference in single-thread performance, which the author of course tried to make up for with new optimizations (https://docs.google.com/document/d/18CXhDb1ygxg-YXNBJNzfzZsDFosB5e6BfnXLlejd9l0/edit?pli=1). I recall that even a 2% (?) difference caused by the symbols-with-positions feature was considered a problem not too long ago.