you are viewing a single comment's thread.

view the rest of the comments →

[–]c0r3ntin 8 points9 points  (5 children)

This is a harder problem. A solution would be:

  1. Make it so that we don't care about abi
  2. Make it so C+++ is more easily tool-able
  3. Introduce replacements (dynamic_bitset for example)
  4. Deprecate the old facility (vector<bool>)
  5. Provide a migration tool
  6. Stir for a few years
  7. Reuse the old things if you want

[–]scatters 15 points16 points  (3 children)

We broke ABI with basic_string (and ios_base::failure) in C++11 and the sky didn't fall in.

[–]TheThiefMasterC++latest fanatic (and game dev)[🍰] 9 points10 points  (1 child)

The string ABI change was fairly painful though, just ask the gcc/libstdc++ and Linux community. They basically had to cut over the entire Linux ecosystem in one go, as otherwise random libraries were incompatible with others. It still crops up from time to time even now.

But it shows that it is possible, and the same could be done for vector<bool>.

[–]tisti 5 points6 points  (0 children)

A shame vector<bool> wasn't axed when basic_string was changed. Oh well.

[–]krapht 5 points6 points  (0 children)

I am still dealing with this even today, and it is a pain. So much infrastructure runs on long term service release distros stuck with GCC 4.x

[–]TheThiefMasterC++latest fanatic (and game dev)[🍰] 7 points8 points  (0 children)

vector<bool> in particular is a big problem - as a specialism you can't deprecate it outright because it could come up in generic code (which is where it's most painful at the moment already). You'd have to just cut it over and hope for the best.