[Windows] Enable tailcall VM on Windows with clang-cl#21619
[Windows] Enable tailcall VM on Windows with clang-cl#21619henderkes wants to merge 8 commits intophp:masterfrom
Conversation
|
@arnaud-lb since this requires the fixes to clang in the first place, perhaps it's better I just mark this PR as ready for review and close the other one? |
|
I would prefer if the other PR was merged first, then this one rebased so it contains only changes related to tailcall VM. |
Probably not in the near term. Moving all dependencies and the Windows build toolchain over to clang is not trivial, and I’d like to first see how far we can get with improved MSVC PGO and possibly |
The dependencies can keep being compiled with MSVC perfectly fine (assuming you mean libraries). Clang has no issue using them. The full snapshot build succeeds for clang, so I think this only affects unbundled extensions from pie/pecl.
Not very far. As for PGO; it generally didn't make a huge difference. I added a frankenphp case for the symfony demo and the uplift was just 10%, still 33% slower than Clang without PGO. It unsurprisingly helped the phpbench case a lot, but that barely improves what I was doing this whole thing for. |
| run: .github/scripts/windows/build.bat | ||
| - name: Test | ||
| run: .github/scripts/windows/test.bat | ||
| WINDOWS_CLANG: |
There was a problem hiding this comment.
Please unify this with the other windows job. Please also enable it for nightly only. You'll need to adjust this in .github/matrix.php, but it should be pretty self-evident. This should also be done in a separate PR, as these changes will have to land in the PHP-8.2 branch.
If the official builds switch to Clang, it will of course make sense to switch them around (build with MSCV in nightly only).
Edit: Ah I see, that's already GH-21618. I don't know if all these changes are needed just to test in CI though. What matters to me is that .github/matrix.php and .github/workflows/test-suite.yml are synced across all branches. If the other changes are needed for the builds, we can also skip the Clang job for every branch but master, as we do for some other builds.
There was a problem hiding this comment.
I can refactor the CI addition out to a separate PR targetting 8.4 (8.2?). I'm not sure if clang-cl even manages to build there, though.
There was a problem hiding this comment.
That would be great. 8.2 is correct, we keep the build green for security branches. If the aim is to enable the build for master (i.e. 8.6) only, then you can use version_compare() like we do in other places in .github/matrix.php.
requires #21618 first
cc @php/windows-team any chance the official releases will be switched to clang? compiles a bit longer, but performance is improved vastly