logoalt Hacker News

MFHavayesterday at 4:35 PM2 repliesview on HN

> They then watched the gcc community work through 10 years of pain to make the transition.

During the same time the MSVC compiler broke ABI multiple times and the world didn't end.

The fact that breaking ABI was such a shitshow for libstc++ is more related to the way C++/ABI/SOs is/are handled in Linux...


Replies

Maxataryesterday at 8:13 PM

The reason the world didn't end is because people refused to upgrade Visual Studio, in particular Microsoft's bigger customers. Microsoft surveyed their users for why people weren't making the switch to VS 2013 despite all the "nice" and "new" features introduced and the predominant reason was due to all the ABI breakages.

For VS 2015 they adopted a policy of having a stable ABI and have preserved ABI compatibility for over 10 years now [1].

[1] https://devblogs.microsoft.com/cppblog/binary-compatibility-...

plorkyeranyesterday at 4:49 PM

In the time since that VC++ has switched to a frozen ABI model that’s much closer to what Linux distros have. Each version of VC++ being ABI-incompatible and requiring each application to be built with a single version and ship its c++ runtime had some significant pros and cons.

Microsoft never said it outright, but I’ve always assumed the major con that made them switch was that people didn’t buy new Visual Studio versions because upgrading VS required also upgrading all of your binary blob closed-source dependencies.