From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.devel Subject: Re: Emacs design and architecture (was: Shrinking the C core) Date: Sat, 16 Sep 2023 20:45:00 -0400 Message-ID: References: <87ledwx7sh.fsf@yahoo.com> <877cpfybhf.fsf@yahoo.com> <873503y66i.fsf@yahoo.com> <87fs3ur9u8.fsf@dataswamp.org> <875y4moiiq.fsf@dataswamp.org> <83r0n4rj78.fsf@gnu.org> <83cyynpmvd.fsf@gnu.org> Reply-To: rms@gnu.org Content-Type: text/plain; charset=Utf-8 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1434"; mail-complaints-to="usenet@ciao.gmane.io" Cc: owinebar@gmail.com, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Sep 17 02:45:36 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 1qhfup-0000Cu-Ca for ged-emacs-devel@m.gmane-mx.org; Sun, 17 Sep 2023 02:45:35 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qhfuH-0006iK-Sr; Sat, 16 Sep 2023 20:45:01 -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 1qhfuG-0006i9-Mj for emacs-devel@gnu.org; Sat, 16 Sep 2023 20:45:00 -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 1qhfuG-00040Q-Do; Sat, 16 Sep 2023 20:45:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=Date:References:Subject:In-Reply-To:To:From: mime-version; bh=BQTNjRGUF6HgKqdIJxswcMZtcNwSCJzZC+WK/bhgpB8=; b=UzV9mY0TQ+h9 0aeGdphqu9v8SI/2mOvyOwbpAMVzu5Xy2I0vWIP5LGXZ9bDEoZv0zs3OFuvTGnstHNX4BMWHS+QNc XBBuK+cGC6jFRo48imwG4izbm6/738rPd5xV1KDKP+4KtHDVOlSes1vPSDWS5yMP7K/og349iZrxP SLuoul3/ljqvvjCr04sYTjfpZefOznHWaU1MyKP+7JsUbl9oURi+DfQ6N26tKccb4Y8onKb75fXQl knpYKkJxo0qU0SWXXAbXdgkHWpcuHOieJ5sBcA5k62SBwFJ3AwERssBJ6geCz77jJxPXQFdSZF119 ltDZjish6ALdCZoF69ZB8g==; Original-Received: from rms by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from ) id 1qhfuG-0005pO-5V; Sat, 16 Sep 2023 20:45:00 -0400 In-Reply-To: <83cyynpmvd.fsf@gnu.org> (message from Eli Zaretskii on Tue, 12 Sep 2023 16:00:38 +0300) 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:310646 Archived-At: [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > They are all well known. And they aren't ideas, just main design > features of Emacs which we found restrictive in some aspects: > . "buffer with gap" for storing buffer text > . "mark and sweep" GC > . basic single-threaded MVC architecture > . display engine design around the rectangular canvas model and > on-the-fly layout decisions These are internal design decisions. The last one does relate to some user-level features such as data in the buffer. The first three don't. So I don't see these as being related to simplicity that benefits the users. Changes in those design aspects could make development and maintenance harder and/or more likely to go wrong. For example, some other kinds of GC could impose constraints on development that could make writing C code for Emacs error-prone. But they won't complicate _use_ of Emacs as long as we avoid those errors. A more complex and powerful data structure in the buffer is something I would like to see. I would like it to enable TeX-style formatting of text for display. However, finding a good design for this will be a hard job, I think. We would want it to facilitate redisplay and also be easy for editing. It needs to support editing primitives of the traditional Emacs kind, which treat text as a sequence somehow (even if not the same as now), and editing primitives that operate on the structure and make them convenient. All four of those directions are basically independent. Any one could be done with or without the others. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org)