workerd icon indicating copy to clipboard operation
workerd copied to clipboard

win32 arm64 Support

Open KimPlaybit opened this issue 1 year ago • 4 comments

What would you like?

Run a web application with Workerd on a computer with Win32-Arm64 OS.

Why is this needed? With Asus recently releasing laptops with Qualcomm CPUs, this will be more and more requested. See The Asus Vivobook S 15.

Other I managed to start my Web app with workerd regardless.

By adding in "win32 arm64 LE": "@cloudflare/workerd-windows-64" in Install.js as a knownPackage. I dont know what side-effects this brings.

KimPlaybit avatar Sep 18 '24 13:09 KimPlaybit

That would be nice. I had to do the same workaround as OP to get my dev env. running.

al-dubois avatar Oct 04 '24 17:10 al-dubois

Hi, I've opened the PR #2997 in order to contribute. Feel free to help me with the configuration of bazel since it's the first time I touch this kind of stuff.

p-romain avatar Oct 24 '24 19:10 p-romain

I dont know what side-effects this brings.

Probably nothing, I think the binary exe run under emulation of x86_64 on the ARM64.

p-romain avatar Oct 24 '24 19:10 p-romain

I was not able to connect to a pg db with workerd for windows x64, under windows arm64. I'm using prisma + hono + wrangler@3 and the request was running indefinitely without error message or timeout. Only solution found was to rollback on wrangler@2. Just for your information if somebody has the same behavior.

p-romain avatar Oct 26 '24 07:10 p-romain

any updates on this ?

rafaelmagalhaes avatar Dec 03 '24 21:12 rafaelmagalhaes

Latest Surface Pro / Laptop line uses Snapdragon X ARM64 processors, continuing the Windows ARM trend. As an owner of one, this would be really convenient. I was intending to evaluate using Durable Objects for a new project, but even the small friction of setting up a WSL environment just to run the tutorial has me putting it off.

a-type avatar Jan 02 '25 17:01 a-type

Hello, any updates on this? I have a Snapdragon X Elite ARM64 laptop and am unable to run wrangler natively and must use WSL.

Badbird5907 avatar Mar 04 '25 15:03 Badbird5907

I recommend anyone watching this, go upstream and follow the roadmap task to add free-tier public Windows ARM64 images to Github Runners. My understanding is that this is blocking Bazel from support, which in turn blocks this project.

https://github.com/github/roadmap/issues/1098

(also related, https://github.com/actions/runner-images/issues/10820)

Best not to bother the Cloudflare folks until the infrastructure exists for them to automate the Win ARM64 target build. It's disappointing, but not entirely surprising, that Microsoft hasn't prioritized shipping these runner images despite pushing ARM so hard in Windows lately.

a-type avatar Mar 04 '25 21:03 a-type

Just in, at least the first upstream prerequisite appears to be unblocked: https://github.com/github/roadmap/issues/1098 (public ARM64 Windows action runners) is now shipped.

Not totally familiar with the chain of events here, but I gather Cloudflare may still have to wait on changes in Bazel to support ARM on Windows. Still, this seemed to be the largest blocker.

a-type avatar Apr 15 '25 17:04 a-type

After trying to track down remaining blockers here, it's not clear what remains to be done. https://github.com/cloudflare/workerd/pull/2997 was an early attempt at Windows ARM support stymied by lack of public Arm64 workers and some kind of Bazel incompatibility, but Bazel seems to offically support Win Arm 64 now and the public workers are launched. I wonder if that same changeset could work now. Can anyone more familiar with the requirements in workerd comment on whose court the ball is in now, so to speak?

a-type avatar Apr 18 '25 18:04 a-type

After trying to track down remaining blockers here, it's not clear what remains to be done. #2997 was an early attempt at Windows ARM support stymied by lack of public Arm64 workers and some kind of Bazel incompatibility, but Bazel seems to offically support Win Arm 64 now and the public workers are launched. I wonder if that same changeset could work now. Can anyone more familiar with the requirements in workerd comment on whose court the ball is in now, so to speak?

Unfortunately this is still not easy to support, even with the arm64 runner being available based on workerd's dependencies. The build uses rules_js and by extension yq to import npm packages, which is not yet available for arm64 Windows (https://github.com/mikefarah/yq/issues/2348). There might be more similar dependency issues, this is just the first error causing the build to fail. I hope that supporting arm64 will become easier as it becomes available for dependencies.

fhanau avatar May 02 '25 04:05 fhanau

Any updates on this? It looks like https://github.com/mikefarah/yq/issues/2348 is resolved, which was the blocker preventing progress on this issue.

ryanlua avatar Sep 30 '25 16:09 ryanlua

Any updates on this? It looks like mikefarah/yq#2348 is resolved, which was the blocker preventing progress on this issue.

Unfortunately this is not a priority for the upcoming quarter. It's good that the yq issue is resolved, but it is likely that there are several other dependencies that do not support arm64 Windows/would require complex workarounds.

fhanau avatar Sep 30 '25 17:09 fhanau

Not sure if it can be useful for anyone: I am using wrangler with npm and installing nodejs for x64 instead of ARM64 fixed the issue. Cloudflare sees it as a normal x64 environment. I do the same with python to fix some dependencies that refuse to work in ARM64 win

kuitog avatar Oct 30 '25 11:10 kuitog

By adding in "win32 arm64 LE": "@cloudflare/workerd-windows-64" in Install.js as a knownPackage. I dont know what side-effects this brings.

Before Officially support, doing this in upstream is beneficial.

Master-Hash avatar Dec 30 '25 11:12 Master-Hash