Skip to content

vNext Planning

Stephan T. Lavavej edited this page Jan 14, 2021 · 23 revisions

Salvage The Old vNext Branch

  • Multithreading overhaul
  • Iterator debugging overhaul (doubly-linked iterator chains, no proxy allocations)
    • Still need to overhaul deque and vector<bool>
  • Remove /clr:pure
  • Flat C exports
  • Remove <hash_map>, <hash_set>
  • Remove tr1
  • Other changes? (vcplatform?)

Major Overhauls

  • <regex>
  • <deque>
  • <unordered_map>, <unordered_set>
  • iostreams floating-point

More Work

  • vNext Issues
    • #938 P0408R7 Efficient Access To basic_stringbuf's Buffer can be significantly simplified
  • TRANSITION, ABI comments
  • Consolidate satellite DLL and import LIB code back into the main DLL
  • Drop Vista support; Win7 must be the minimum platform
  • Remove _app DLLs
  • Increase x86 to /arch:SSE2?
  • <variant> changes:
    • Store index() + 1 instead of index() to so the range of possible stored values is contiguous for minor codegen improvements.
    • The hash value of a variant should depend on its index() as well as the stored value so variant<int, int>{in_place_index<0>, 42} and variant<int, int>{in_place_index<1>, 42} don't collide.

Compiler Work

  • Remove /Za (effectively superseded by /permissive-)
  • Remove /Zc:wchar_t-
  • Increase minimum Standard version to C++17 or C++20?
  • RTTI overhaul?
  • EH overhaul possible? (Table-based x86?)
  • Fix Empty Base Class Optimization
  • Avoid ABI-breaking options (e.g. /vd2, /vmg, /J)
  • How do we detect/prevent mixing?