From 2d1ace441044a6d77a20d7a443f24da53b72622a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 25 Sep 2026 09:32:46 +0900 Subject: [PATCH 1/2] Etc.uname: Return "ARM64" as the machine on Windows ARM64 GetSystemInfo reports PROCESSOR_ARCHITECTURE_ARM64 there, which fell through to "unknown". Co-Authored-By: Claude Opus 5.5 --- ext/etc/etc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ext/etc/etc.c b/ext/etc/etc.c index 8d50a96..a635e93 100644 --- a/ext/etc/etc.c +++ b/ext/etc/etc.c @@ -847,6 +847,9 @@ etc_uname(VALUE obj) # endif # ifndef PROCESSOR_ARCHITECTURE_INTEL # define PROCESSOR_ARCHITECTURE_INTEL 0 +# endif +# ifndef PROCESSOR_ARCHITECTURE_ARM64 +# define PROCESSOR_ARCHITECTURE_ARM64 12 # endif GetSystemInfo(&s); switch (s.wProcessorArchitecture) { @@ -856,6 +859,9 @@ etc_uname(VALUE obj) case PROCESSOR_ARCHITECTURE_ARM: mach = "ARM"; break; + case PROCESSOR_ARCHITECTURE_ARM64: + mach = "ARM64"; + break; case PROCESSOR_ARCHITECTURE_INTEL: mach = "x86"; break; From 1d39001a0b7aad9185b39be79b00b1dfc5f04ce7 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 25 Sep 2026 09:33:09 +0900 Subject: [PATCH 2/2] Etc.uname: Remove Win32s and Win9x branches GetVersionExW always reports VER_PLATFORM_WIN32_NT, since Windows 9x support had been dropped in 8a02eed723 before Etc.uname was implemented on Windows. Co-Authored-By: Claude Opus 5.5 --- ext/etc/etc.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/ext/etc/etc.c b/ext/etc/etc.c index a635e93..627dc92 100644 --- a/ext/etc/etc.c +++ b/ext/etc/etc.c @@ -813,18 +813,7 @@ etc_uname(VALUE obj) rb_sys_fail("GetVersionEx"); result = rb_hash_new(); - switch (v.dwPlatformId) { - case VER_PLATFORM_WIN32s: - sysname = "Win32s"; - break; - case VER_PLATFORM_WIN32_NT: - sysname = "Windows_NT"; - break; - case VER_PLATFORM_WIN32_WINDOWS: - default: - sysname = "Windows"; - break; - } + sysname = "Windows_NT"; rb_hash_aset(result, SYMBOL_LIT("sysname"), rb_str_new_cstr(sysname)); release = rb_sprintf("%lu.%lu.%lu", v.dwMajorVersion, v.dwMinorVersion, v.dwBuildNumber); rb_hash_aset(result, SYMBOL_LIT("release"), release);