[ruby-core:118237] [Ruby master Bug#20563] Drop support for old Windows

Issue #20563 has been reported by nobu (Nobuyoshi Nakada). ---------------------------------------- Bug #20563: Drop support for old Windows https://bugs.ruby-lang.org/issues/20563 * Author: nobu (Nobuyoshi Nakada) * Status: Assigned * Assignee: usa (Usaku NAKAMURA) * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- This is the table of APIs that we are calling dynamically, and the available Windows versions. DLL | API | Client | Server | ---------|--------------------------------|--------|--------| 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. -- https://bugs.ruby-lang.org/

Issue #20563 has been updated by hsbt (Hiroshi SHIBATA). Status changed from Assigned to Closed @usa said "Windows Server 2016 is already EOL, we can drop them". I also agreed to drop Windows Server 2008, 2012 and 2016 ---------------------------------------- Feature #20563: Drop support for old Windows https://bugs.ruby-lang.org/issues/20563#change-109271 * Author: nobu (Nobuyoshi Nakada) * Status: Closed * Assignee: usa (Usaku NAKAMURA) ---------------------------------------- This is the table of APIs that we are calling dynamically, and the available Windows versions. DLL | API | Client | Server | ---------|--------------------------------|--------|--------| 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. -- https://bugs.ruby-lang.org/

Issue #20563 has been updated by jeremyevans0 (Jeremy Evans). hsbt (Hiroshi SHIBATA) wrote in #note-2:
@usa 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 ---------------------------------------- Feature #20563: Drop support for old Windows https://bugs.ruby-lang.org/issues/20563#change-109283 * Author: nobu (Nobuyoshi Nakada) * Status: Closed * Assignee: usa (Usaku NAKAMURA) ---------------------------------------- This is the table of APIs that we are calling dynamically, and the available Windows versions. DLL | API | Client | Server | ---------|--------------------------------|--------|--------| 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. -- https://bugs.ruby-lang.org/

Issue #20563 has been updated by nobu (Nobuyoshi Nakada). 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 ``` ---------------------------------------- Feature #20563: Drop support for old Windows https://bugs.ruby-lang.org/issues/20563#change-109287 * Author: nobu (Nobuyoshi Nakada) * Status: Closed * Assignee: usa (Usaku NAKAMURA) ---------------------------------------- This is the table of APIs that we are calling dynamically, and the available Windows versions. DLL | API | Client | Server | ---------|--------------------------------|--------|--------| 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. -- https://bugs.ruby-lang.org/

Issue #20563 has been updated by nobu (Nobuyoshi Nakada). 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#rel... "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#rel... ---------------------------------------- Feature #20563: Drop support for old Windows https://bugs.ruby-lang.org/issues/20563#change-109288 * Author: nobu (Nobuyoshi Nakada) * Status: Closed * Assignee: usa (Usaku NAKAMURA) ---------------------------------------- This is the table of APIs that we are calling dynamically, and the available Windows versions. DLL | API | Client | Server | ---------|--------------------------------|--------|--------| 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. -- https://bugs.ruby-lang.org/

Issue #20563 has been updated by hsbt (Hiroshi SHIBATA). Thanks @jeremyevans0 , 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. ---------------------------------------- Feature #20563: Drop support for old Windows https://bugs.ruby-lang.org/issues/20563#change-109297 * Author: nobu (Nobuyoshi Nakada) * Status: Open * Assignee: usa (Usaku NAKAMURA) ---------------------------------------- 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. -- https://bugs.ruby-lang.org/
participants (3)
-
hsbt (Hiroshi SHIBATA)
-
jeremyevans0 (Jeremy Evans)
-
nobu (Nobuyoshi Nakada)