From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: dynamic reload of dynamic module not dynamic? Date: Tue, 19 Apr 2022 16:01:55 +0200 Message-ID: <87a6chuq7g.fsf@zoho.eu> References: <87o810mic0.fsf@zoho.eu> <22BE2D29-B50B-4164-B0AC-4BDFA62A20EC@gmail.com> <87lew3lb94.fsf@zoho.eu> Reply-To: Emanuel Berg Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11748"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:3mm2CMqL1kGZ1O6IWM0MJlwlnV8= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Wed Apr 20 18:32:27 2022 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 1nhDFj-0002pZ-Fb for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 20 Apr 2022 18:32:27 +0200 Original-Received: from localhost ([::1]:54918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhDFi-0006gD-0N for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 20 Apr 2022 12:32:26 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49260) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ngoQm-0003l5-7O for help-gnu-emacs@gnu.org; Tue, 19 Apr 2022 10:02:12 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:44176) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ngoQf-0007sH-6b for help-gnu-emacs@gnu.org; Tue, 19 Apr 2022 10:02:09 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1ngoQc-000374-NX for help-gnu-emacs@gnu.org; Tue, 19 Apr 2022 16:02:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Wed, 20 Apr 2022 12:24:52 -0400 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 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:136971 Archived-At: Philipp Stephani wrote: >>> Yeah, we never call dlclose on the returned shared object >>> handle, so reloading a module will only increment the >>> handle's reference count. It might make sense to support >>> reloading in some way (by having unload-feature eventually >>> call dlclose), but it's not trivial: we need to be careful >>> to invalidate all references to affected module functions >>> before calling dlclose. >> >> Okay, where are they stored then so one can apply >> invalidate to all members and then call dlclose and >> `load' again? > > I don't think we have a single exhaustive location, but at > the very least we'd need to invalidate all corresponding > module functions before unloading a module, probably > repointing them to some function that always signals an > error. There is no mapping from module handles to > corresponding module functions yet, but it shouldn't be > terribly hard to add one (but I think first we should > discuss whether the FR is important enough for that). > Another category would be user pointers, since they are > likely to point nowhere once a module gets unloaded. I don't understand why anything has to be discontinued necessarily, why can't it just be made available again and what's new (or changed) is new? The way it already is in Elisp? That property with Emacs and Elisp is why we are all here BTW :) If one had had to restart Emacs for every change no one would ever get hooked and use Emacs for everything always. Indeed it wouldn't be possible to do even ... -- underground experts united https://dataswamp.org/~incal