all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Aaron Jensen <aaronjensen@gmail.com>
To: emacs-devel@gnu.org
Subject: nativecomp and throw/catch across files
Date: Wed, 17 Feb 2021 23:43:01 -0600	[thread overview]
Message-ID: <CAHyO48wQzOA0t_UKWiSy2+ThR-fDrT2HnsZ1xj_G1SksG06kOw@mail.gmail.com> (raw)

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



             reply	other threads:[~2021-02-18  5:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-18  5:43 Aaron Jensen [this message]
2021-02-18  8:05 ` nativecomp and throw/catch across files 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.

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAHyO48wQzOA0t_UKWiSy2+ThR-fDrT2HnsZ1xj_G1SksG06kOw@mail.gmail.com \
    --to=aaronjensen@gmail.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.