Author Topic: OpenMPT 1.29 and libopenmpt 0.5 removed platform support  (Read 2235 times)

Offline manx

  • OpenMPT Developers
  • *****
  • Posts: 237
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 will be:
  • 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 already 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

OpenMPT 1.29 and libopenmpt 0.5 will likely drop support for the following compilers:

    The minimum required compiler versions will likely 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.
    « Last Edit: September 06, 2019, 11:35:08 by manx »

    Offline manx

    • OpenMPT Developers
    • *****
    • Posts: 237
    Re: OpenMPT 1.29 and libopenmpt 0.5 removed platform support
    « Reply #1 on: March 01, 2019, 16:15:25 »
    informal preliminary 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-old
    Windows Vista
    1.28-old
    Windows 7
    current
    Windows 8
    current
    Windows 8.1
    current
    Windows 10
    current

    CPU generation
    latest working OpenMPT
    486
    1.16
    586, no CPUID, no CMPXCHG8B
    1.26.14.00-old
    586
    1.28-old
    686, no SSE2
    1.28-old
    686, SSE2
    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
    2019-____
    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-...
    « Last Edit: September 30, 2019, 14:38:51 by manx »

    Offline manx

    • OpenMPT Developers
    • *****
    • Posts: 237
    Re: OpenMPT 1.29 and libopenmpt 0.5 removed platform support
    « Reply #2 on: March 06, 2019, 16:35:56 »
    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.

    Offline manx

    • OpenMPT Developers
    • *****
    • Posts: 237
    Re: OpenMPT 1.29 and libopenmpt 0.5 removed platform support
    « Reply #3 on: March 11, 2019, 17:30:22 »
    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.
    « Last Edit: July 01, 2019, 18:30:32 by manx »

    Offline manx

    • OpenMPT Developers
    • *****
    • Posts: 237
    Re: OpenMPT 1.29 and libopenmpt 0.5 removed platform support
    « Reply #4 on: July 01, 2019, 17:38:47 »
    r11501 removed VS2015 support.

    Offline manx

    • OpenMPT Developers
    • *****
    • Posts: 237
    Re: OpenMPT 1.29 and libopenmpt 0.5 removed platform support
    « Reply #5 on: August 31, 2019, 12:29:10 »
    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.

    Offline manx

    • OpenMPT Developers
    • *****
    • Posts: 237
    Re: OpenMPT 1.29 and libopenmpt 0.5 removed platform support
    « Reply #6 on: September 05, 2019, 16:23:47 »
    r11988 (OpenMPT 1.29.00.26) has now removed support for Windows XP and Windows Vista and all CPUs without SSE2 instruction support.

    Offline manx

    • OpenMPT Developers
    • *****
    • Posts: 237
    Re: OpenMPT 1.29 and libopenmpt 0.5 removed platform support
    « Reply #7 on: September 06, 2019, 11:38:05 »
    r11997 requires C++17 (without std::filesystem), removing support for C++14 (GCC 5, GCC 6, Clang 3.8, Clang 3.9, Clang 4).