Issue #17845 has been updated by MSP-Greg (Greg L).


GitHub Actions has added a Windows-2022 platform, and it only has MSYS2 packages installed, which provide most of the bash shell functionality.  The MSYS2 packages do not include the MinGW build tool packages.  This will require changes to ruby/setup-ruby to support the platform.

Rather than having every Windows Actions CI job pull build tool packages from the MSYS2 site, the idea of running an Actions CRON job (maybe once or twice daily) in another repo to gather the build tools, and package them in a zip (7z) file as a release.  ruby/setup-ruby would download the appropriate file (mingw64 or ucrt64) and install the tools, which provides much faster CI.  Personally, I think packaging all the tools needed to built Ruby would be best, and would be similar to Ubuntu & macOS.  This install concept was actually used in Actions before MSYS2 was added to the images.

This would also mean that MSP-Greg/setup-ruby-pkgs wouldn't be needed for updates to build tools, as it's currently used for in many repos.

I'm mentioning this as the work needed to support Windows-2022 in Actions is extensive, and moving forward with Ruby ucrt64 builds would be helpful so that the Windows-2022 support could be done in one pass...

----------------------------------------
Feature #17845: Windows Ruby - ucrt build?
https://bugs.ruby-lang.org/issues/17845#change-93588

* Author: MSP-Greg (Greg L)
* Status: Open
* Priority: Normal
* Target version: 3.1
----------------------------------------
Currently, Windows Ruby is normally compiled two ways.

The first, mswin, is compiled using Microsoft's current Visual C compiler, and links to the universal runtime (ucrt).

The second, mingw, is compiled using MinGW gcc.  This links to msvcrt, an older version of Microsoft's Visual C runtime.

Previously, all the MSYS2 MinGW packages linked to msvcrt.  The MSYS2 project is now releasing build tools and packages linking to ucrt.

MSYS2 has provided ruby packages, and GitHub user @Biswa96 contributed https://github.com/msys2/MINGW-packages/pull/8518, allowing Ruby to compile with ucrt.

I tried the patch with ruby-loco, and it builds.  There are some test issues, haven't had a chance to look at them yet.

Normally, using exe/dll/so files together that use different versions of the runtime is not a good idea.  Building extension gems with ucrt may provide gems that can be used with mswin, but can't be compiled due to issues with Visual C (vs gcc).  Also, packages from the vcpkg project may be compatible with Ruby ucrt.

The reason for this post is that Windows Ruby built with ucrt is essentially another platform, but the build 'looks like' a mingw build.

This is really a third platform choice.  What should it be called? Things like `CONFIG['RUBY_SO_NAME']`, `RUBY_PLATFORM`, etc?

---Files--------------------------------
ruby-mingw32-ucrt.patch (622 Bytes)
ruby-configure-mingw32-ucrt.patch (687 Bytes)
ruby-configure-coroutine-mingw32.patch (351 Bytes)
ruby-i386-mingw32-ucrt-undef.patch (398 Bytes)
ruby-date-mingw32-ucrt-timezone.patch (333 Bytes)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>