First of all, some info for those who are not familiar with C++. C++ is defined by ISO standard ISO/IEC 14882. Revisions of the standard are marked by the year they are published. So far, there has been 3 revisions: ISO/IEC 14882:1998, ISO/IEC 14882:2003 and ISO/IEC 14882:2011. Informally they are called C++98, C++03 and C++11. Currently, fourth revision is in being worked on having the status of Committee Draft, expected to become C++14.
Now, I've looked at the source code of Red Eclipse and was a bit shocked. It looks like it was developed in pre-C++98 era. It doesn't look like C++ to me, rather some weird dialect of C. So I'm proposing to make the code up with times or at least allow C++11 in the new contributions.
Why? Here are some notable features of C++11:
- Move semantics - allows you to avoid unnecessary copies and make old code faster without change to it.
- Smart pointers - forget about manually managing memory and worrying about memory leaks. You also get exception safety.
- Standard multithreading - again, forget about OS-specific code to handle concurrency. You now have a standard way to express multithreaded code.
- Explicit Unicode support - you no longer have to live in implementation defined execution character set but instead can be sure that your code is in fact Unicode.
- Lambda expressions - you can now express algorithms as they are meant to be.
- Much more.
The industry is rapidly moving towards C++11:
- The C++ Programming Language, 4th edition - the book by Bjarne Stroustrup, the creator of C++, uses C++11 freely.
- Guru of The Week - the legendary series by Herb Sutter, the chairman of standardization committee, are being updated to C++11/14.
- Scott Meyers is working on a new C++11/14 book.
- Many real world projects are already using C++11, just watch some videos from C++Now or other C++ conferences.
The compiler support:
- GCC 4.8.1 has complete support in the compiler. libstdc++ is still lacking some components.
- Clang 3.3 with libc++ has complete support in both compiler and standard library.
- Visual Studio 2013 Preview supports roughly 60% of the features. (But who cares about Visual Studio, right?)
Lastly, I really want to contribute code to Red Eclipse, but I've spent years learning C++11, all my code is written in C++11 and it would be very uncomfortable to code anything without C++11.
I've asked for this in IRC and got a very strong opposition from graphitemaster, through he is not part of development team and seemed to be the only one opposing. When I've asked him about coding guidelines, I got this. It bans half of the features of even C++98 and I'm not going to contribute under these guidelines. If all else fails, I'm going to create a network-compatible fork on which I'll be testing my ideas.
If, however, this proposal will be accepted, expect (another) generous donation from me.