From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Marcin Borkowski Newsgroups: gmane.emacs.help Subject: Re: When are unused overlays garbage collected? Date: Thu, 27 May 2021 18:26:26 +0200 Message-ID: <87v974cfd9.fsf@mbork.pl> References: <87v978u3nd.fsf@mbork.pl> <874keqdr5v.fsf@mbork.pl> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21733"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.1.0; emacs 28.0.50 Cc: help-gnu-emacs@gnu.org To: Stefan Monnier Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu May 27 18:27:59 2021 Return-path: Envelope-to: geh-help-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 1lmIrX-0005Pd-6c for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 27 May 2021 18:27:59 +0200 Original-Received: from localhost ([::1]:50150 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lmIrW-0007z5-6f for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 27 May 2021 12:27:58 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37268) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lmIqE-0006dg-BJ for help-gnu-emacs@gnu.org; Thu, 27 May 2021 12:26:38 -0400 Original-Received: from mail.mojserwer.eu ([195.110.48.8]:40332) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lmIq8-0001NO-Q6 for help-gnu-emacs@gnu.org; Thu, 27 May 2021 12:26:38 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by mail.mojserwer.eu (Postfix) with ESMTP id 45D4CE6ACD; Thu, 27 May 2021 18:26:30 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mail.mojserwer.eu Original-Received: from mail.mojserwer.eu ([127.0.0.1]) by localhost (mail.mojserwer.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ptbnpi5cpL3D; Thu, 27 May 2021 18:26:26 +0200 (CEST) Original-Received: from localhost (83.8.191.179.ipv4.supernova.orange.pl [83.8.191.179]) by mail.mojserwer.eu (Postfix) with ESMTPSA id B2522E62EA; Thu, 27 May 2021 18:26:26 +0200 (CEST) In-reply-to: Received-SPF: pass client-ip=195.110.48.8; envelope-from=mbork@mbork.pl; helo=mail.mojserwer.eu X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=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: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:130257 Archived-At: On 2021-05-26, at 16:48, Stefan Monnier wrote: >> Thanks, too, this is pretty interesting. I assume one possible reason >> for not having `markers-in' (analogous to `overlays-in') is that an >> overlay (even without any variable pointing to it, IOW, a "name" for it) >> has some "semantics" (properties), so it can be "guessed" what it is >> for; for markers, we would only know that "someone wanted to remember >> this position, but we have no idea why/what for", so why even bother >> keeping it? (Technically, there is also the insertion type, but that >> doesn't tell much, either.) > > There's been proposals to add a `markers-in` function or > something similar. The main motivation was to better preserve some > marker's positions when replacing a chunk of text with another. > > But the need is not very compelling, and there are some technical > issues, one of them being that internally overlays are contain two > markers, so this would risk exposing those markers, making it possible > for an overlay to have a start and an end in two different buffers. > None of this is terribly difficult to solve, but compared to the > usefulness it just doesn't seem worth the trouble. I see. >>> So it's OK to create markers are then forget about them, but it's not >>> OK to create overlays and then forget about them: you need to manually >>> `delete-overlay` when you're done with them otherwise they'll accumulate >>> in the buffer. >> >> And that is probably the most important takeaway here - but it raises >> another question. If I create an overlay in some buffer, keep no >> references to it, and then kill the buffer - is the overlay eligible >> for GC? > > Yes, of course, there's nothing very unusual going here, really: when an > overlay is placed in a buffer, it creates a reference from that buffer > to the overlay, so the overlay is reachable as long as the buffer itself > is reachable. Right, I didn't say that it's unusual - I only wanted to clarify that I don't need to e.g. bother with `remove-overlays' before killing the buffer (unless I keep a reference to some of them, of course). Thanks, -- Marcin Borkowski http://mbork.pl