microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.42k stars 28.62k forks source link

Extensions: Distribute ARM64 binaries #98818

Closed joaomoreno closed 4 years ago

joaomoreno commented 4 years ago

Related to: https://github.com/microsoft/vscode/issues/98587

Hi extension authors! πŸ‘‹ This issue's purposed is to reach out to extensions which ship native node modules and let you know that we'll start shipping Code on Windows on ARM for Insiders now and Stable later.

Even though extensions can keep having native x86 *.node dependencies, it is ideal that you'd ship ARM dependencies instead. This can easily be achieved by running npm install with an environment variable npm_config_arch=arm64, Visual Studio should be able to handle the recompilation for you.


Here are top extensions which are known to possibly download native node modules at runtime:

Extension Contacts Issues
C++ @sean-mcmanus
C# @gregg-miskelly https://github.com/OmniSharp/omnisharp-vscode/issues/3006
LiveShare @lostintangent

Here are the top 1000 extensions in the Marketplace which include substantial native node modules:

Extension Dependencies Contacts
Arduino serialport, node-usb-native, usb-detection @testforstephen
Spell Right spellchecker-darwin-6.0.9-x64.node, spellchecker-darwin-7.1.7-x64.node, spellchecker-deb-6.0.9-ia32.node, spellchecker-deb-6.0.9-x64.node, spellchecker-deb-7.1.7-ia32.node, spellchecker-deb-7.1.7-x64.node, spellchecker-rpm-6.0.9-ia32.node, spellchecker-rpm-6.0.9-x64.node, spellchecker-rpm-7.1.7-ia32.node, spellchecker-rpm-7.1.7-x64.node, spellchecker-win32-6.0.9-ia32.node, spellchecker-win32-6.0.9-x64.node, spellchecker-win32-7.1.7-ia32.node, spellchecker-win32-7.1.7-x64.node @bartosz-antosik
Cloud Code pty.node, conpty_console_list.node, conpty.node @kschaab
luaide darwin_x64_69.node, darwin_x64_73.node, darwin_x64_75.node, linux_x64_69.node, linux_x64_73.node, linux_x64_75.node, win32_ia32_69.node, win32_ia32_73.node, win32_ia32_75.node, win32_x64_69.node, win32_x64_73.node, win32_x64_75.node @kangping
Azure IoT Device Workbench keytar, node-usb-native, serialport, usb-detection @chagong
ES6 Mocha Snippets gcsignals.node, keytar.node, is-elevated.node, keymapping.node, watchdog.node, pty.node, onig_scanner.node, spdlog.node, fse.node, nsfw.node, vsda.node @spoonscen

We would appreciate if you could let us know if you have addressed this and whether you hit any snags. If you end up creating an issue on your issue tracker, also let us know so we track it too. Thanks! πŸ™

gregg-miskelly commented 4 years ago

@joaomoreno https://github.com/OmniSharp/omnisharp-vscode/issues/3006 can be used to track the C# extension.

gregg-miskelly commented 4 years ago

I should also add - there is not currently an ARM64 .NET Core SDK Installer. I believe https://github.com/dotnet/core/issues/3765 tracks that. Without that, the experience will be a bit clunky.

sean-mcmanus commented 4 years ago

Linux ARM/ARM64 support are targets for the next release of our C/C++ extension: https://github.com/microsoft/vscode-cpptools/issues/429, https://github.com/microsoft/vscode-cpptools/issues/2506 ; however, we've only seen around 1% of the feedback for ARM being for Windows (Surface Pro X), with 99% of the requests (seemingly) being for Linux, so we were not planning to do any work for Windows ARM -- but now it sounds like we should. I've only started preliminary investigation, so not sure how much time it will actually take to finish yet for Linux or Windows ARM (hopefully in June), and the debugger component is being tracked separately. Are there any plans for VS Code Linux ARM support (https://github.com/microsoft/vscode/issues/6442)? Looks like that's only shipping in the alternate headmelted/vscodium distros that don't support the remote extension or our C/C++ debugging experience (which is restricted to VS Code).

UPDATE: I was confused about local versus remote in regards to VS Code Linux ARM support (i.e. VS Code on x64 remoting to Linux ARM is supported), so local Linux ARM support doesn't matter as much.

testforstephen commented 4 years ago

@dilin-MS @dooriya are owning vscode-arduino extension now, i will invite them to have comments.

dilin-MS commented 4 years ago

Thanks for letting us know! Arduino and workbench has no plan supporting Windows on ARM currently. I set up issue for Arduino and workbench for better tracking the feature in the future. Thanks a lot!

rossburton commented 4 years ago

(i.e. VS Code on x64 remoting to Linux ARM is supported)

Is this in a development branch or something? My VS Code 1.46.0 says "unsupported architecture arm64" when I use a macOS client and remote ssh to a Linux/arm64 box.

sean-mcmanus commented 4 years ago

@rossburton It's available with the VS Code Insiders build, see https://code.visualstudio.com/updates/v1_46#_windows-arm64-insiders , https://code.visualstudio.com/insiders/

rossburton commented 4 years ago

That says arm64 on Windows, whereas I care about Arm64 on Linux for extensions. How I use it is macos for the actual UI, connecting to a remote linux/arm64 server.

sean-mcmanus commented 4 years ago

@rossburton Oops, sorry for my confusion. What extension is giving the "unsupported architecture" message? Our C/C++ extension is working on remote arm/arm64 support for Linux, so if VS Code itself is giving that error, then that would be blocking for us.

rossburton commented 4 years ago

It appears to be the C/C++ extension.

sean-mcmanus commented 4 years ago

@rossburton Oh, your description threw me off -- we show "Architecture is not supported" (or a translated version of that). We're tracking that with https://github.com/microsoft/vscode-cpptools/issues/429 and https://github.com/microsoft/vscode-cpptools/issues/2506 (we're working on ARM first, followed by ARM64).

joaomoreno commented 4 years ago

Closing this on our part, since there is no action to do for us. Issue will remain open for discussions.