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
Support ARM64 build for Windows #33620
Comments
Electron would have to support ARM binaries on Windows first, which it currently does not. |
Now that Microsoft released the ARM64 compilers in the SDK we can move forward on this. |
For reference, you should follow along with the Electron issue electron/electron#9456 as well as the upstream Chromium issue https://bugs.chromium.org/p/chromium/issues/detail?id=893460 as these are both blockers for VSCode to be able to run on Windows for ARM64.. |
As an update, somebody successfully built VSCode for Windows ARM64. |
As I know, electron started to support windows 10 on arm64 in stable version. Is there an official support of vs code? |
@rcjsuen @joaomoreno |
Surface Pro X is released (I'm using it now), is there any timeline for VS Code for Windows Arm64? |
I tracked down their booth and asked them about it at Ignite, they would not give a timeline but basically said that the primary blocker at this point is having the man hours to run the testing to make sure that it works as expected with all of the third party extensions. |
That's a fair concern but I'd rather have vscode with no extensions than no vscode. |
Sure having ARM64 might make current extensions incompatible, but we need native VSCode to kick start native extension development isn't it? |
Just Checking on this, purchased a surface pro X and super excited about vscode on this device but would rather have ARM64 than x86 |
Same is there anything we could do that would help? |
Note that if you have a WSL-based workflow, the remoting server in VS Code Insiders now supports ARM64 Linux. This allows using the official x86 frontend app with ARM64 Linux extensions running in the WSL environment, and works well for my PHP+JS projects for now. However as with a potential ARM64 Windows frontend, not all extensions work yet. I found that the Rust (RLS) and PHP intellisense extensions work ok, while the C/C++ one explicitly fails out saying it's without support for ARM64 Linux. |
How are you testing an arm 64 windows front end? I can use a terminal based workflow if I can use vscode Win Arm 64. |
@brion @voronoipotato How did you even get an ARM64 front end? Teach me |
Surface Pro X, it's pretty great actually. The major hurdle is just the software side, but otherwise it's very good. |
I'm still using the x86 frontend in emulation, so only the extensions inside the WSL Linux sandbox are running natively ARM64 for me. But I've heard some folks have had success manually building the frontend for ARM64? |
https://code.headmelted.com/ aka https://github.com/headmelted/codebuilds Perhaps this is a good starting point. |
+1, I would love to use VSCode on my Surface Pro X |
What Electron do is they run the Azure DevOps device runner in x86 mode - seems to work fine for them and they use that to test the ARM64 binary. |
Thanks for the update. A few questions:
I have a machine. Can we get an officially-built VSCode for ARM64 (even an "alpha"/preview/whatever version) to test too? My machine is from a previous generation (Asus NovaGo, SD835) and I'd like to see that it works there too. (If you have a test suite you'd want me to run I think I could do that too, if you don't have special environment requirements.)
I don't know how this works now, with VSCode being available for Windows, Linux and macOS, but assuming you have some method of specifying platform and extensions bring the appropriate native components for each platform, sounds like all you need to do is to add What's the difference? It's completely expected that certain extensions will only work on certain platforms. A WPF designer will only work on Windows. A Swift extension will work on macOS and Linux, but not Windows. That's fine. I don't think any reasonable person expects all extensions to work on all platforms. I'd be satisfied with extensions with native components that can't run on a certain platform to give an early error before downloading and trying to install. That sounds like something that should already be in place. I don't see why we should wait for extensions X, Y and Z to support ARM64 when other things are already working. |
We don't build the C#, C++, Rust extensions. Our partners do that. Extension authors have to be onboard, otherwise their features will just be broken. This has happened before when releasing the ARM64 remote for Linux. We don't have to wait for that to happen, but we should to a better job at collaborating with them to let them know a torrent of issues is about to fall on top of them. |
@joaomoreno : It would be great if Microsoft could release the Win Arm64 version of VS Code soon. Having it working on Surface Pro X would be the last program I need on this machine to make it 100% usable for my daily work. Pls make it happen soon. Many thanks. |
@joaomoreno To be clear the x86 emulation is good enough their extensions will "work" provided it pulls x86 instead of x64. I agree though that it is up to the extension authors and their community (us) to help update everything for ARM should we need to. |
Clarification, Windows on ARM supports emulating x86_32, but does not support emulating 64 bit x86_64 apps. Native apps are either ARMv8_64 or ARMv7_32 apps, publishing ARM32 is usually unnecessary... unless you're targeting older Raspberry Pi's which don't have the memory to run VS Code properly anyway or Windows RT which is dead. Windows 10 on ARM doesn't come in a 32 bit variant. |
Would it help if a Qemu Windows ARM64 environment was set up to run the tests? |
I wanted to understand how exactly the Electron team did this, and it seems like they literally set up a Surface device (I guess a Surface Pro X) which they use for Azure DevOps. Like @richard-townsend-arm mentioned, they should be running the self-hosted x86 Azure DevOps agent as there's no arm64 version for it, but it works for them apparently. I'm working on adding Windows ARM64 support to GitHub Desktop and wanted to try the same, so I installed the Azure DevOps x86 agent on my Surface Pro X and created an Azure Pipeline. So, the setup is:
This seems to work well. An ARM64 build is created without issues, I only need to make sure that the tests will also pass, but that's unrelated to ARM64 specifically.
That might work, but I expect it to be incredibly slow. Running on a native ARM64 device already timed out after 1hr because the 32-bit emulation on Windows ARM64 slows things down significantly. Also, there's no Windows 10 ARM64 ISO files available via Microsoft's official channels AFAIK, so you'll need to do some magic yourself :) Instructions to create a Windows 10 ARM64 ISO can be found on this page, just ignore the Raspberry Pi-specific bits. |
@dennisameling That is pretty much my plan as well, once we get that Surface Pro X. Glad to know you had success. Good news for this feature item. |
|
Special thanks to @richard-townsend-arm for pushing this forward in #85326 |
@deepak1556 Care to verify this one? |
Sure happy to |
FWIW, perhaps the team at Microsoft can look into Microsoft-made extensions and ARM support... -- e.g. microsoft/python-language-server#2073 |
New devices are coming to market in a couple months. These are ARM64 devices running the Windows 10 OS. Can we get an officially supported build of VS Code that runs native on ARM64?
The text was updated successfully, but these errors were encountered: