+1 

Cheers,
Keith

> On Apr 30, 2024, at 10:06 AM, Yusuke Suzuki via webkit-dev 
> <webkit-dev@lists.webkit.org> wrote:
> 
> Hello WebKittens!
> 
> Right now, MSVC support is putting significant burden on JavaScriptCore. It 
> lacks many features for JSC development,
> as a result, we have so many workarounds for MSVC in JavaScriptCore (For 
> example, LLInt CLoop 16-bit opcode is disabled only for MSVC since MSVC 
> cannot compile it reasonably).
> 
> I talked with JSC team and Don at Sony, and now I would like to propose 
> dropping MSVC support on Windows port and using clang-cl exclusively on 
> Windows.
> 
> There are many motivating factors for this change.
> 
> 1. Post-commit testing bots (WinCairo) are using clang-cl. So literally, 
> there is zero test coverage on MSVC build right now.
> 2. On the other hand, EWS is using MSVC for build test. This discrepancy is 
> making maintenance of Windows ports harder and harder.
> 3. MSVC has various compilation issues which makes JSC lesser quality. Lack 
> of `__builtin_frame_address` support makes JSC bloating JIT code much. 
> CheckedArith has bunch of special code due to lack of overflow-detecting 
> `__builtin_add_overflow` like operations, and so on.  (but TBH, given there 
> is zero coverage, we even don't know whether it is working right now!)
> 4. Major third-parties using Windows WebKit (e.g. Bun.js, praywright etc.) 
> are using clang-cl, not MSVC.
> 
> Not only solving existing issues, using clang-cl opens significant code / 
> implementation quality improvements opportunities for Windows.
> 
> 1. MSVC does not support various C++20 features, so it is putting our C++20 
> adoption much behind (For example, we cannot use  concept). By using 
> clang-cl, we can start much newer set of C++20 features, improving code 
> quality, static checks etc.
> 2. This paves a way to make Windows JSC implementation super solid. clang-cl 
> offers sysv-abi feature for function attributes. This allows using Linux / 
> macOS amd64 ABI on certain annotated functions. This basically means that we 
> potentially unify our interpreter and JIT implementations completely in Linux 
> / macOS / Windows for x64, (which makes our LLInt / Wasm LLInt on Windows 
> super solid, plus, it paves a way to fully enable all JIT tiers on Windows 
> including FTL).
> 
> We already discussed with Don and we agreed on this.
> And now I would like to formally propose MSVC deprecation towards more 
> cleaner and solid Windows port.
> 
> Best regards,
> -Yusuke Suzuki
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to