<div dir="ltr"><div dir="ltr">To be honest and clear. It's a misnomer to say libc++ "supports" any Windows configuration at the moment.<div>The CI coverage we have is always red and needs a lot of love to get green [1].</div><div><br></div><div>Before we commit to supporting version X of vcruntime, we should get everything passing with the most recent version.</div><div>Only then can we evaluate the cost of backporting support.</div><div><br></div><div>[1] <a href="https://ci.appveyor.com/project/llvm-mirror/libcxx">https://ci.appveyor.com/project/llvm-mirror/libcxx</a></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 5, 2019 at 4:43 PM Ben Craig 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:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div lang="EN-US">
<div class="gmail-m_6811693611329596450WordSection1">
<p class="MsoNormal">Windows 7 supports the Universal CRT. It doesn’t come preinstalled on the system. I personally think that it is fine to require users to install a C-runtime on windows as part of an install… it’s just the price of doing business on that
platform. (alternatively, you can statically link in the Universal CRT).<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b>From:</b> libcxx-dev <<a href="mailto:libcxx-dev-bounces@lists.llvm.org" target="_blank">libcxx-dev-bounces@lists.llvm.org</a>> <b>
On Behalf Of </b>Shoaib Meenai via libcxx-dev<br>
<b>Sent:</b> Tuesday, March 5, 2019 3:15 PM<br>
<b>To:</b> <a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a><br>
<b>Subject:</b> [EXTERNAL] Re: [libcxx-dev] libcxx on MSVC6.0 runtime<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">(forwarding this one to the mailing list, since it seems to have gotten dropped)<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">It’s possible to deploy the Universal CRT to earlier Windows versions (including Windows 7), correct? Would that work instead?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From: </span></b><span style="font-size:12pt;color:black">Brendan Heinonen <<a href="mailto:brendan@heinonen.co" target="_blank">brendan@heinonen.co</a>><br>
<b>Date: </b>Thursday, February 28, 2019 at 9:48 AM<br>
<b>To: </b>Shoaib Meenai <<a href="mailto:smeenai@fb.com" target="_blank">smeenai@fb.com</a>><br>
<b>Subject: </b>Re: [libcxx-dev] libcxx on MSVC6.0 runtime<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">We build against the Windows 7 SDK, which includes the system MSVCRT. VC6.0 is a bit of a misnomer, the system MSVCRT is really a fork of VC6 with some later features mixed in, though VC6 ABI compatibility is guaranteed.<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Since we replaced cl.exe with Clang, It’d be nice to get some modern STL features too. The patch would also theoretically enable compatibility for MSVC13.0 and below, which is probably a wider use case.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Thu, Feb 28, 2019 at 12:35 Shoaib Meenai <<a href="mailto:smeenai@fb.com" target="_blank">smeenai@fb.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt">
<div>
<div>
<p class="MsoNormal">What's the motivation here? Is it classic MinGW compatibility (since that still uses msvcrt.dll, as far as I know), or something else?<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal" style="margin-left:0.5in">
<b><span style="font-size:12pt;color:black">From: </span></b><span style="font-size:12pt;color:black">libcxx-dev <<a href="mailto:libcxx-dev-bounces@lists.llvm.org" target="_blank">libcxx-dev-bounces@lists.llvm.org</a>> on behalf of Brendan Heinonen via
libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a>><br>
<b>Reply-To: </b>Brendan Heinonen <<a href="mailto:brendan@heinonen.co" target="_blank">brendan@heinonen.co</a>><br>
<b>Date: </b>Thursday, February 28, 2019 at 9:21 AM<br>
<b>To: </b>"<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a>" <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank">libcxx-dev@lists.llvm.org</a>><br>
<b>Subject: </b>[libcxx-dev] libcxx on MSVC6.0 runtime</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<u></u><u></u></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
Hi,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
After some wrangling, I've managed to get libcxx running, linking against the MSVC 6.0 runtime library (yes... from 1998). Right now, libcxx only supports MSVC 14.0 (2015) and above, presumably because the standard library did not have complete C99 support.
I'd like to possibly contribute these changes, but I have a couple of questions.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
1. Would there be any interest in these patches, and would there be any chance of getting them merged since it would not be standards-compliant (due to missing C99+ functions in the runtime)?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
2. If so, what would be the proper way of handling the missing functions? Right now, I have solved the missing function declarations by declaring them in a "shim" header I created outside libcxx. Obviously, that's a less than ideal solution. Instead, would
wrapping the missing functions with a preprocessor <span style="font-family:"Courier New"">
if </span>be acceptable? This would break standards compatibility when targeting MSVC 13.0 and below. Here's an example:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<span style="font-family:"Courier New"">#ifndef _LIBCPP_VCRUNTIME_NO_C11<br>
using ::vfscanf;<br>
using ::vsscanf;<br>
#endif</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
Thanks.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<br>
-- <u></u><u></u></p>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<b>Brendan Heinonen</b><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
H6N Technologies, LLC<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:0.5in">
<a href="mailto:brendan@heinonen.co" target="_blank">brendan@heinonen.co</a><u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
<p class="MsoNormal">-- <u></u><u></u></p>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><b>Brendan Heinonen</b><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">H6N Technologies, LLC<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">+1 (832) 736-4346 | <a href="mailto:brendan@heinonen.co" target="_blank">
brendan@heinonen.co</a><u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
_______________________________________________<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="https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev</a><br>
</blockquote></div>