Project

General

Profile

Actions

Feature #20563

closed

Drop support for old Windows

Added by nobu (Nobuyoshi Nakada) 7 months ago. Updated 5 months ago.

Status:
Closed
Target version:
-
[ruby-core:118237]

Description

This is the table of APIs that we are calling dynamically, and the available Windows versions.

DLL API Client Server
iphlpapi ConvertInterfaceGuidToLuid Vista 2008
iphlpapi ConvertInterfaceLuidToNameA Vista 2008
kernel32 CreateSymbolicLinkW Vista 2008
kernel32 GetFileInformationByHandleEx Vista 2008
kernel32 GetFinalPathNameByHandleW Vista 2008
kernel32 SetFileInformationByHandle Vista 2008
shell32 SHGetPathFromIDListEx Vista 2008
ws2_32 inet_ntop Vista 2008
ws2_32 inet_pton Vista 2008
kernel32 GetSystemTimePreciseAsFileTime 8 2012
kernel32 SetThreadDescription 10 2016

However, already random.c directly uses BCryptGenRandom that is available since Windows Vista/Server 2008.

So I propose explicitly dropping support for Windows older than Vista/2008 8/Server 2012.
https://github.com/ruby/ruby/pull/11279

Update: added iphlpapi APIs.

Actions #1

Updated by jeremyevans0 (Jeremy Evans) 6 months ago

  • Tracker changed from Bug to Feature
  • Backport deleted (3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN)

Updated by hsbt (Hiroshi SHIBATA) 5 months ago

  • Status changed from Assigned to Closed

@usa (Usaku NAKAMURA) said "Windows Server 2016 is already EOL, we can drop them".

I also agreed to drop Windows Server 2008, 2012 and 2016

Updated by jeremyevans0 (Jeremy Evans) 5 months ago

hsbt (Hiroshi SHIBATA) wrote in #note-2:

@usa (Usaku NAKAMURA) said "Windows Server 2016 is already EOL, we can drop them".

I also agreed to drop Windows Server 2008, 2012 and 2016

Windows Server 2016 is not yet EOL, the EOL date is January 12, 2027: https://learn.microsoft.com/en-us/lifecycle/products/windows-server-2016

Updated by nobu (Nobuyoshi Nakada) 5 months ago

It seems that the import library in VisualStudio 2015 is missing the symbol that was introduced in Windows Server 2016.

win32.obj : error LNK2019: unresolved external symbol __imp_SetThreadDescription referenced in function rb_w32_set_thread_description
miniruby.exe : fatal error LNK1120: 1 unresolved externals

Updated by nobu (Nobuyoshi Nakada) 5 months ago

jeremyevans0 (Jeremy Evans) wrote in #note-3:

Windows Server 2016 is not yet EOL, the EOL date is January 12, 2027: https://learn.microsoft.com/en-us/lifecycle/products/windows-server-2016

It looks like "Extended Security Update" of Windows Server 2012 won't be EOL until October 13, 2026 at least either.
https://learn.microsoft.com/en-us/lifecycle/products/windows-server-2012#releases

"Extended Security Update" of Windows Server 2008 appears to have reached EOL this year.
https://learn.microsoft.com/en-us/lifecycle/products/windows-server-2008#releases

Actions #6

Updated by nobu (Nobuyoshi Nakada) 5 months ago

  • Description updated (diff)
Actions #7

Updated by nobu (Nobuyoshi Nakada) 5 months ago

  • Description updated (diff)
Actions #8

Updated by nobu (Nobuyoshi Nakada) 5 months ago

  • Status changed from Closed to Open

Updated by hsbt (Hiroshi SHIBATA) 5 months ago

Thanks @jeremyevans0 (Jeremy Evans) , we can drop Windows Server 2008 and 2012 at least.

FYI: There is no CI and development environment of Windows Server 2016 today for us. GitHub Actions has only Windows 2019 and 2022 and I only have Windows 11.

Actions #10

Updated by nobu (Nobuyoshi Nakada) 5 months ago

  • Status changed from Open to Closed

Applied in changeset git|7ef8051cbbb7194a8899a3966130af2bc09fc896.


[Feature #20563] Drop support for Windows older than Vista/2008

Directly call APIs available on Windows Vista/Server 2008 and later.

Actions

Also available in: Atom PDF

Like2
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0