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

Offline manx

  • OpenMPT Developers
  • *****
  • Posts: 218
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 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.



libopenmpt 0.5 has already dropped support for the following compilers:
  • GCC 4.8, GCC 4.9
  • Clang 3.6, Clang 3.7
  • any C++11 compiler

OpenMPT 1.29 and libopenmpt 0.5 will likely drop support for the following compilers:
  • Visual Studio 2015

The minimum required compiler versions will likely be:
  • Visual Studio 2017
  • GCC 5
  • Clang 3.8
  • any C++14 compiler



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: March 01, 2019, 14:08:37 by manx »

Offline manx

  • OpenMPT Developers
  • *****
  • Posts: 218
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
VS2017
Other Compilers
VS2010
VS2010
VS2012
VS2013
VS2015
VS2012
VS2013
VS2015
VS2017
VS2015
VS2019
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: March 06, 2019, 12:25:57 by manx »

Offline manx

  • OpenMPT Developers
  • *****
  • Posts: 218
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: 218
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 X3 (SSE), Transmeta Crusoe (MMX).

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