From kde-core-devel Wed Apr 16 03:17:46 2014 From: Michael Pyne Date: Wed, 16 Apr 2014 03:17:46 +0000 To: kde-core-devel Subject: Re: Update needed to binary compatibility guide for Windows? Message-Id: <2920203.NoXBXLmNdO () midna> X-MARC-Message: https://marc.info/?l=kde-core-devel&m=139761820208016 On Mon, April 14, 2014 18:28:14 Ian Monroe wrote: > On Sun, Apr 13, 2014 at 6:36 PM, Michael Pyne wrote: > > If it's true, do we want > > to adopt a constraint on our handling of virtual functions in leaf classes > > based on this? > > IMO we shouldn't worry about ABI on Windows. And not because "meh > Windows", but since Microsoft breaks C++ ABI with every compiler > release, which is quite frequently these days. In general C++ ABI > stability just isn't a thing on Windows. I've looked it up and you're right, they don't even pretend to try to maintain ABI compatibility (instead they recommend using an extern "C" wrapper or a COM interface). But at the same time we went through a time where GCC seemed to have to "fix" their C++ ABI every release and we tried to maintain the same binary compatibility standards throughout. I think what I'll do is note the issue. But in fact it may be worse: Do we require that applications never derive from our exported classes? I.e. do we export interfaces (which should not be derived from) or classes (which can be subclassed)? Because if we export classes with virtual methods, and then an application subclasses our class with their own virtual methods, then adding another virtual method to our "most derived" exported class would break the application even with the GCC ABI. Regards, - Michael Pyne