[webkit-dev] Proposal: Dropping MSVC support and use clang-cl exclusively on Windows

Alex Christensen achristensen at apple.com
Wed May 8 14:18:57 PDT 2024


Herb, if you run “git log --grep MSVC” in a git checkout of WebKit, you’ll find many quirks we’ve done in our code to get it to compile with MSVC.  Here are some of the most recent ones:

https://commits.webkit.org/272595@main
https://commits.webkit.org/271031@main
Some warning differences in https://commits.webkit.org/276799@main and https://commits.webkit.org/277563@main
The COMPILER(MSVC) addition necessary in https://commits.webkit.org/265366@main puzzled me a lot for a while, but I stopped looking into it.

And many more.  I don’t have a strong opinion about WebKit’s use of MSVC, but WebKit is certainly a wealth of real-world code that has worked around compiler differences over the last few decades that could be analyzed by the MSVC team if you’re interested.

> On May 2, 2024, at 3:49 PM, Olmstead, Don via webkit-dev <webkit-dev at lists.webkit.org> wrote:
> 
> Hey Herb,
>  
> Not everyone whose embedding WebKit on Windows announces to us that they’re using it so unsure if someone is still compiling using MSVC. All the documentation we have points to clang-cl being the preferred way. The ones we know of Bun, https://bun.sh/ , and Playwright, https://playwright.dev/ , have switched to clang-cl.
>  
> I was personally keeping the dream alive and would compile out WebKit with MSVC. WebKit on Windows doesn’t have the highest tier JITs because we don’t have anyone working on it for Windows and the maintenance costs around MSVC are centered around that. If MSVC had the functionality that helps the JSC folks make the VM run fast we wouldn’t be in this situation. If that functionality is added to the roadmap then we’d definitely reconsider at that time.
>  
> Don
>  
> From: Herb Sutter <herb.sutter at gmail.com> 
> Sent: Thursday, May 2, 2024 1:28 PM
> To: Olmstead, Don <Don.Olmstead at sony.com>; 'Jean-Yves Avenard' <jean-yves.avenard at apple.com>
> Cc: 'WebKit-Dev Development' <webkit-dev at lists.webkit.org>
> Subject: RE: [webkit-dev] Proposal: Dropping MSVC support and use clang-cl exclusively on Windows
>  
> Thank you, Jean-Yves and Don!
>  
> One followup: I don’t know WebKit well but was surprised that it was being built with MSVC, and Yusuke mentioned Windows projects that build with clang-cl instead. Are there known users/products who are building with WebKit that are important not to break, so that we (Microsoft) should be thinking about doing work so you can keep using MSVC, or is this really an unused configuration that it makes sense to just drop?
>  
> Herb
>  
>  
> From: Olmstead, Don <Don.Olmstead at sony.com <mailto:Don.Olmstead at sony.com>>
> Sent: Thursday, May 2, 2024 12:06 PM
> To: Jean-Yves Avenard <jean-yves.avenard at apple.com <mailto:jean-yves.avenard at apple.com>>; Herb Sutter <herb.sutter at gmail.com <mailto:herb.sutter at gmail.com>>
> Cc: WebKit-Dev Development (webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>) <webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>>
> Subject: RE: [webkit-dev] Proposal: Dropping MSVC support and use clang-cl exclusively on Windows
>  
> Hi Herb
>  
> If you grep around the WebKit codebase for COMPILER(MSVC) there are a number of workarounds hanging out. Some may have been fixed over time but the workaround wasn’t removed.
>  
> Biggest issue was around the JIT and some other low level features the JSC folks utilize that isn’t present in MSVC. The lion’s share of JSC development is done using Clang and those working on it don’t have a Windows box handy so we have seen the JIT break on Windows. Yusuke I’m sure has a list of feature requests that would improve the quality of MSVC for people developing VMs.
>  
> MSVC has definitely caught some issues in the code and compiler mono-culture isn’t great but realistically we don’t have the resources to keep MSVC up and running.
>  
> Regards,
> Don
>  
> From: Jean-Yves Avenard via webkit-dev <webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>>
> Sent: Wednesday, May 1, 2024 5:10 PM
> To: Herb Sutter <herb.sutter at gmail.com <mailto:herb.sutter at gmail.com>>
> Cc: Webkit Development List <webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>>
> Subject: Re: [webkit-dev] Proposal: Dropping MSVC support and use clang-cl exclusively on Windows
>  
> Hi
>  
> 
> On 2 May 2024, at 10:07 am, Herb Sutter via webkit-dev <webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>> wrote:
>  
>  
> We’ve had full C++20 including concepts for a couple of years so I wasn’t sure what problem you were running into… are you encountering bugs in those features? or you can’t turn on /std:c++20 for some reason? or are you using an older pre-concepts (pre-VS2022 17.0) compiler?
>  
> Thanks for any feedback you have time to share.
>  
> Herb
>  
>  
> We’ve had issues where some use of concepts made the latest MSVC compiler crash
> See https://searchfox.org/wubkat/source/Source/WTF/wtf/TypeTraits.h#145-172
>  
> See https://bugs.webkit.org/show_bug.cgi?id=261598
>  
> Jean-Yves
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20240508/e2302b06/attachment.htm>


More information about the webkit-dev mailing list