From: Stefan Monnier <monnier@iro.umontreal.ca>
To: emacs-devel@gnu.org
Subject: Re: Changing a cl-defstruct definition in a published package
Date: Sun, 15 Jul 2018 09:11:05 -0400 [thread overview]
Message-ID: <jwvfu0k3b7e.fsf-monnier+gmane.emacs.devel@gnu.org> (raw)
In-Reply-To: 133dfba4-e6c7-3aca-a39f-4d26a688c8b5@gmail.com
>> IIUC, outside Flycheck the main operation called (and hence inlined) is
>> the constructor(s). Are field accessors also used outside Flycheck?
>> If so, is there a chance that they are only ever used on those objects
>> that were created by the outside code as well (i.e. those inlined
>> accessors only see objects created by the compatible inline
>> constructors)?
> I don't think so. We have multiple types of extensions, including error
> checkers (which create new objects and use accessors on them, then pass them
> to Flycheck core which also accesses fields on them) and UI plugins that
> take errors produced by the core or plugins and access their fields.
Hmm... then it's going to be difficult: old UI plugins will see objects
created by the new core, and there's no much we can do at that point,
I think.
> This might be possible. I will investigate and possibly follow up.
> I wonder if there may be a trick to force recompilation of dependencies.
> Maybe this is something package.el should support ?
There's no doubt that package.el should support recompilation.
Patches welcome for that (first to add some code which does the actual
recompilation, and then maybe some way to trigger such recompilation of
dependencies).
> Is there a setting to tell cl-defstruct to not generate macros for
> constructors and accessors?
Not currently, no. But João would also like to have such a thing.
Note that the recompilation issue can be solved outside of package.el:
- "recompile package" doesn't have to be in package.el (tho it is its
most natural place).
- you could have code in flycheck.el that does:
(eval-when-compile
(dolist (pkg (find-pkgs-using-the-old-flycheck-object-layout))
(recompile-package pkg)))
so it will be executed when flycheck is compiled.
-- Stefan
next prev parent reply other threads:[~2018-07-15 13:11 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-12 20:12 Changing a cl-defstruct definition in a published package Clément Pit-Claudel
2018-07-13 17:01 ` João Távora
2018-07-13 17:38 ` Basil L. Contovounesios
2018-07-13 18:21 ` Clément Pit-Claudel
2018-07-13 18:26 ` Clément Pit-Claudel
2018-07-13 19:38 ` João Távora
2018-07-13 19:52 ` Clément Pit-Claudel
2018-07-13 20:40 ` Stefan Monnier
2018-07-13 21:07 ` Clément Pit-Claudel
2018-07-14 3:36 ` Stefan Monnier
2018-07-15 4:25 ` Clément Pit-Claudel
2018-07-15 13:11 ` Stefan Monnier [this message]
2018-07-15 13:25 ` Clément Pit-Claudel
2018-07-16 1:51 ` Stefan Monnier
2018-07-30 21:52 ` Clément Pit-Claudel
2018-07-30 22:49 ` Stefan Monnier
2018-07-31 3:28 ` Clément Pit-Claudel
-- strict thread matches above, loose matches on Subject: below --
2018-07-19 20:27 Jake
2018-07-19 21:10 ` Stefan Monnier
2018-07-19 21:34 ` Jake
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=jwvfu0k3b7e.fsf-monnier+gmane.emacs.devel@gnu.org \
--to=monnier@iro.umontreal.ca \
--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.