From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: Dynamic loading progress Date: Thu, 12 Feb 2015 18:40:19 -0800 Organization: UCLA Computer Science Department Message-ID: <54DD6413.1000403@cs.ucla.edu> References: <87y4t9m76w.fsf@lifelogs.com> <85k31coixa.fsf@stephe-leake.org> <85oapy5kt6.fsf@stephe-leake.org> <83y4oiiw81.fsf@gnu.org> <838ugdf251.fsf@gnu.org> <54D80098.3020209@cs.ucla.edu> <54D85304.1030600@cs.ucla.edu> <54D9AC29.2020603@cs.ucla.edu> <54DA8539.1020905@cs.ucla.edu> <87zj8ktq8f.fsf@lifelogs.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1423795253 2870 80.91.229.3 (13 Feb 2015 02:40:53 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 13 Feb 2015 02:40:53 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Feb 13 03:40:44 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YM6BQ-0000FP-0L for ged-emacs-devel@m.gmane.org; Fri, 13 Feb 2015 03:40:44 +0100 Original-Received: from localhost ([::1]:53028 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YM6BP-00031h-DK for ged-emacs-devel@m.gmane.org; Thu, 12 Feb 2015 21:40:43 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:53634) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YM6BK-00031X-Eu for emacs-devel@gnu.org; Thu, 12 Feb 2015 21:40:39 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YM6BH-0001bj-3q for emacs-devel@gnu.org; Thu, 12 Feb 2015 21:40:38 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:58155) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YM6BG-0001aL-NV for emacs-devel@gnu.org; Thu, 12 Feb 2015 21:40:34 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 7CC0939E8018 for ; Thu, 12 Feb 2015 18:40:27 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EAbAbQNoeQwG for ; Thu, 12 Feb 2015 18:40:27 -0800 (PST) Original-Received: from [192.168.1.9] (pool-100-32-155-148.lsanca.fios.verizon.net [100.32.155.148]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 1C83E39E8015 for ; Thu, 12 Feb 2015 18:40:27 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 In-Reply-To: <87zj8ktq8f.fsf@lifelogs.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 131.179.128.62 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:182987 Archived-At: To help make progress on the plugin compatibility issue I installed commit 65563fd7714271582d5146c09202c0f7a0631fe5 in the master. A plugin should do this: #define DEFINE_NONNIL_Q_SYMBOL_MACROS false before 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.