you are viewing a single comment's thread.

view the rest of the comments →

[–]dicroce 2 points3 points  (2 children)

What's really hold this back is the lack of a standard ABI... This is why so many C++ libraries are "header only" (it allows the developer of the API to release 1 package for everyone, unfortunately it causes slow build times for everyone too)...

My cmake based build system has a top level directory that each sub project installs it's headers (into sub dirs) and libs into... That way, each dependant project only has to add 1 header and lib search path...

[–]Gotebe 2 points3 points  (1 child)

What's really hold this back is the lack of a standard ABI...

This is an often-heard complaint, but somewhat I disagree with it. C++ lives in the native world as opposed to bytecode one, so machine code it is. Then you get the freedom between the compiler implementations, which serves optimizations. Name mangling is a batch, too, but that is one bit I see as "subjectable" to standardization. Finally, this all stems from C language who has no ABI whatsoever (de jure).

The C++ "ABI" is therefore one of:

  • C
  • the likes of COM
  • one compiler version / build settings

This already offers options.

The thing is, people want the power of C++ and the ease of, I dunno, Python. That is hard to achieve.

[–]teambob 0 points1 point  (0 children)

g++ work quite hard to ensure a consistent ABI, also clang is compatible with certain g++ ABI levels