4 ms·
COM is its own ABI and does not use the C++ ABI: "Unlike C++, COM provides a stable application binary interface (ABI) that does not change between compiler re
by phs2501 9y ago
COM is its own ABI and does not use the C++ ABI:
"Unlike C++, COM provides a stable application binary interface (ABI) that does not change between compiler releases.[3] This makes COM interfaces attractive for object-oriented C++ libraries that are to be used by clients compiled using different compiler versions."
The others seem to be mostly embedded kernels or unikernels which will be tightly linked into your code anyway, so there's no issue of ABI incompatibility with those.
- pjmlp 9y agoThere is no such thing as Language X ABI, rather OS ABI or compiler ABIs. COM is built on top of C++ VTBL implementation on Windows, UWP extends COM by supporting generics as well. As for the other OSes, it is irrelevant where they are used, the fact is that they are exposing C++ APIs not C ones. As matter of fact, had GNU/Linux not taken over the OS world and FOSS projects, and C would be pretty much history by now. Mac OS, BeOS, Symbian, OS/2, Windows were all adopting C++ APIs when GNU/Linux started to gain adoption, with its manifesto to focus on C for GNU software.
- pavlov 9y agoThere is no such thing as Language X ABI, rather OS ABI or compiler ABIs. There is no major C++ compiler on a major OS that provides a stable ABI, so that's what people mean when they say there's no stable C++ ABI. COM is independent of the Microsoft C++ compiler. It's defined on top of the platform's C ABI. (There's a COM implementation on Mac, for example.) On Windows, COM uses the stdcall calling convention. There's no trace of C++ there.