Binary compatibility is generally an ability of two hardware/software systems to run the same binary code without the need to recompile.
Questions tagged [binary-compatibility]
184 questions
15
votes
2 answers
How to test binary compatibility automatically?
Can it be done before compiling, by comparing code? Is there any tools already doing this?

graphite
- 2,920
- 22
- 40
15
votes
2 answers
Does adding enum values break binary compatibility?
Imagine this enum in a DLL.
public enum Colors
{
Red,
Green
}
Does adding enum values break binary compatibility? If I were to change it, would existing EXEs break?
public enum Colors
{
Red,
Green,
Blue
}
I saw this answer, but…

TheBuzzSaw
- 8,648
- 5
- 39
- 58
14
votes
1 answer
Does adding noexcept break binary compatibility?
Simple question: If change this:
void someMethod();
to
void someMethod() noexcept;
will it break binary compatibility, or does the method signature remain the same?

Felix
- 6,885
- 1
- 29
- 54
13
votes
2 answers
Library ABI compatibility between versions of Visual Studio
I have two scenarios. Suppose I have 3 shared libraries that export C++ symbols, each built with VS7.1, VS8, and VS9. I compile all 3 in VS9. For some reason, this works. I do not need to recompile the first 2 libraries in VS9 for VS9 linker to…

void.pointer
- 24,859
- 31
- 132
- 243
13
votes
8 answers
Genericized commons collection
I'm astonished that the Apache Commons Collections project still hasn't got around to making their library generics-aware. I really like the features provided by this library, but the lack of support for generics is a big turn-off. There is a…

Dónal
- 185,044
- 174
- 569
- 824
13
votes
1 answer
Is adding a trait method with implementation breaking backward compatibility?
I am confused regarding backward compatibility when adding a method with default implementation to a trait. Like:
Previous Version
trait Foo
New Version
trait Foo {
def verifyConsistency: Option[String] = ??? // provide default…

0__
- 66,707
- 21
- 171
- 266
11
votes
3 answers
C# interface breakage, ABI
Suppose we have the class X in version 1 of the assembly A.dll:
class X {
SomeType Property { set; get; }
}
and then in version 2 of the assembly A.dll:
class X {
SomeType Property { set; get; }
SomeType OtherProperty { set; get;…

Jörgen Sigvardsson
- 4,839
- 3
- 28
- 51
11
votes
9 answers
Dll compatibility between compilers
Is there some way to make c++ dlls built with diffrent compilers compatible with each other? The classes can have factory methods for creation and destruction, so each compiler can use its own new/delete (since diffrent runtimes have there own…

Fire Lancer
- 29,364
- 31
- 116
- 182
11
votes
1 answer
Haskell binary compatibility
Let's say I write some Haskell code and compile it in an Ubuntu 64-bit installation, statically linking all Haskell packages and c libraries. Would the result be binary compatible with any other 64-bit linux distribution?

Nate Symer
- 2,185
- 1
- 20
- 27
10
votes
3 answers
Conditionally linking for @autoreleasepool
When I try to run my application in the iOS 4.3 simulator (Xcode 4.2), I crash when I hit @autoreleasepool{}, with:
dyld: lazy symbol binding failed: Symbol not found: _objc_autoreleasePoolPush
I looked around, and I see the workaround is to add…

Steven Fisher
- 44,462
- 20
- 138
- 192
10
votes
3 answers
Crosscompiler Binary compatibility in C
I need to verify something for which I have doubts. If a shared library ( .dll) is written in C, with the C99 standard and compiled under a compiler. Say MinGw. Then in my experience it is binary compatible and hence useable from any other compiler.…

Lefteris
- 3,196
- 5
- 31
- 52
10
votes
3 answers
Are the default constructor and destructor ever inline?
I'm curious if the default constructor and destructor that the compiler generates are inline or not, because I can justify it either way. On the one hand, you want the default constructor/destructor to not be inline so that adding them later doesn't…

Joseph Garvin
- 20,727
- 18
- 94
- 165
10
votes
2 answers
Does adding a move constructor break binary compatibility?
If I add a move-constructor (or move-assignment operator) to my library, will I break binary-compatibility? Can that addition break a user's code in any way?
class Foo {
public:
Foo();
Foo(Foo const&);
Foo& operator=(Foo const&);
// new…

cdunn2001
- 17,657
- 8
- 55
- 45
10
votes
4 answers
Does changing the order of class private data members breaks ABI
I have a class with number of private data members (some of them static), accessed by virtual and non-virtual member functions. There's no inline functions and no friend classes.
class A
{
int number;
string str;
static const int…

Dmitry Yudakov
- 15,364
- 4
- 49
- 53
10
votes
2 answers
Is guava binary compatible with previous versions?
Guava README says that @Beta or deprecated that CAN be changed, removed etc. It does not say clearly whether all remaining classes are binary compatible with previous versions (or I misread it). Although I have feeling that it is backwards…

Rumca
- 1,809
- 12
- 17