Questions tagged [binary-compatibility]

Binary compatibility is generally an ability of two hardware/software systems to run the same binary code without the need to recompile.

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?
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
1
2
3
12 13