View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000836||OpenMPT||[All Projects] General||public||2016-07-30 09:32||2017-06-14 11:31|
|Product Version||OpenMPT 1.26.03.* (old testing)|
|Target Version||OpenMPT 1.27.01.00 (upcoming stable)||Fixed in Version||OpenMPT 1.27.01.00 (upcoming stable)|
|Summary||0000836: Remove support for C++98 and C++03 compilers|
Still supporting these ancient compilers requires a huge amount of development time on work-arounds and re-implementing current, modern standard language features in sub-optimal fashion.
Support for obsolete and broken compilers should be removed as soon as possible.
Requiring MSVC 2013, GCC 4.7, Clang 3.2 gives us usable C++11 support.
Note that all of these common OSs have already stable Long Term Support releases (which we would continue to support) out since more than 2 years now. For Windows, Long Term Support for Windows 2000 even expired more than 5 years ago by now.
Usable C++14 support would probably (at least) require additionally removing support for the following compilers:
This is currently not feasible at all, because it would mean removing support for the current LTS release of various Operating System.
|Tags||No tags attached.|
|Has the bug occurred in previous versions?|
|Tested code revision (in case you know it)|
We may want to take this to the forum and/or add telemetry data on used Operating System to the update mechanism of OpenMPT.
Since r6705, there is telemetry for Windows/Wine versions in the update checker.
I don't know about this. I came to ModPlug thru Windows 98 (actually an emulator of it on Mac), and I'd still be using it if I didn't have other applications that motivated me to get a Windows computer. I'm still on XP, but computers are often handed down that use obsolete platforms, and I'd hate to lose a potential user/member/colleague because our software is one version beyond their reach.
Now if you're doing an overhaul of the GUI and you need to do a serious update to the features, for which we simply didn't have the tech way back when ModPlug was open-sourced, that's different. Otherwise if you're only doing it for convenience's sake, maybe you can brainstorm a workaround, so that older computers are not once again denied a great old-school application.
Yes, perhaps a thread in the forums will bring us to a nice compromise or win-win answer....
This is 2016, not 2006. Most major software that people use no longer runs on Windows 98 or Windows 2000, making OpenMPT a very rare exception. You can always use an old version of OpenMPT on Windows 98 if you really must. Besides, what about the theortical Windows 95 users out there which also cannot use OpenMPT anymore since... more than 10 years ago?
The "convenience" we are talking about here directly correlates with motivation to work on the code at all. If the code is complicated to write (which it is when having to target C++98), it's also not fun to write. The "workaround" you are talking about is not upgrading to C++11, making writing new, maintainable code more complicated than necessary.
(besides, it is very well possible that Win98SE and WinME may still be supported through KernelEx - only dropping Win2k support in the end. That entirely depends on which APIs are available in KernelEx and which are not. manx' list is just a worst-case assumption in this regard.)
As far as I know, there is no way whatsoever to make a Win 9x kernel load MSVC 2010 (or later) binaries at all. I think I did try that in the past. After all, as far as I know, this was the one and only reason to still support MSVC 2008 at all.
I think it is generally (as a goal to strive for) wise to support at least two versions (i.e. the latest two) of Visual Studio. Thus, as long as the second to latest Visual Studio release still supports Windows XP, it probably will not go away (for Win32old build variants). Full functionality already currently requires Windows 7 / 8.1 (mostly because of compressed lossy sample import).
I again just lost about 2 hours fighting broken compilers.
Removing support for MSVC 2008, MSVC 2010, MSVC 2012 will remove support for the following CPUs in OpenMPT and libopenmpt builds:
vs2015xp builds crash on Wine 1.0.1
vs2015xp builds work on Wine 1.4.1
I think it would be worth the effort to still support GCC 4.6 in some kind of ANCIENT configuration (like we are currently doing for MSVC 2008, GCC 4.1, GCC 4.2, GCC 4.3) because Debian 7 still uses GCC 4.6 on non-x86 systems.
Forum post is at https://forum.openmpt.org/index.php?topic=5708.0 .
GCC 4.7 has severe problems with moderate use of constexpr, thus, to get really usable C++11 support, GCC 4.7 support would also have to be removed.
So far, we have only dropped 4 compilers:
Various C++ features would require support for various different compilers to be removed:
type_traits working for array types:
This means, we can now start using at least the following C++ features unconditionally (this list is incomplete):
The following features still require attention (the std:: version is not available for Win32old and Win64old build because of Wine compatibility):
The following features are still not available unconditionally:
|2016-07-30 09:32||manx||New Issue|
|2016-07-30 09:35||manx||Note Added: 0002529|
|2016-07-30 16:37||Saga Musix||Note Added: 0002530|
|2016-08-04 15:20||harbinger||Note Added: 0002539|
|2016-08-04 15:26||Saga Musix||Note Added: 0002540|
|2016-08-04 15:31||Saga Musix||Note Added: 0002541|
|2016-08-04 16:32||manx||Note Added: 0002542|
|2016-08-04 19:40||manx||Note Added: 0002543|
|2016-08-05 09:30||manx||Relationship added||parent of 0000846|
|2016-08-09 09:32||manx||Note Added: 0002586|
|2016-08-14 17:00||manx||Note Added: 0002601|
|2016-08-14 19:32||manx||Note Added: 0002602|
|2016-08-20 10:01||manx||Relationship added||related to 0000821|
|2016-08-21 12:55||manx||Note Added: 0002622|
|2016-08-21 13:10||manx||Note Added: 0002623|
|2016-08-24 07:26||manx||Note Added: 0002626|
|2016-08-26 06:54||manx||Target Version||=> OpenMPT 1.27.01.00 (upcoming stable)|
|2016-09-02 16:08||manx||Note Added: 0002632|
|2016-09-03 11:13||manx||Additional Information Updated||View Revisions|
|2016-09-08 16:15||manx||Note Added: 0002650|
|2016-10-02 08:39||manx||Note Added: 0002684|
|2016-10-15 09:24||manx||Note Added: 0002697|
|2016-10-15 09:24||manx||Note Edited: 0002697||View Revisions|
|2016-10-17 17:00||manx||Note Added: 0002699|
|2017-02-24 10:29||manx||Assigned To||=> manx|
|2017-02-24 10:29||manx||Status||new => assigned|
|2017-04-21 12:31||manx||Note Added: 0002980|
|2017-04-21 13:57||manx||Status||assigned => resolved|
|2017-04-21 13:57||manx||Resolution||open => fixed|
|2017-04-21 13:57||manx||Fixed in Version||=> OpenMPT 1.27.01.00 (upcoming stable)|