unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* nativecomp and throw/catch across files
@ 2021-02-18  5:43 Aaron Jensen
  2021-02-18  8:05 ` Andrea Corallo via Emacs development discussions.
  0 siblings, 1 reply; 6+ messages in thread
From: Aaron Jensen @ 2021-02-18  5:43 UTC (permalink / raw)
  To: emacs-devel

Hi there,

I've been trying out the nativecomp branch and I use straight.el as my
package manager.

One of the things that it does is throw when it detects that its own
compiled bytecode has changed. It does this from within straight.el:

(eval
 `(unless (equal
           (emacs-version)
           ,(eval-when-compile (emacs-version)))
    (throw 'emacs-version-changed nil)))

https://github.com/raxod502/straight.el/blob/2d407bccd9378f1d5218f8ba2ae85c6be73fbaf1/straight.el#L45-L49

It then catches within bootstrap.el, which loads straight.el:

(catch 'emacs-version-changed
        ;; straight.el has a fun hack that throws
        ;; `emacs-version-changed' if the version of Emacs has changed
        ;; since the last time it was byte-compiled. This prevents us
        ;; from accidentally loading invalid byte-code, hopefully.
        (load (expand-file-name (concat straight.el "c")
                                default-directory)
              nil 'nomessage 'nosuffix)
        (setq emacs-version-changed nil))

https://github.com/raxod502/straight.el/blob/2d407bccd9378f1d5218f8ba2ae85c6be73fbaf1/bootstrap.el#L47-L54

Unfortunately, this doesn't work with nativecomp. It claims that
there's no matching catch when a throw actually happens.

Warning (initialization): An error occurred while loading
‘/Users/aaronjensen/.emacs.d/early-init.el’:

No catch for tag: emacs-version-changed, nil


To reproduce, you should be able to use the bootstrap code:
https://github.com/raxod502/straight.el#bootstrapping-straightel

Then recompile emacs (which changes the value of emacs-version) and run again.

I tried narrowing it down to just a try/catch in two different files
and that worked, so there must be something more peculiar going on
here.

Aaron



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-02-18 15:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-18  5:43 nativecomp and throw/catch across files Aaron Jensen
2021-02-18  8:05 ` Andrea Corallo via Emacs development discussions.
2021-02-18  8:36   ` Aaron Jensen
2021-02-18  9:44     ` Andrea Corallo via Emacs development discussions.
2021-02-18 15:44       ` Aaron Jensen
2021-02-18 15:54         ` Andrea Corallo via Emacs development discussions.

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).