Skip to content

feat: aarch64-mingw-ucrt support - #650

Open
YOU54F wants to merge 1 commit into
sparklemotion:mainfrom
YOU54F:aarch64-mingw-ucrt
Open

feat: aarch64-mingw-ucrt support#650
YOU54F wants to merge 1 commit into
sparklemotion:mainfrom
YOU54F:aarch64-mingw-ucrt

Conversation

@YOU54F

@YOU54F YOU54F commented Oct 29, 2025

Copy link
Copy Markdown

👋🏾

Would be nice to get a precompiled gem for aarch64-mingw-ucrt now that rake-compiler-dock has support

https://github.com/rake-compiler/rake-compiler-dock/releases/tag/v1.10.0

Similar to

sparklemotion/nokogiri#3530

There is an existing PR for the required version of rake-compiler-dock #647

cross compiled with the applied fix on a macos m4 machine, and successfully installed in a windows-11-arm github actions vm and locally running VM with utm/qemu

There are some test failures regarding support for earlier ruby versions. There is only windows on arm support for Ruby 3.4 provided as part of the rubyinstaller toolking.

PS. If there is a better way to solve this, feel free to close this down, or suggest another approach. This worked for me in trying to add windows-11-arm coverage to some tooling which makes our ruby rack app, available via a github action on any supported actions runner, mainly for CI testing on platforms where docker isn't available.

PPS. I assume feat isn't the right classification for this change!

Cheers!

@flavorjones

Copy link
Copy Markdown
Member

Thanks for opening this PR. Until I figure out why CI is failing on windows, I'm hesitant to accept additional platforms. I'm hoping to get a chance to investigate those failures soon, but if you're able to help, please do!

@YOU54F

YOU54F commented Nov 6, 2025

Copy link
Copy Markdown
Author

Sure thing bud, will see if I get it all green, wouldn't want it to be merged without it. 💚

I don't believe arm64 support is avail via ruby installer for 3.1/3.2/3.3.

I know sqlite gems ship with a gem for each supported ruby ABI, would it be okay to have a platform with support for only one ABI (3.4) currently

@YOU54F
YOU54F force-pushed the aarch64-mingw-ucrt branch from bfaa359 to 9475be2 Compare November 13, 2025 21:59
@YOU54F

YOU54F commented Nov 13, 2025

Copy link
Copy Markdown
Author

Should be all green now 💚

https://github.com/YOU54F/sqlite3-ruby/actions/runs/19346654309

Until I figure out why CI is failing on windows, I'm hesitant to accept additional platforms. I'm hoping to get a chance to investigate those failures soon, but if you're able to help, please do!

I think the rake-compiler-dock bump is the reason the existing CI failures on windows are resolved

See PR: #647

@YOU54F
YOU54F force-pushed the aarch64-mingw-ucrt branch from 9475be2 to e9ce2b8 Compare November 13, 2025 22:18

@flavorjones flavorjones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks really good! I just kicked off CI.

Note that I rebased this branch onto latest main.

Comment thread ext/sqlite3/extconf.rb
recipe.patch_files = Dir[File.join(package_root_dir, "patches", "*.patch")].sort
end

# Fix host triplet for Windows ARM64 (native or cross-compilation)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there an upstream fix pending for this? Is it already in a rubygems release (in which case could we instead pin the required version for this architecture)?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good question! i need to check that. it is possible this is already corrected, or the change actually needs proposing. i haven’t dug too far as this was sufficient for my needs.

i’ll report back

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@YOU54F just bumping this thread

javier-sy added a commit to javier-sy/nota-plugin that referenced this pull request Sep 6, 2026
Reported from Windows 11 ARM64 running 1.0.2: CONNECT_TIMEOUT after 30s, and with
the server down `check_setup` could not run either, so every skill that reaches
the knowledge base was dead with no diagnosis anywhere a reader would look.

Two things are missing on that platform and neither is ours to fix. `sqlite3`
publishes no `aarch64-mingw-ucrt` binary and cannot be compiled there — SQLite's
own config.sub rejects the `aarch64-w64-windows-gnu` triplet — and sqlite-vec's
only Windows loadable is x86_64. Adding the platform to the lockfile would change
nothing: there is no gem to resolve.

So the platform is checked before anything is attempted, by one predicate with
two callers: boot.rb, so the server stops instead of spending the connection
window failing to compile SQLite, and the SessionStart hook, because the hook's
output is the only one a reader sees. The message names the way out rather than
only the fact, and `NOTA_RUBY` makes that way out usable: an x64 Ruby under
emulation, chosen for this plugin alone rather than pushed to the front of PATH.

Two things found while reading that report. knowledge.db was being downloaded
inside the 30s connection handshake, which is a timeout risk on any slow
connection anywhere; it now arrives through the hook and through the first tool
call, both of which have room. And a failed `bundle install` reported stderr's
first line, which on that machine was a pacman permissions warning in Spanish
rather than the build failure at the end.

Windows ARM stays unsupported. The sqlite3 side has an open pull request that is
stalled rather than absent (sparklemotion/sqlite3-ruby#650); the sqlite-vec side
has no build and no attempt.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants