|
From: | Paul Eggert |
Subject: | Re: Dynamic loading progress |
Date: | Thu, 12 Feb 2015 18:40:19 -0800 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 |
#define DEFINE_NONNIL_Q_SYMBOL_MACROS falsebefore including globals.h either directly or indirectly. This #define could be part of any new emacs.h.
We're not out of the woods yet, I'm afraid. For example, suppose a new version of Emacs adds a new kind of function, and that the implementation of functionp changes. And suppose a plugin is compiled with the old version of Emacs and uses the FUNCTIONP macro. Since FUNCTIONP's expansion calls functionp and functionp is an extern inline function, the plugin may use the old version of functionp or it may use the new one -- the C standard allows either behavior. Either way, the plugin may misbehave.
This sort of thing suggests that it may be difficult to guarantee upward compatibility of plugins from one version of Emacs to the next. And perhaps we shouldn't even try.
This raises another question: what exactly should go into emacs.h? The more we put into emacs.h, the more likely plugin compatibility won't survive the transition from one version of Emacs to the next.
[Prev in Thread] | Current Thread | [Next in Thread] |