-
Notifications
You must be signed in to change notification settings - Fork 166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Windows #15
Comments
I'm not an expert, but I do use Windows and care about its support. So you can count me in as someone who would be interested in diving deep to figure out a Windows-specific issue. |
I follow clang development quite closely but I haven't actually tried to build node with it yet. I speculate that clang HEAD is compatible enough with MSVC now that a build would need only minor tweaks. The biggest barrier is having to build clang from source. @seishun If you're up for adventure, you could give that a try. |
@bnoordhuis LLVM already provides a binary for Windows, so no need to build it from source. Building node on Windows using clang would certainly be a challenge, but what's the purpose? Surely you're not meaning to drop Visual Studio build support? |
The challenge is that, with C++11 features in V8, the support versions of Visual Studio is limited. Many developers still use older versions of Visual Studio and don't want to upgrade. More still don't even have it installed, and getting it set up properly is pretty awkward for someone not familiar with it. (Needs extra stuff for x64, etc) By building with clang, we don't have to care what version is installed, or that they even have Visual Studio. I believe the need to build from source is just to catch the latest Windows support features. Support for Windows is pretty new--I'm not familiar enough with it to know if current releases lag behind some important features, but it seems like that could be the case. |
Why should we cater to such developers? It's not like they can't use node without building it from source. |
It's native modules where clang is really needed. Some total newbie to node probably isn't going to be building node from source, but there's a good possibility of them trying to install something with npm that has native code in it and it blowing up at them for not having the right Visual Studio with everything in the right place. Presently, native modules are built on the user end, which means a compiler must be available. There has been discussion about npm building and delivering built binaries in the future, but that'd take very significant effort. |
Several reasons:
Apart from IDE support, and assuming good enough ABI compatibility, are there any downsides to moving to clang? |
It's going to improve. VS2015 isn't far away and it's going to get significantly closer to C++11 compliance. Also, which VS bugs and missing C++11 features are you concerned about, besides constexpr and extended sizeof?
Now that's a valid issue. But what prevents addons built with clang from working with node built with VS?
If that does happen then I'll agree with you. But I don't see any reason to drop VS support before V8 does.
I imagine most Windows developers are likely to have VS installed, not so with clang and whatever build system that would be used. Also, the convenience of IDE should not be taken lightly. Personally, I would be quite disappointed if I could no longer use Visual Studio to work with node's code. |
Devs that write native code would probably have VS installed. But there's a huge number of frontend devs, using node for tooling, that don't write native code and thus probably don't have VS installed. There are core devs hacking on node from Windows, so I doubt VS support would ever be removed, it'd just not be the default. Also, I think the intent might be to ship clang, pre-built, alongside node in some installer. So you'd just run the installer and not have to concern yourself with installing a particular version of compiler to get native modules to work. |
Sure, but we're talking about building node itself. Front-end devs are unlikely to want to do that.
Supporting two build systems on Windows sounds like a huge pain.
That would be great. So it boils down to whether we can get clang-built addons to work with VS-built node. |
I've done devel work on windows and would like to help.
I can look into this. Offhand I would guess that insofar as C++11 requires new name mangling, they will be hard to reconcile unless there is explicit collaboration between the compiler author groups. |
@rvagg please count me in for helping / happy to get mentioned anytime I might be of use (My email is [email protected] too). Other thoughts:
|
We'll certainly rope you in for help @springmeyer since you've had so much experience with this, we'd also like to get you involved in #12 when we start thinking about that (perhaps not for a while yet!). VS2015 was next on my list for Windows in the test cluster but I wasn't in a hurry because it's not properly released yet. We're only doing VS2013 at the moment. |
I'm going to tentatively close this now that we have @iojs/platform-windows and are getting close to zero test failures on Windows. @springmeyer Let me know if you're still interested in helping out and I'll add you to the Windows team. |
I'm making an issue here mainly to collect names of people who can legitimately help with making Windows a first-class citizen. It's such a different beast that it really requires people who spend their time in it and understand the ecosystem rather than drop-ins (like me) who make do with their historic knowledge and occasional googling.
Examples of things that we need people for:
The text was updated successfully, but these errors were encountered: