4 ms·
I guess it matters whether you consider name mangling to be a part of the ABI. Name mangling used to change quite frequently. Starting with VS 2015 Microsoft
by jdsully 7y ago
I guess it matters whether you consider name mangling to be a part of the ABI. Name mangling used to change quite frequently.
Starting with VS 2015 Microsoft promised to make these changes much less frequent but AFAIK didn't promise to never make changes here. MSVCRT.DLL has kept stability but Microsoft makes no official promises about it. It's considered undocumented.
Source: https://docs.microsoft.com/en-us/cpp/build/reference/decorated-names?view=vs-2019 https://docs.microsoft.com/en-us/cpp/build/reference/decorat...
- userbinator 7y agoMSVCRT.DLL has kept stability but Microsoft makes no official promises about it. That's because it doesn't need to be said. Countless numbers of existing applications would break if it changed, and MS still cares enough about backward compatibility and knows that many huge and important customers depend on them to not do that.
- deleted 7y ago[deleted]
- jdsully 7y agoThis is really moot since MSVCRT is a C runtime lib with MSVCPRT being the the C++ one. Again no stability guarantees are made with any of this. Microsoft promises backward compatibility but not forward compatibility. There is no promise you can link new code with old DLLs. Just that older binaries will still execute unmodified. Very recently with VS2015 they promised "some" forward compatibility and to make fewer changes. In practice there were things you could do to increase the chances of this working. But to call this "stable" would render the term meaningless.
- gpderetta 7y agoHas msvc really changed mangling in the last, say, 20 year? I know that the compliler has a conformancr issue since forever because they mangle struct and class names differently and they do not want to change it because it would break the ABI.
- jdsully 7y agoYes although I don't have an exhaustive list. Both from personal experience, and this is also confirmed from the link I gave above. > The decorated naming conventions have changed in various versions of Visual Studio
- lonelappde 7y agoI wonder which marketing genius decided to rename "name mangling" to "name decoration", and who they thought that lie would fool. Undecorated name Decorated name int a(char){int i=3;return i;}; ?a@@YAHD@Z void __stdcall b::c(float){}; ?c@b@@AAGXM@Z OK, Microsoft.