Skip to content

Conversation

@ShortDevelopment
Copy link
Contributor

@ShortDevelopment ShortDevelopment commented Dec 3, 2025

windows-2019 actions are unsupported as of 30.06.2025.

This PR updates the ci-config to run on the supported versions of the windows runner:

  • windows-2022windows-2025
  • windows-2019windows-2022

💥 Breaking changes

  • The default CC configuration on windows used the WinGlob api.
    This config is broken on recent versions of Windows 11 as CC does not initialize WinRT using RoInitialize to allow for some optimizations.
  • CC now uses the version of libICU that is shipped with Windows by default
    This removes compat of the default config with all windows versions < Version 1903 (May 2019 Update)
    Should be fine as Windows 10 is out-of-support anyway...

🧪 Tests


See actions/runner-images#12045
Fixes #7045
Fixes #4490

@ShortDevelopment ShortDevelopment force-pushed the ci/use-windows-2025/7045 branch from acc22ee to 22393f5 Compare December 3, 2025 23:36
@rhuanjl
Copy link
Collaborator

rhuanjl commented Dec 16, 2025

So, the Windows globalisation implementation doesn't work on latest windows AND the ICU alternative fails too, weirdly the test runner seems to be crashing out after one of the fails rather than finishing and saying how many tests failed.... that is awkward.

A couple of test fails look like things that are may be fairly easily fixable e.g. ICU version mismatches to amend tests for or inconsistent conditions in the test suite that expect windows to not be ICU etc. Hopefully it's not overall too big a job but I have no setup I can work on this on.

@ShortDevelopment
Copy link
Contributor Author

I'll look into this in the next view weeks

@rhuanjl
Copy link
Collaborator

rhuanjl commented Jan 8, 2026

The windows-2019 test runners are now disabled.... So all CI runs now fail.

@ShortDevelopment ShortDevelopment force-pushed the ci/use-windows-2025/7045 branch from efab8ed to 4135302 Compare January 8, 2026 22:05
<BuildChakraICUData Condition="'$(BuildChakraICUData)'=='' AND ('$(ChakraICU)'=='static' OR '$(ChakraICU)'=='shared')">true</BuildChakraICUData>

<IcuLibraryDependencies Condition="'$(ChakraICU)'=='windows'">icuuc.lib;icuin.lib</IcuLibraryDependencies>
<IcuLibraryDependencies Condition="'$(ChakraICU)'=='windows'">icu.lib</IcuLibraryDependencies>
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copy link
Collaborator

Choose a reason for hiding this comment

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

Would it be possible to do version detection and build with the older libs if someone is building on older windows? I know we can't test it but may be helpful to someone.

"constructor": "function <large string>",
"resolvedOptions": "function <large string>",
"compare": "function <large string>"
"compare": "Error <large string>"
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not sure why these results changed...

Copy link
Collaborator

Choose a reason for hiding this comment

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

Are we running this on linux/macOS as well?

I.e. is the windows change bringing windows in line with the other platforms?

@ShortDevelopment ShortDevelopment force-pushed the ci/use-windows-2025/7045 branch from 4135302 to 18eaa7e Compare January 8, 2026 22:30
@ShortDevelopment ShortDevelopment force-pushed the ci/use-windows-2025/7045 branch from a240230 to a931ead Compare January 8, 2026 23:21
@ShortDevelopment ShortDevelopment marked this pull request as ready for review January 9, 2026 00:33
@rhuanjl
Copy link
Collaborator

rhuanjl commented Jan 9, 2026

@ppenzin What do you think? This fixes INTL on windows newer than the May 2019 Update but breaks it on older versions - though the key change is just build config we could perhaps document how to build the older version?

Copy link
Collaborator

@rhuanjl rhuanjl left a comment

Choose a reason for hiding this comment

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

Thank you for the work on this. Hoping we'll merge it within a week though I have a few questions - see comments.

"constructor": "function <large string>",
"resolvedOptions": "function <large string>",
"compare": "function <large string>"
"compare": "Error <large string>"
Copy link
Collaborator

Choose a reason for hiding this comment

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

Are we running this on linux/macOS as well?

I.e. is the windows change bringing windows in line with the other platforms?

equal("de-DE-u-co-kn", "de-DE-u-co-yes-kn-true", gcl("de-de-u-kn-co")[0]);
equal("de-DE-u-co-phonebk-kn", "de-DE-u-co-phonebk-kn-true", gcl("de-de-u-kn-co-phonebk")[0]);
equal("de-DE-u-co-phonebk-kn-yes", "de-DE-u-co-phonebk-kn-true", gcl("de-DE-u-kn-yes-co-phonebk")[0]);
if (WScript.Platform.ICU_VERSION < 62) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why are we only testing this on old versions of ICU? Is this behaviour wrong or broken on new ICU?

Same point below.

"functionCallsReturn": {
"[get format returned]": "function <large string>",
"[Intl.DateTimeFormat.prototype.format returned]": "string ‎2‎/‎1‎/‎2000"
"[Intl.DateTimeFormat.prototype.format returned]": "string 2/1/2000"
Copy link
Collaborator

Choose a reason for hiding this comment

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

What has changed here?

if (NO_ICU)
set(TEST_ICU --not-tag exclude_noicu)
elseif (NOT EMBED_ICU)
set(TEST_ICU --not-tag exclude_icu62AndAboveTestFailures)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Have you removed all uses of this flag?

<BuildChakraICUData Condition="'$(BuildChakraICUData)'=='' AND ('$(ChakraICU)'=='static' OR '$(ChakraICU)'=='shared')">true</BuildChakraICUData>

<IcuLibraryDependencies Condition="'$(ChakraICU)'=='windows'">icuuc.lib;icuin.lib</IcuLibraryDependencies>
<IcuLibraryDependencies Condition="'$(ChakraICU)'=='windows'">icu.lib</IcuLibraryDependencies>
Copy link
Collaborator

Choose a reason for hiding this comment

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

Would it be possible to do version detection and build with the older libs if someone is building on older windows? I know we can't test it but may be helpful to someone.

}

#if defined(ICU_VERSION) && ICU_VERSION >= 61
#if !defined(ICU_VERSION) || ICU_VERSION >= 61
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is this condition ever going to be false now?

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.

windows-2019 deprecated Intl: platform.normalizeLanguageTag does not correctly handle valueless unicode extensions

2 participants