<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Mon, Oct 1, 2018 at 11:00 PM Petr Hosek via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org">libcxx-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br><br><br>---------- Forwarded message ----------<br>From: Petr Hosek <<a href="mailto:phosek@chromium.org" target="_blank">phosek@chromium.org</a>><br>To: <a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a><br>Cc: <br>Bcc: <br>Date: Mon, 1 Oct 2018 20:00:09 -0700<br>Subject: Clarification around ABI version<br><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">This was raised in D52660. Today, libc++ recognizes at least 3 different ABI versions: v1, v2 (and above) and unstable, see <a href="https://github.com/llvm-mirror/libcxx/blob/master/include/__config#L66" target="_blank">https://github.com/llvm-mirror/libcxx/blob/master/include/__config#L66</a>.</div><div dir="ltr"><br></div><div>There are several questions that were raised in that review that I'd like to get clarity on:</div><div><br></div><div>1. Is there a plan to eventually stabilize v2 and introduce v3 (and above) as the unstable version or is v2 going to be unstable forever?</div></div></div></div></blockquote><div><br></div><div>Yes, the plan is to eventually stabilize v2 and introduce v3 (while hopefully phasing out v1). The "unstable" configuration is really</div><div>just a way to say "give me the vX that is currently being staged).</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div>2. What are the guarantees for v2? I understand that this ABI can still change, but I'm interested in testing and stability, shall we expect that v2 receives the same amount of coverage and that bugs specific to v2 will get resolved with the same priority as bugs specific to v1?</div></div></div></div></blockquote><div><br></div><div>Once v2 is stable, it will have the same ABI guarentees as v1 (That is, it won't change). When v2 is made stable, it will ideally become the default and primary configuration for the library. At which point v1 will be "deprecated-ish", but will continue to be maintained until all stakeholders have migrated off it.</div><div>I imagine a timeline for migrating off v1 to take roughly 3-5 years.</div><div><br></div><div>My rough idea was to have at most three ABI versions in flight at any given time. The default configuration (currently v1), the unstable configuration where upcoming changes are staged, and a "deprecated" version that we're working to remove (currently we don't have one).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div>Since the ABI version is part of the generated __config header, it's a vendor rather than per-target option which means it affects all targets that use libc++ headers from the toolchain. This is fine for us since we always link libc++ statically on host and we don't have any plans to guarantee a stable C++ ABI on the target. The improvements seem to be worth using v2 over v1, but I'd like to better understand what the plans and guarantees are before committing to it.</div></div></div></div>
<br><br><br>---------- Forwarded message ----------<br>From: Petr Hosek via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a>><br>To: <a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a><br>Cc: <br>Bcc: <br>Date: Mon,  1 Oct 2018 19:58:54 -0700 (PDT)<br>Subject: [libcxx-dev] Clarification around ABI version<br>_______________________________________________<br>
libcxx-dev mailing list<br>
<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev</a><br>
</blockquote></div></div>