<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jun 10, 2019, at 16:37, Eric Fiselier via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" class="">libcxx-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="gmail-gs" style="margin: 0px; padding: 0px 0px 20px; width: 1264px; font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: inherit;"><div class="gmail-"><div id="gmail-:178" class="gmail-gt gmail-ii" style="font-size:12.8px;direction:ltr;margin:8px 0px 0px;padding:0px"><div id="gmail-:177" class="gmail-a3s gmail-aXjCH" style="overflow:hidden;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:small;line-height:1.5;font-family:Arial,Helvetica,sans-serif"><div dir="ltr" class=""><div class="gmail-gs" style="margin: 0px; padding: 0px 0px 20px; width: 1272px; font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: 12px;"><div class="gmail-"><div id="gmail-:11u" class="gmail-gt gmail-ii" style="font-size:12.8px;direction:ltr;margin:8px 0px 0px;padding:0px"><div id="gmail-:11v" class="gmail-a3s gmail-aXjCH" style="overflow:hidden;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:small;line-height:1.5;font-family:Arial,Helvetica,sans-serif"><div dir="ltr" class=""><div class=""><span style="font-family:"Lucida Grande","Lucida Sans Unicode",Arial,Verdana,Helvetica,sans-serif" class="">Hello,</span></div><div class=""><span style="font-family:"Lucida Grande","Lucida Sans Unicode",Arial,Verdana,Helvetica,sans-serif" class=""><br class=""></span></div><div class=""><span style="font-family:"Lucida Grande","Lucida Sans Unicode",Arial,Verdana,Helvetica,sans-serif" class="">libc++ claims to support GCC with C++03 ("G++03"), and this is a problem for our users.</span></div><div class=""><br class=""></div><div class=""><font face="Lucida Grande, Lucida Sans Unicode, Arial, Verdana, Helvetica, sans-serif" class="">Our C++03 users are all using Clang. They must be.</font><span style="font-family:"Lucida Grande","Lucida Sans Unicode",Arial,Verdana,Helvetica,sans-serif" class="">  Less than 9% of the C++03 tests pass with GCC [1][2]. No non-trivial C++ program could work.</span><br class=""></div><div class=""><br class=""></div><div class=""><span style="font-family:"Lucida Grande","Lucida Sans Unicode",Arial,Verdana,Helvetica,sans-serif" class="">Attempting to support G++03 impacts our QoI considerably. Unlike Clang, G++03 offers almost no C++11 extensions. If we could remove all the fallbacks for G++03, it would mean libc++ could::</span></div></div></div></div></div></div></div></div></div></div></div></div></div></blockquote><div><br class=""></div><div>I like the general idea and I definitely support dropping support for C++03 under GCC, since it is effectively unsupported today anyway.</div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail-gs" style="margin: 0px; padding: 0px 0px 20px; width: 1264px; font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: inherit;"><div class="gmail-"><div id="gmail-:178" class="gmail-gt gmail-ii" style="font-size:12.8px;direction:ltr;margin:8px 0px 0px;padding:0px"><div id="gmail-:177" class="gmail-a3s gmail-aXjCH" style="overflow:hidden;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:small;line-height:1.5;font-family:Arial,Helvetica,sans-serif"><div dir="ltr" class=""><div class="gmail-gs" style="margin: 0px; padding: 0px 0px 20px; width: 1272px; font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: 12px;"><div class="gmail-"><div id="gmail-:11u" class="gmail-gt gmail-ii" style="font-size:12.8px;direction:ltr;margin:8px 0px 0px;padding:0px"><div id="gmail-:11v" class="gmail-a3s gmail-aXjCH" style="overflow:hidden;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:small;line-height:1.5;font-family:Arial,Helvetica,sans-serif"><div dir="ltr" class=""><div class=""><div class="">* Improve Correctness:</div></div><div class=""><br class=""></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><div class=""><div class="">Every `#ifdef _LIBCPP_HAS_NO_<C++11-feature>` is a bug manifest. It exists to admit for deviant semantics.</div></div><div class=""><br class=""></div></blockquote><div class=""><div class="">* Achieve ABI stability between C++03 and C++11</div></div><div class=""><br class=""></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><div class=""><div class="">Differences between our C++03 and C++Rest branches contain ABI bugs. For example `std::nullptr_t` and `std::function::operator()(...)` are currently incompatible between C++11 and C++03, but could be fixed.</div></div></blockquote></div></div></div></div></div></div></div></div></div></div></div></div></blockquote><div><br class=""></div>I'd like to echo what some people said regarding breaking ABI here. Instead of breaking the ABI for C++11 extensions in C++03, we could also remove them altogether. This would be a larger change that would require a deprecation period for those extensions, but it might be worth it and it would be safer than an ABI break (because source breaks are compile-time). We could:</div><div><br class=""></div><div>1. Introduce a switch that removes C++11 extensions in C++03</div><div>2. Somehow flag the use of these extensions, asking users to move to C++11 or use alternatives</div><div>3. After some time, toggle the switch to ON by default, removing the extensions</div><div>4. After some time, remove the switch altogether</div><div>5. Get rid of the C++11 extensions in C++03, which are now unused</div><div><br class=""></div><div>This hinges on the feasibility of users actually moving to C++11 or using alternatives, and most importantly the number of impacted users. If there's interest, it would be possible to survey large some code bases to get a sense for these numbers and the feasibility of my plan.</div><div><br class=""></div><div>Eric, WDYT?</div><div><br class=""></div><div>Either way, I would try to dissociate the two projects of dropping support for GCC/C++03 AND taking advantage of the freedom that gives us.</div><div><br class=""></div><div>Louis</div><div><br class=""></div></body></html>