Skip to content
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

Can I or will I be able to run VSCode on Surface Pro X? #81854

Closed
vilicvane opened this issue Oct 2, 2019 · 34 comments
Closed

Can I or will I be able to run VSCode on Surface Pro X? #81854

vilicvane opened this issue Oct 2, 2019 · 34 comments
Assignees

Comments

@vilicvane
Copy link

I use Remote SSH most of the time btw.

@FilipeRamalho
Copy link

This seems to be related to #33620
And there is already an x86 version of VSCode which should run on the Surface Pro X through x86 emulation.

@vilicvane
Copy link
Author

vilicvane commented Oct 2, 2019

@FilipeRamalho thanks for the reference. I am a little bit worried about the performance stuff. Can I rely on Surface Pro X to be my daily PC for development?

@FilipeRamalho
Copy link

FilipeRamalho commented Oct 2, 2019

@vilic Without going too much off topic. I am also considering the Pro X and thinking about the use of development tools on it. As it releases on November there is enough time to see if it's possible to use as an daily PC for development.
I can run VS Code on my SP4-m3, so it should work fine on the Pro X, but other tools like VS or IntelliJ may not work fine.
To quote Repo: Code on arm64

Personally speaking, the execution speed is damn fast (!). I tested on a Snapdragon 850 tablet w/ 8 Gigs of memory. The editing is quite smooth and the scrolling does not lag at all. The overall performance is better than a MacBook 12" (Core M/HD 615), even with several(9) extensions enabled.

@magic-k
Copy link

magic-k commented Oct 3, 2019

@vilic, @FilipeRamalho If you build vscode by yourself or get a arm64 version from a third party site you get code-oss. One of the major differences between official builds and open source builds is that the remote extensions refuse to work with oss. So in your case you will have to work in the x86 emulation. Which is probably currently the best way as the c# and c++ extensions also don't work on arm64. Probably a lot other extensions, too. Although i'm from the linux side i'm hoping that with the surface pro x native arm gets a bit of a boost.

@FilipeRamalho
Copy link

FilipeRamalho commented Oct 3, 2019

@magic-k I think that code-oss is a proof of concept, so we know that vs code itself can work on win-arm64.
It would be super cool if the linux community supports the Pro X to boost native ARM.
Don't the c# and c++ extensions work, because they are compiled to x86_64 or is there another reason?

@magic-k
Copy link

magic-k commented Oct 3, 2019

@FilipeRamalho I was more thinking the other way around. Microsoft forces it's own vscode department to support a native arm64 version, forcing the extensions to follow. From there a native linux version is probably only a short step. code-oss is the open source community portion of vscode, which works on all platforms you can compile it for including linux arm64 but without proprietary microsoft parts and native x86 parts.
Yes, these extensions contain native x86 components.

@FilipeRamalho
Copy link

FilipeRamalho commented Oct 3, 2019

@magic-k The VSCode community will hopefully follow and compile/support arm64.

@bvibber
Copy link

bvibber commented Oct 3, 2019

The primary trouble I have using the x86 VS Code build on an ARM64 Win10 laptop is that the remote extensions don't support ARM64 Linux (it seems to download x86-64 code which then fails to run?), so WSL-based development isn't as smooth as it could be.

Performance of the editor is adequate for my purposes.

@FilipeRamalho
Copy link

@Brion The extensions seem to be the primary problem when using VSCode are extensions with X64 code, I'm no that well-versed into Code extensions, but I will try to find out what is been compiled into x64 and if it can be compiled into x86 or even arm64.

@masknu
Copy link

masknu commented Oct 8, 2019

I'm also thinking about using Pro X to develop Golang backend applications.

@magic-k
Copy link

magic-k commented Oct 8, 2019

As long as everything runs in the emulation, it'll probably works. delve, the golang debugger won't work on arm64.

@voronoipotato
Copy link

Firstly the original blocking issue has been resolved, there is official windows ARM64 electron support, hooray 🎉 .

I'm using a surface pro X now, the x86 version of code does work, but there's slightly disruptive visual lag on most actions, though typing seems to be fine. I'm also a mostly remote use person so I'm not dying here but it seems like it should be low hanging fruit.

@headmelted
Copy link
Contributor

I'm happy to try adding this to https://github.com/headmelted/codebuilds now that Electron supports Windows ARM64.

Is there interest in this, given that it's not an official build so you would need to accept that there may be inconsistencies in terms of what's support from an extension perspective.

@voronoipotato
Copy link

Thank you @headmelted !!! I can and will gracefully accept whatever extension challenges may come.

@JimPriestley
Copy link

The primary trouble I have using the x86 VS Code build on an ARM64 Win10 laptop is that the remote extensions don't support ARM64 Linux (it seems to download x86-64 code which then fails to run?), so WSL-based development isn't as smooth as it could be.

Performance of the editor is adequate for my purposes.

This was fixed in the November 2019 1.41 release. The x86 Windows UI will now correctly use the x64 ARM vscode-server in WSL.

@JimPriestley
Copy link

The Surface ProX is a great machine for on the go connectivity, I have a larger machine for work at my desk. I would love to see the UI deployed as ARM64 on Windows. I feel that skipping the x86 emulation would increase performance and potentially decrease Electron's power consumption.

@chrisdias
Copy link
Member

What types of apps do you want to build on the machine? What are the target runtimes (e.g. Node, Go, Rust, Python, etc.). Are there ARM64 versions of those tools? Or, are you primarily doing remote development (e.g. SSH) to another machine?

@JimPriestley
Copy link

JimPriestley commented Dec 17, 2019 via email

@headmelted
Copy link
Contributor

To add to Chris’ point above and pre-empt the next question, some of the blanks in tooling probably can be filled in with emulation - but from experience I’d expect very mixed results, and in any case it could get so messy so quickly that it becomes more hassle than it’s worth for an end user (example: x86 on ARM targeting x64 would be three triplets to track in GCC). Even if the tools you need work in an emulator (which is not guaranteed), performance would likely be very poor.

@voronoipotato
Copy link

voronoipotato commented Dec 18, 2019

It's incumbent on the host to lead the push. If the host doesn't support it there's absolutely no reason for the client to support it. The idea that clients will work to support something that the host doesn't is fantasy. How would you even test it?

@JimPriestley
Copy link

What types of apps do you want to build on the machine? What are the target runtimes (e.g. Node, Go, Rust, Python, etc.). Are there ARM64 versions of those tools? Or, are you primarily doing remote development (e.g. SSH) to another machine?

arm64 Linux versions of DotNet 3.1, AZCLI, Docker-ce and Python do exist, and work well in the WSL Remoting on the Surface ProX. As stated above, running VSCode Shell on ARM64 on Windows would be a first step in supporting Windows on ARM as a dev work environment, and is a pre-requisite for any plugin authors then also supporting Win on ARM natively.

Edge on Chromium for WinARM is now in Dev, and is supposed to release on January 15th, according to news stories.

Other threads indicate there is now an Electron release that supports Win on ARM64.

@ryan-allen
Copy link

The minute there is an official build for ARM, I'm buying a Surface Pro X.

The SSH and WSL remoting is awesome, I can't wait to be able to use it as a development machine!

@JimPriestley
Copy link

JimPriestley commented Feb 7, 2020 via email

@ryan-allen
Copy link

@JimPriestley Oh... neat! Thanks for the insight... I think I'm brave enough to make the jump now! :)

@soapdog
Copy link

soapdog commented Feb 10, 2020

bump!

It is good that we can run the x86-32 version of VSCode on the Surface Pro X but if MS is serious about Windows on ARM then it needs to step up its support for development. One of the main reasons there are so few native arm64 apps for Windows is that there is no support for developing on arm64 machines. Everyone that spent ~2k on Surface Pro X are running win32 32bits emulated software or remoting into WSL. I've posted about this in the past.

@ryan-allen
Copy link

@soapdog i've jumped onto the arm bandwagon with the galaxy book s, the battery life is awesome, and the LTE well and truly gives proper portability, it's a trade off but it's worth it if you can manage it.

i'm using x86 emulation with vscode, and using remote ssh to work with asp.net core on x64. it works well enough for day to day, and edge/firefox arm builds work really really well.

i was able to run an unofficial code oss build and it's lighting quick, but the extensions don't work yet.

wsl works great too, but i'm opting for using a slightly beefier virtual server instead via ssh remote.

once there's a arm64 build with ssh remote the experience will be wonderful, hopefully it's not too far off :)

@bkniffler
Copy link

bkniffler commented Mar 22, 2020

@ryan-allen @soapdog After another month, how happy are you? Could you give a quick update about your current setup and satisfaction with the performance? I'd be very happy to hear back, currently looking into ARM Windows for nodeJS/vscode. Cheers mates!

@ryan-allen
Copy link

ryan-allen commented Mar 23, 2020

@bkniffler hey bloke! i spent quite a while trying out a number of approaches, and i have settled on the following set up: i'm using https://github.com/cdr/code-server running it on a x64 ubuntu server, i do all development through code-oss running remotely via this project. i use microsoft edge (which is native arm) to run code-server 'as an app' so that it captures key commands that are otherwise captured by the browser. there are features missing (e.g. debugging) because these are only available via vs-code released my msft. i'm using windows terminal preview which also has an arm build, so my day to day feels native and i have 95% of what i need with this setup, though it does require me to have an internet connection in order to work.

it feels native, i use ssh port forwarding to hit local development servers on the virtual server i'm working on day to day. i'm very happy!

vscode running on the galaxy book s seemed sluggish due to is being 32bit emulated (this did work though, it just didn't feel 'fast').

one day if we get vscode arm and remote ssh it's going to be a winner. the battery life is unbelievable and built in LTE is amazing :)

you can try out this hackjob setup with code-server without having to buy an arm laptop to see if it'll suffice!

edit: as an aside, i'm using many apps through the browser now: whatsapp, spotify, excel, they run really well. firefox also has an arm build that works quite well, but i found edge to be just a touch more responsive so i've switched to using that.

@bkniffler
Copy link

@ryan-allen Thanks for the extensive feedback lad, it really seems incredible what Microsoft accomplished with the latest edge browser. I'm currently using an iPad with raspberry pi4 and code server, so I'm kinda familiar with the setup, but iPad just doesn't (yet?) feel like a real computer. Just to be sure, your x64 ubuntu server is physically on a different device? If yes, was it due to setup difficulty or performance benefits of a real server?

@davide-rota
Copy link

@bkniffler Hi, there's also Visual Studio Online that offers an alternative to code-server (now with docker support it's not bad)!

@ryan-allen
Copy link

@bkniffler i'm using a classic vps type thing to run code-server, and to develop on (vultr, ssd, cheaper and faster than aws/etc), it feels pretty much native as they have sydney edge locations.

i have been working via remote-ssh for a couple of years as it allows me to work from different computers and have the same environment set up, i very much love remote-ssh!

i'm hoping visual studio online will allow remote-ssh to custom servers, @davide-rota does the docker support allow this yet? :)

@davide-rota
Copy link

davide-rota commented Mar 24, 2020

@bkniffler you can have remote ssh and remote docker support to your own linux server right now with vscode remote extensions ( https://code.visualstudio.com/docs/remote/remote-overview ).
It becomes a bit more confusing when you want to combine remote docker+ssh as you could have remote docker over ssh or remote ssh and then use the docker extension work remotely.
Another complex scenario that works is to have docker-compose build remotely multiple containers and then attach vscode to the containers to develop and debug.
VS Online adds a managed/hosted environment and a vscode that can be used in the browser.
Also custom containers on vsonline are now supported

@soapdog
Copy link

soapdog commented Mar 24, 2020

@bkniffler I'm quite happy with the surface pro x but as I blogged in the past, I think Microsoft needs to step up its support for developers. There is basically no support for "dynamic languages" running native on Windows 10 on ARM, there is no released NodeJS aarch64 for Windows for example. There is an unofficial release but good luck using it and compiling something from source using node-gyp. Everything is almost in the right position for it to just work but it is not there yet. I'm using VSCode compiled for 32bits and I really wish I was able to run Electron apps as native aarch64 on this machine. Not because of the performance which is OK but because of battery life and making the Surface Pro X live to its full potential. I don't want to hijack or divert this issue, so focusing on VSCode, there are a gazilion developers out there that would jump on always-connected PCs if they'd run their dev setups, but the tools are not there yet.

@joaomoreno
Copy link
Member

#33620

@github-actions github-actions bot locked and limited conversation to collaborators May 29, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests