OpenMPT 1.29 and libopenmpt 0.5 removed platform support

Started by manx, March 01, 2019, 13:58:15

Previous topic - Next topic

manx

OpenMPT 1.29 will remove support for x86 CPUs which do not support the SSE2 instruction set. This change is a consequence of using modern Microsoft Compilers which make it increasingly difficult to even target these CPUs at all.

This removes support, in particular, for the following CPU families:

  • Intel Pentium
  • Intel Pentium MMX
  • Intel Pentium Pro
  • Intel Pentium 2
  • Intel Pentium 3
  • AMD K5
  • AMD K6
  • AMD K6-2
  • AMD K6-3
  • AMD Athlon (K7)
  • AMD Athlon XP
  • Cyrix 6x86MX
  • Cyrix MII
  • VIA Cyrix 3
  • VIA C3
  • Transmeta Crusoe
  • SiS 55x
  • DM&P Vortex 86
  • Cyrix MediaGXm
  • NSC Geode GX1
  • NSC Geode GX2
  • AMD Geode GX
  • AMD Geode NX
  • AMD Geode LX

To the best of our knowledge, we have no known only very few users of OpenMPT 1.28 on any one of these CPUs (according to our statistics).

Also note that none of these CPUs are still supported by any version of Microsoft Windows which is still supported with security patches by Microsoft. Since mid 2018, even Windows 7 security patches require a CPU with SSE2 support. And about half of these CPUs are also unsupported by major Linux distributions.

The minimum required CPUs per manufacturer are:

  • Intel Pentium 4 (released 2000)
  • AMD Athlon 64 (released 2003)
  • VIA C7 (released 2005)
  • Transmeta Efficeon (released 2004)
  • Zhaoxin Kaixian ZX-A (released 2016)




We are furthermore considering removing support for Windows XP, Windows XP x64, and Windows Vista in OpenMPT 1.29 and libopenmpt 0.5, making Windows 7 the minimum required Windows version. By the time OpenMPT 1.29 and libopenmpt 0.5 will be released, Windows XP and Windows Vista will have been 6 and 3 years without security updates, respectively.

We are aware that we have still about 1.5% users on these old Windows versions, however, we may still decide to drop support for these systems now, because tools that we depend on (like the InnoSetup installer that OpenMPT uses) have dropped support already (which would require us to use outdated versions which are no longer supported), and because documentation for these old system has already been removed by Microsoft.




OpenMPT 1.29 and libopenmpt 0.5 has dropped support for the following compilers:

  • Visual Studio 2015
  • GCC 4.8, GCC 4.9, GCC 5, GCC 6
  • Clang 3.6, Clang 3.7, Clang 3.8, Clang 3.9, Clang 4
  • any C++11 compiler, any C++14 compiler

The minimum required compiler versions are be:

  • Visual Studio 2017
  • GCC 7
  • Clang 5
  • any C++17 compiler (std::filesystem is not required)




Please, either upgrade your hardware and/or operating system, or you may sadly have to also stay with old OpenMPT and/or libopenmpt versions.

Technical discussion: https://bugs.openmpt.org/view.php?id=1186 / https://bugs.openmpt.org/view.php?id=1183
Elaborate reasoning why we need to drop support for older systems can be found in this thread: https://forum.openmpt.org/index.php?topic=5708




This post is still subject to change and will be updated as needed.

manx

support matrices:


Windows
latest working OpenMPT
Windows 95
1.16
Windows 98
1.16
Windows 98 SE
1.18 (1.26.14.00-old with KernelEx)
Windows ME
1.18 (1.26.14.00-old with KernelEx)
Windows NT4
1.16
Windows 2000
1.26.14.00-old
Windows XP
1.28.10.00-old
Windows Vista
1.28.10.00-old
Windows 7
1.29 (current)
Windows 8
1.29 (current)
Windows 8.1
1.29 (current)
Windows 10
1.29 (current)


CPU generation
latest working OpenMPT
486
1.16
586, no CPUID, no CMPXCHG8B
1.26.14.00-old
586
1.28.10.00-old
686, no SSE2
1.28.10.00-old
686, SSE2
1.29 (current)


















Version
1.19
1.20-1.22
1.23-1.24
1.25
1.26
1.27
1.28
1.29
Timeframe
2011
2012-2013
2014-2015
2015
2016-2017
2017-2018
2019-2020
2020-...
Primary Compiler
Secondary Compiler
VS2008
VS2008
VS2008
VS2010
VS2010
VS2008
VS2010
VS2008
VS2015
VS2017
VS2019
Other Compilers
VS2010
VS2010
VS2012
VS2013
VS2015
VS2012
VS2013
VS2015
VS2017
VS2015
VS2017
Version
1.19
1.20-1.22
1.23-1.24
1.25
1.26
1.27
1.28
1.29
Windows NT4 (1996-2004)
no
no
no
no
no
no
no
no
Windows 2000 (2000-2010)
yes
yes
yes
yes
yes
no
no
no
Windows XP (2001-2014)
yes
yes
yes
yes
yes
yes
yes
no
Windows Vista (2006-2017)
yes
yes
yes
yes
yes
yes
yes
no
Windows 7 (2009-2020)
yes
yes
yes
yes
yes
yes
yes
yes
Windows 8 (2012-2016)
maybe
yes
yes
yes
yes
yes
yes
yes
Windows 8.1 (2013-2023)
maybe
yes
yes
yes
yes
yes
yes
yes
Windows 10 (2015-____)
maybe
maybe
maybe
maybe
yes
yes
yes
yes
Version
1.19
1.20-1.22
1.23-1.24
1.25
1.26
1.27
1.28
1.29

manx

r11430 (OpenMPT 1.29.00.10) removes optimized functions for AMD MMXEXT and AMD 3DNow! instruction sets.

Affected (by now ancient) CPUs for MMX extensions are: AMD K6, AMD K6-2, AMD K6-3, AMD Athlon (K7), Cyrix 6x86MX, Cyrix MII, VIA Cyrix III, Transmeta Crusoe, Cyrix MediaGXm, NSC Geode GX1, NSC Geode GX2, AMD Geode GX, AMD Geode LX.

Affected (by now ancient) CPUs for 3DNow! are: AMD K6-2, AMD K6-3, AMD Athlon (K7), AMD Athlon XP, VIA Cyrix III, VIA C3, NSC Geode GX2, AMD Geode GX, AMD Geode LX, AMD Geode NX.

These are (for now) still supported, just (potentially) slower.

manx

r11458 removes optimized x86, MMX, and SSE functions for the cases where we also have SSE2 functions available.

Affected (by now ancient) desktop CPUs are: Intel Pentium (x86), Intel Pentium Pro (x86), Intel Pentium MMX (MMX), Intel Pentium 2 (MMX), Intel Pentium 3 (SSE), AMD K5 (x86), AMD K6 (MMX), AMD K6-2 (MMX), AMD K6-3 (MMX), AMD Athlon K7 (MMX), AMD Athlon XP (SSE), Cyrix 6x86MX (MMX), Cyrix MII (MMX), VIA Cyrix III (MMX), VIA C3 (SSE), Transmeta Crusoe (MMX).

These are (for now) still supported, just (potentially) slower.

manx


manx

Statistics as of 2019-08-31:


Windows versions:

      Windows 98    0 %   #
      Windows ME    0 %   

     Windows NT4    0 %   

    Windows 2000    0 %   #
      Windows XP    1 %   ##
  Windows XP x64    0 %   #

   Windows Vista    0 %   #
       Windows 7   19 %   #############################
       Windows 8    0 %   #
     Windows 8.1    4 %   #######

      Windows 10   71 %   ###########################################################################################################

            Wine    4 %   ######


Wine host systems:

           Linux   86 %   ############################################
           macOS   14 %   #######


Wine on Linux:

        wine-1.6    2 %   ###

        wine-1.8    3 %   ###

        wine-1.9    1 %   #
        wine-2.0    1 %   #

        wine-2.x    1 %   #
        wine-3.0   15 %   ###############

        wine-3.x    4 %   ####
        wine-4.0   36 %   ####################################

        wine-4.x   39 %   #######################################


Wine on Mac:

        wine-1.8   20 %   ####################

        wine-2.0   14 %   ##############

        wine-2.x   12 %   ############
        wine-3.0   12 %   ############

        wine-3.x    4 %   ####
        wine-4.0   31 %   ################################

        wine-4.x    8 %   ########



Given that all modern Linux distributions ship at least Wine 3.0 (Ubuntu 18.04 LTS ships Wine 3.0), we should also consider dropping support for Wine 2.x and earlier.

Among those 1% Windows XP users, only 3% (which is only 0.03% of our total users) are using a non-SSE2 CPU.
10% of our users run less than 4GB RAM, which means the systems in question cannot be expected to be upgradeble to any modern Windows version.

manx

r11988 (OpenMPT 1.29.00.26) has now removed support for Windows XP and Windows Vista and all CPUs without SSE2 instruction support.

manx

r11997 requires C++17 (without std::filesystem), removing support for C++14 (GCC 5, GCC 6, Clang 3.8, Clang 3.9, Clang 4).

manx


Statistics as of 2019-12-16:



Windows versions:

      Windows 98    0 %   #
      Windows ME    0 %   

     Windows NT4    0 %   

    Windows 2000    0 %   #
      Windows XP    1 %   ##
  Windows XP x64    0 %   #

   Windows Vista    0 %   #
       Windows 7   17 %   ##########################
       Windows 8    0 %   #
     Windows 8.1    4 %   #######

      Windows 10   73 %   ##############################################################################################################

            Wine    4 %   ######


Wine host systems:

           macOS   13 %   #######
           Linux   87 %   ############################################


Wine on Linux:

        wine-1.6    3 %   ####

        wine-1.7    0 %   #
        wine-1.8    2 %   ###

        wine-2.0    1 %   #

        wine-2.x    1 %   #
        wine-3.0   11 %   ###########

        wine-3.x    5 %   #####
        wine-4.0   40 %   ########################################

        wine-4.x   37 %   ######################################


Wine on Mac:

        wine-1.8   21 %   #####################

        wine-2.0    7 %   #######

        wine-2.x    7 %   #######
        wine-3.0    7 %   #######

        wine-4.0   56 %   ########################################################

        wine-4.x    2 %   ###


Windows 10 versions:

           Windows 10 (Version 10.0 (Build 10240)) #
           Windows 10 (Version 10.0 (Build 10586)) #
           Windows 10 (Version 10.0 (Build 14393)) ####
           Windows 10 (Version 10.0 (Build 15063)) ##
           Windows 10 (Version 10.0 (Build 16299)) #####
           Windows 10 (Version 10.0 (Build 17134)) ########################################################################
           Windows 10 (Version 10.0 (Build 17758)) #
           Windows 10 (Version 10.0 (Build 17760)) #
           Windows 10 (Version 10.0 (Build 17763)) ###############################################
           Windows 10 (Version 10.0 (Build 18305)) #
           Windows 10 (Version 10.0 (Build 18312)) #
           Windows 10 (Version 10.0 (Build 18317)) #
           Windows 10 (Version 10.0 (Build 18323)) #
           Windows 10 (Version 10.0 (Build 18329)) #
           Windows 10 (Version 10.0 (Build 18334)) #
           Windows 10 (Version 10.0 (Build 18342)) #
           Windows 10 (Version 10.0 (Build 18348)) #
           Windows 10 (Version 10.0 (Build 18351)) #
           Windows 10 (Version 10.0 (Build 18353)) #
           Windows 10 (Version 10.0 (Build 18356)) #
           Windows 10 (Version 10.0 (Build 18362)) ######################
           Windows 10 (Version 10.0 (Build 18855)) #
           Windows 10 (Version 10.0 (Build 18865)) #
           Windows 10 (Version 10.0 (Build 18875)) #
           Windows 10 (Version 10.0 (Build 18885)) #
           Windows 10 (Version 10.0 (Build 18890)) #
           Windows 10 (Version 10.0 (Build 18894)) #
           Windows 10 (Version 10.0 (Build 18895)) #
           Windows 10 (Version 10.0 (Build 18898)) #
           Windows 10 (Version 10.0 (Build 18908)) #
           Windows 10 (Version 10.0 (Build 18912)) #
           Windows 10 (Version 10.0 (Build 18917)) #
           Windows 10 (Version 10.0 (Build 18922)) #
           Windows 10 (Version 10.0 (Build 18932)) #
           Windows 10 (Version 10.0 (Build 18936)) #
           Windows 10 (Version 10.0 (Build 18941)) #
           Windows 10 (Version 10.0 (Build 18945)) #
           Windows 10 (Version 10.0 (Build 18950)) #
           Windows 10 (Version 10.0 (Build 18956)) #
           Windows 10 (Version 10.0 (Build 18963)) #
           Windows 10 (Version 10.0 (Build 18970)) #
           Windows 10 (Version 10.0 (Build 18975)) #
           Windows 10 (Version 10.0 (Build 18980)) #


Windows 10 variants:

PRODUCT_UNDEFINED              #
PRODUCT_HOME_BASIC_N           ####
PRODUCT_STANDARD_SERVER        #
PRODUCT_ENTERPRISE_N           #
PRODUCT_PROFESSIONAL           ########################################
PRODUCT_PROFESSIONAL_N         #
PRODUCT_SB_SOLUTION_SERVER     #
PRODUCT_ENTERPRISE_EVALUATION  #
PRODUCT_CORE_N                 #
PRODUCT_CORE_COUNTRYSPECIFIC   #
PRODUCT_CORE_SINGLELANGUAGE    #####
PRODUCT_CORE                   ##########################################
PRODUCT_EDUCATION              ##
PRODUCT_ENTERPRISE_S           ##
PRODUCT_ENTERPRISE_S_N         #
PRODUCT_PRO_WORKSTATION        #
PRODUCT_PRO_FOR_EDUCATION      #
PRODUCT_PRO_FOR_EDUCATION_N    #
PRODUCT_ENTERPRISEG            #