From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: What are trampolines? Date: Mon, 05 Dec 2022 16:38:44 -0500 Message-ID: References: <87cz8yyogp.fsf@gmail.com> Reply-To: Stefan Monnier Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39454"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:sMEei/V6FK+KWPDQygomxVbAqSI= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon Dec 05 22:39:44 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 1p2JBf-000AAo-D6 for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 05 Dec 2022 22:39:43 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p2JAz-0005Z7-Dp; Mon, 05 Dec 2022 16:39:03 -0500 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 1p2JAt-0005Yt-BT for help-gnu-emacs@gnu.org; Mon, 05 Dec 2022 16:38:55 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p2JAr-00057L-Qp for help-gnu-emacs@gnu.org; Mon, 05 Dec 2022 16:38:55 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1p2JAp-0008w0-8w for help-gnu-emacs@gnu.org; Mon, 05 Dec 2022 22:38:51 +0100 X-Injected-Via-Gmane: http://gmane.org/ 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 autolearn=no autolearn_force=no X-Spam_action: no action 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-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:141418 Archived-At: > It's not clear to me what does it mean (particularly the documentation > string). What are trampolines? Trampolines are a general concept similar to "proxy" or "stub", basically something that solves a problem related to code using an indirection. In the case of trampolines, it's usually an indirection to which you jump in order to actually jump elsewhere. > A quick Google-fu told me it's a functional programming idiom related > to continuation-passing-computation (à la call/cc in Scheme). That's one use of them, indeed. > Does this mean is it something specific to Elisp? AFAIK it's never related to an actual language but only to a specific implementation, so no it's not specific to ELisp. In this case, it's specific to the new native compiler in Emacs-28. > But why do they need to be enabled at configuration time? Whether they do or not depends on the details. But basically, the native compiler may sometimes need to compile further code (those small snippets we call "trampolines") at run time, so it's necessary to precompile them in those cases where the native compiler may be available when compiling Emacs but not when running it. Stefan