From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ihor Radchenko Newsgroups: gmane.emacs.devel Subject: Re: Emacs design and architecture. How about copy-on-write? Date: Thu, 21 Sep 2023 09:39:15 +0000 Message-ID: <878r8z27cs.fsf@localhost> References: <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> <99e84ae7-b3aa-a009-5cb8-a75826343196@gutov.dev> <838r92cgxp.fsf@gnu.org> <837comcam8.fsf@gnu.org> <6946e6f0-c6ef-186c-35d4-c09935c05a07@gutov.dev> <83y1h1axtq.fsf@gnu.org> <87sf79rq5o.fsf@yahoo.com> <83fs38c2yv.fsf@gnu.org> <83o7hw9ee1.fsf@gnu.org> <87il84q845.fsf@yahoo.com> <83il849bx6.fsf@gnu.org> <87a5tfri8c.fsf@yahoo.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6443"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , dmitry@gutov.dev, acm@muc.de, incal@dataswamp.org, emacs-devel@gnu.org To: Po Lu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Sep 21 11:39:09 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 1qjG9M-0001Up-RT for ged-emacs-devel@m.gmane-mx.org; Thu, 21 Sep 2023 11:39:08 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjG8M-0000iI-NM; Thu, 21 Sep 2023 05:38:06 -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 1qjG8L-0000gG-8b for emacs-devel@gnu.org; Thu, 21 Sep 2023 05:38:05 -0400 Original-Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjG8J-0005dZ-8f for emacs-devel@gnu.org; Thu, 21 Sep 2023 05:38:05 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 2D5D7240107 for ; Thu, 21 Sep 2023 11:38:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695289080; bh=HUDC4ZBLo/tRFzm2qdwyZCJOgy45+alYi0+g6jKbZrI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=OHgQdhkkVVwhI1zdB3KPPXEAaUTHfTEH9huBauKTcxT7vT/HOYDJGBrwAEH1QYakK /a/z+4mHTK20FLNQlF55aacMeiENM+kPoPBpXjYwz0/G6YNXBJWPWWfQl6PVh5v6EB JqMpwrrX6nJxXx0fcKJTQN6eucpV8xheT6mAejHU38AfdOqF1ZCTLxxtAodstYNgaO Vnd4NPn5EGNzB1vz/aoTt2Adr8K185COgOjI6eDijkBx5Z6+W9H9YQF2C6KhOB4Z3k QPkzBNE02Ud3IhaD8jYWzGJnzBWtoCTXqD5UiNjOjmwik1lXGsrZJ4jH/48Ra0poHp aJcjaBnvbR1/A== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Rrr126hGwz9s2T; Thu, 21 Sep 2023 11:37:58 +0200 (CEST) In-Reply-To: <87a5tfri8c.fsf@yahoo.com> Received-SPF: pass client-ip=185.67.36.66; envelope-from=yantar92@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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:310876 Archived-At: Po Lu writes: >> Then try leaning on C-n or C-p _after_ everything is already >> fontified. You will still see that Emacs sometimes cannot keep up, >> especially if lines are not too short. > > Long lines are, at worst, infrequently encountered in source code, > aren't they? And our troubles with long lines are an algorithmic > impediment, which cannot be ameliorated merely by redisplaying each > window on a different CPU. I think that there is at least one way to address long lines using asynchronous redisplay - put a placeholder on the problematic line and continue calculating the actual rendering in the background instead. That will not force us to compromise between rendering time and accuracy, as we do now, with long-line-threshold. Similar approach might be used to render mode lines - render a placeholder until it is fully calculated, keeping Emacs responsive. This idea is also relevant to a situation when asynchronous threads "locks" a buffer whose window is visible. If a user tries to switch to such buffer, it would be nice if Emacs does not hang until the lock is released. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at