Open lemire opened 5 months ago
I recall that it was recommended by MS folks to build using clang on Windows.
One issue to consider is that Google switched over so they are developing V8 under ClangCL.
I was thinking about opening an umbrella issue with a checklist or something like that for all things related to enabling ClangCL compilation on Windows, but since there is already this issue if you agree @lemire we can use it for that (if not, I'll create a separate issue with the content of this message).
Anyway, the following is (not sorted according to priority) a list of things done, being worked on, or that should be worked on before stating ClangCL is officially supported for compiling Node.js on Windows:
vcbuild.bat
to pick from MSVC and CLangCL - This landed in https://github.com/nodejs/node/pull/52870gyp-next
to enable setting language standard keys in msvs_settings - This landed upstream in https://github.com/nodejs/gyp-next/pull/252, will eventually get updated in the main projectccache
or similar tools with ClangCL.I might have missed something, but most things should be covered here. If anyone notices something missing or wrong, please let me know.
cc: @targos @nodejs/platform-windows
@StefanStojanovic It definitively makes sense to leverage the current issue.
@StefanStojanovic It definitively makes sense to leverage the current issue.
Great! One issue I see with it is that if the comment gets edited often (eg. I edited it just now to add a PR I opened) it will probably not be sent as a notification, plus I'm probably the only one who can edit it. If anyone has a better idea eg. a GitHub Project or something like that, I'm all for it.
@StefanStojanovic I can edit your comment, but another take on it would be to edit the issue first post (that is, the text I have written). Do you have edit access?
I think you should be able to edit the issue... I think you have access... don't you?
That is, I don't own this issue, it should be a collective one.
@StefanStojanovic I can edit your comment, but another take on it would be to edit the issue first post (that is, the text I have written). Do you have edit access?
I think you should be able to edit the issue... I think you have access... don't you?
That is, I don't own this issue, it should be a collective one.
Nope, I do not see edit. This is what I see. Not sure GH supports collective issues, would be great if it did...
@joyeecheung Can you help? I think we would like @StefanStojanovic to have the ability to edit this issue.
@lemire He will have the ability to edit once he becomes a nodejs collaborator (probably next week)
@StefanStojanovic Given @H4ad's answer, I recommend just waiting a week or so. ;-)
https://issues.chromium.org/issues/341803745
fp16 in v8 has been updated to the latest version, I think the blocker on the v8 side can be removed.
If there are no reasons not to, switch to using ClangCL as a default compiler for future releases - Potentially Node.js v23 would be a nice time to do this.
We should probably update this point since V8 announced that they will drop MSVC support in September: https://groups.google.com/g/v8-dev/c/8mSxb2UriSU
Hey everyone, while we're waiting for the ICU fix to get ported to Node, I just wanted to share with you the results of performance benchmarks I ran with ClangCL compiled binaries compared to MSVS ones (both compiled and ran locally). I used 10 runs to limit the execution to roughly a weekend. Once we can compile with ClangCL in CI I will use one of the CI machines to run even more benchmarks there.
Description
Chrome and Firefox are built with Clang under Windows.
@targos made it possible to build Node.js using clang under Windows, see https://github.com/nodejs/node/pull/35433
At least in some tests, this seems to result in better performance:
It is only preliminary, but it is not very difficult to conduct a full examination. There are some maintenance benefits to switching to LLVM under Windows as well. I stress that Node works right now under Windows when compiled with LLVM (credit to @targos).
There is at least one minor issue with ICU: https://github.com/nodejs/node/issues/34201 A tiny patch might be required. I actually expect that it might be the only problem.
I am opening this issue following a request by @mcollina
Further reading: Should Node.js be built with ClangCL under Windows?
Checklist:
vcbuild.bat
to pick from MSVC and CLangCL - Landed in https://github.com/nodejs/node/pull/52870gyp-next
to enable setting language standard keys in msvs_settings - Landed upstream in https://github.com/nodejs/gyp-next/pull/252, will eventually get updated in the main projectccache
or similar tools with ClangCL.