From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Reliable after-change-functions (via: Using incremental parsing in Emacs) Date: Thu, 02 Apr 2020 17:44:12 +0300 Message-ID: <83o8sax803.fsf@gnu.org> References: <83369o1khx.fsf@gnu.org> <83imijz68s.fsf@gnu.org> <831rp7ypam.fsf@gnu.org> <86wo6yhj4d.fsf@stephe-leake.org> Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="105306"; mail-complaints-to="usenet@ciao.gmane.io" Cc: stephen_leake@stephe-leake.org, emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Apr 02 16:45:03 2020 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 1jK15a-000RGQ-De for ged-emacs-devel@m.gmane-mx.org; Thu, 02 Apr 2020 16:45:02 +0200 Original-Received: from localhost ([::1]:41316 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jK15Z-0008P3-F5 for ged-emacs-devel@m.gmane-mx.org; Thu, 02 Apr 2020 10:45:01 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37366) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jK152-0007pI-D8 for emacs-devel@gnu.org; Thu, 02 Apr 2020 10:44:29 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:58243) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1jK151-0006wB-OK; Thu, 02 Apr 2020 10:44:27 -0400 Original-Received: from [176.228.60.248] (port=3343 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jK151-0001pT-1u; Thu, 02 Apr 2020 10:44:27 -0400 In-Reply-To: (message from Stefan Monnier on Wed, 01 Apr 2020 22:46:18 -0400) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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:246262 Archived-At: > From: Stefan Monnier > Date: Wed, 01 Apr 2020 22:46:18 -0400 > Cc: emacs-devel > > If the GC is the worry, we can use a function which encodes the > buffer using a given coding-system and returns a malloc'd array of bytes. I think we should try to avoid both copying and encoding the text we send to the parser. Both operations are expensive and require memory allocation. > According to https://github.com/tree-sitter/tree-sitter/issues/222 the > parse tree takes around 10 times the size of the source text. Yes, that's another reason why it might make sense to "forget" trees of buffers that were not displayed for a long time. But this is an optimization that can be added later without any significant changes in the design.