Skip to content

Use the mswin master build from cache.ruby-lang.org - #971

Open
hsbt wants to merge 2 commits into
masterfrom
claude/mswin-build-binaries-53f9a3
Open

hsbt wants to merge 2 commits into
masterfrom
claude/mswin-build-binaries-53f9a3

Conversation

@hsbt

@hsbt hsbt commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

ruby-version: mswin installs the mswin build of ruby-loco, which has not been updated since 2026-10-14 (see #972). The stale build already gets in the way: rb_len_t landed in master in November, and nobu's PRs updating ruby/openssl, ruby/date and ruby/zlib for it cannot be tested on mswin, because their CI still gets the October build.

This PR keeps mswin as the master build and only changes where it comes from: the daily builds at https://cache.ruby-lang.org/pub/ruby/binaries/mswin64/, which I maintain as the official mswin builds of https://bugs.ruby-lang.org/issues/22180. The latest one is picked from index.json at runtime, and arm64 is available too. As larskanis noted in #972, mswin has always been a development build, so the switch needs no deprecation period. The download token is now sent only to github.com, so it does not reach cache.ruby-lang.org.

Release versions such as mswin-4.0 are left for a separate PR.

Generated with Claude Code

@hsbt
hsbt force-pushed the claude/mswin-build-binaries-53f9a3 branch from 423acc9 to db08eaf Compare November 11, 2026 04:24
@ntkme

ntkme commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator

I wonder if it will be better to make a breaking change and have mswin points to latest stable release just like ruby points to latest stable release if we are adding mswin-head.

@hsbt

hsbt commented Nov 11, 2026

Copy link
Copy Markdown
Member Author

I agree. As it is a breaking change, I'd like to hear from @eregon before changing it in this PR.

Comment thread generate-windows-versions.rb Resolved
Comment thread generate-windows-versions.rb Resolved
Comment thread windows.js Resolved
hsbt added a commit that referenced this pull request Nov 11, 2026
A missing bundle now fails the setup, so it is reported there rather than as a certificate error later. The bundle is found on every runner image, windows-11-arm included.

#971 (comment)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ntkme
ntkme requested a review from eregon November 12, 2026 18:17
Comment thread common.js Outdated

export function isBundler1Default(engine, rubyVersion) {
if (engine === 'ruby') {
if (isCRuby(engine)) {

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 is quite error-prone as engine === 'ruby' has always been used and might be in the future.
Not sure what's a good solution though.

@ntkme ntkme Nov 13, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Another approach I can think of that is potentially less error-prone is to make this more object oriented. E.g. introduce a class RubyVersion. If we only pass the object around, and only call the instance method provided by the class, so there is less chance to have errors?

class RubyVersion {
  constructor(rubyVersion) {
    ...
  }
  get engine() {
    ...
  }
  get isCRuby() {
    ...
  }
  get version() {
    ...
  }
  get floatVersion() {
    ...
  }
}

@eregon

eregon commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

I'll think a bit about this.

I agree if we add those names that it would be natural for mswin to be the last release (because mswin becomes an engine, it was a version before).
It's not great that we'd change the meaning of mswin though, both in what version it resolves though and where it pulls builds from, users might not expect that.
There are rather few public usages.

I would like to know more about the longer-term plans for those builds.
For example it seems https://www.ruby-lang.org/en/documentation/installation/ doesn't mention them.
Is the goal they become the recommended way to install on Windows?
To always keep 2 options with RubyInstaller & these builds?
What would be the advantages of using these builds over RubyInstaller which is the best-established builds on Windows?

I'm unsure it's worth having 2 variants of builds on Windows.

Comment thread README.md Outdated
| ----------- | -------- |
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 4.1.0-preview1, head, debug, mingw, mswin, ucrt |
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 4.1.0-preview1, head, debug, mingw, ucrt |
| `mswin` | 3.4.11 - 4.0.9, head (Windows only) |

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.

mswin isn't really an interpreter so this reads a bit strange.

@eregon

eregon commented Nov 13, 2026

Copy link
Copy Markdown
Member

Relevant ticket: https://bugs.ruby-lang.org/issues/22180

hsbt and others added 2 commits November 16, 2026 05:01
The mswin builds are downloaded from cache.ruby-lang.org, which does not take the token.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The mswin build of ruby-loco has not been updated since 2026-10-14. The builds at cache.ruby-lang.org are published daily under dated names for x64 and arm64, so the latest one is picked from index.json. Their OpenSSL looks for certificates in a directory that does not exist on runners, so SSL_CERT_FILE points at the bundle of Git for Windows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hsbt
hsbt force-pushed the claude/mswin-build-binaries-53f9a3 branch from 0b0e3f0 to 56f33e1 Compare November 15, 2026 20:14
@hsbt hsbt changed the title Add mswin engine with builds from cache.ruby-lang.org Use the mswin master build from cache.ruby-lang.org Nov 15, 2026
@hsbt

hsbt commented Nov 15, 2026

Copy link
Copy Markdown
Member Author

I narrowed this PR to switching where mswin comes from, since it is stuck on the 2026-10-14 master and blocks testing the rb_len_t changes on mswin. It leaves mingw, ucrt and the future of ruby-loco in #972 untouched, and release versions are no longer part of it.

@hsbt
hsbt requested review from larskanis and ntkme November 15, 2026 20:21
@hsbt

hsbt commented Nov 15, 2026

Copy link
Copy Markdown
Member Author

@ntkme Thanks for the commits you pushed here. They are kept on a branch for the follow-up PR with the release versions, where I'll also consider your RubyVersion idea.

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.

3 participants