paroj wrote: ↑Thu Aug 29, 2024 12:55 am
andrecaldas wrote: ↑Wed Aug 28, 2024 9:40 pm
Is it because MSVC users do not have the money to buy the new version?
I would argue linux users are even a bigger problem. e.g. RHEL7 (supported until 2028) uses GCC 4.8 as the default compiler. However, full C++14 support only comes with GCC 4.9..
What is the "default compiler" in Windows 10?
That is not a problem of linux users. It is a cultural problem. I fail to understand why a game developer would use RHEL. From wikipedia:
The first version of Red Hat Enterprise Linux to bear the name originally came onto the market as "Red Hat Linux Advanced Server". In 2003, Red Hat rebranded Red Hat Linux Advanced Server to "Red Hat Enterprise Linux AS" and added two more variants, Red Hat Enterprise Linux ES and Red Hat Enterprise Linux WS.
Because "debian" is slow in releasing new software versions, people prefer "ubuntu". But debian is not slow. Debian has a very well defined release cycle. The "rock stable" one is called "stable". Other versions have misleading names, like "testing" and "unstable". People did not want "stable". They wanted "testing", but they wanted it to be called "stable". They were using the wrong version! Later, Ubuntu did the same and created the LTS (long term support). Debian should have called their versions something like "rock solid, but born outdated", "stable" and "almost stable".
At the university I work, we had an LTS server. The support ended. Absolutely NOBODY has the courage to upgrade it. The changes would be too radical!!! So, we use an unsupported extremely outdated system that has no updates and not even security updates. All that because culturally we got very scared when there is the LTS. We are afraid of not choosing the "safe choice". So, we prefer to have LTS and never worry about upgrading. 10 years later you realize it was a bad idea. The only warranty you had was that your system would NEVER EVOLVE! I suppose it is just people's mindset.
If you have a critical server that you absolutely do not want to touch, you might have a good reason to stick with some 10 year old system. I do think this is a symptom of a bigger problem, because you are not confident enough to TEST before going into production. It is the engineering motto: DO NOT TOUCH ANYTHING!!! IT IS WORKING!!!
Even if you do not want to use C++20, I see no good reason for sicking with GCC 4.8 when GCC 14.2 is already available. Debian has it. The longer you take to move, the harder it gets! If you cannot because you do not have confidence the process will be smooth, then you are not facing a problem. You are facing the symptoms of other many problems you do have.
paroj wrote: ↑Thu Aug 29, 2024 12:55 am
So using certain C++14 features means that Ogre will not be compileable on that platform any more. Or maybe some other embedded platform. So the new features we get by bumping C++ levels better outweight that.
It is like saying Ogre will not compile on Windows 10 because it does not come with a C++ compiler. But I understand what you mean. There is no concept of "distro" in windows, so people do not mind installing MSVC. Although RHEL has a "repo", it does not tie you to the official one. You tie yourself because you want to.
paroj wrote: ↑Thu Aug 29, 2024 12:55 am
On the other hand some of our dependencies, notably glslang, already use C++17. So it is about balancing whether a sensible feature-set is still available on older platforms.
I think this "still available on older platforms" has at least three meanings:
- Do you think it is important to compile ogre in an old platform?
- Do you think it is important to compile the app in an old platform?
- Do you think it is important to run the app in an old platform?
Also, "old platform" has different meanings:
a. Old platform means old computer with old GPU?
b. Old platform means old system installed?
c. Old platform means old compiler installed?
For 3, you can compile in some newer platform (or newer compiler) or even cross-compile. You do not need to compile it in Android to use it in Android. You do not need one executable for each possible windows version. You can compile it in ubuntu and run it in debian. You can compile it in one ubuntu and run it in some other ubuntu. You can even compile it in debian and get it to run in windows! Etc, etc, etc.
For 2, from the point of view of Ogre, it is about the same. But you do not need to worry about the app, just the lib.
For 1, if by "old platform" you mean a system where you can install GCC 14, then you can still work with C++20. For this outdated Ubuntu LTS I told you about, I got the administrator to install some (old) libs and compiled GCC 14 myself. I did this because I wanted to do distributed compilation (distcc).
Disclaimer: All this is the opinion of someone who has never worked for a big company, and has never developed a game.
PS: When I say you, I do not mean "you". I mean the person in this situation.