Subject: bug#56643: 29.0.50; Help-mode bookmarks not loading with native compilation

From: Eli Zaretskii <[email-masked]>
Date: Thu, 21 Jul 2022 08:13:22 +0300

> From: Michael Heerdegen <[email-masked]>
> Cc: Andrea Corallo <[email-masked]>,  [email-masked],  [email-masked]
> Date: Thu, 21 Jul 2022 00:47:30 +0200
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >    (help-setup-xref
> >      (list (lambda (function buffer)
> >              (let ((describe-function-orig-buffer
> >                     (if (buffer-live-p buffer) buffer)))
> >                (describe-function function)))
> >            function describe-function-orig-buffer)
> >      (called-interactively-p 'interactive))
> >
> > In a natively-compiled Emacs, this lambda produces a native-compiled
> > subr.  Is there a way of telling Emacs not to produce such a subr, but
> > instead to produce byte-code for this lambda?  If yes, that could be a
> > (somewhat ugly) workaround in this case.
> 
> Alternatively we could introduce a named helper function.  Note there
> are more calls of `help-setup-xref' using lambdas in arguments.

And that would solve the problem?  Did you try that?

> I see a more general problem: anywhere where printing an anonymous
> function readably is necessary there is a potential breakage when using
> natively compiled Emacs - right?

Only if the function is serialized and written somewhere, and then
some code wants to read it.  Natively-compiled code cannot be read,
AFAIU.