4 ms·
C++ really needs a standard ABI. None of these newer features really matter much without it. You still can't make libraries without compiling your code 10 dif
by snarfy 9y ago
C++ really needs a standard ABI. None of these newer features really matter much without it. You still can't make libraries without compiling your code 10 different times with a handful of compilers and flags and shipping all of the resulting binaries.
- lallysingh 9y agoThere is one. Apologies for the ugly link, it goes to a pdf and I'm on a phone: https://www.google.com/url?sa=t&source=web&rct=j&url=https://software.intel.com/sites/default/files/article/402129/mpx-linux64-abi.pdf&ved=2ahUKEwiR4IimoZ7aAhVM2IMKHSlbD3gQFjAAegQIBxAB&usg=AOvVaw0MVQdLNlkOBigLu5VDb82x https://www.google.com/url?sa=t&source=web&rct=j&url=https:/... 10 times? Do you mean 10 platforms vs 1 on something like Java?
- vinkelhake 9y agoI don't think C++ desperately needs a standard ABI, but ignoring that for a moment... The System V ABI doesn't really do anything for the people who asks for a standard C++ ABI. It's not enough to mandate how objects are laid out. People want the ability to define a library function that uses standard types - for example std::string - in the interface. To build a library with libstdc++ and link it with an application that has been built with libc++, there would (among other things) have to be a common string type that they agree on. Herb Sutter has done some work in this area, but I don't know the current status of it. https://isocpp.org/files/papers/n4028.pdf https://isocpp.org/files/papers/n4028.pdf
- jcelerier 9y ago> To build a library with libstdc++ and link it with an application that has been built with libc++, there would (among other things) have to be a common string type that they agree on. well, then there would be a single standard library implementation. I think that would be the way to go : just put libc++ out of the std namespace and in a custom namespace, `st2` for instance, and use its types from everywhere. MSVC, GCC, whatever.
- gok 9y agoThere is standardized calling conventions and symbol name mangling, but not the layout of STL types. Oh and even then, the ABI had to be changed when C++11 added rvalue references and move semantics.
- favorited 9y agoIt was proposed a few years ago, but it went nowhere. It was proposed by Herb, which was honestly kinda surprising to me since MS breaks its C++ ABI all the time...