6 ms·
I feel like the standards are starting to get ahead of implementation. It's almost 2023 and C++20 still doesn't have even full support in any of the main compil
by snovv_crash 4y ago
I feel like the standards are starting to get ahead of implementation. It's almost 2023 and C++20 still doesn't have even full support in any of the main compilers.
- pjmlp 4y agoVC++ is mostly crossing the finish line already. GCC is getting there thanks Red-Hat support. Clang well, apparently all those compiler vendors that profit from it, see only a value in LLVM itself, after Apple and Google switched focus to their own languages.
- cyber_kinetist 4y agoThere's a looming feeling that C++17 is really going to be the last version of C++ (practically, in production). The Vasa is now half-sunk [0][1], but the alternatives are yet to be truly born. The current issues surrounding the language standards: - The important but half-baked features of C++20 that has never really been polished enough for actual production usage (modules, coroutines) - Unnecessary "hyper-modern" C++ features which are dead on arrival (ranges) - The dramatic increase in build times due to the STL library (which are accelerated by those hyper-modern C++ features) [2] - The fleeing of LLVM/Clang engineers to other projects (as you've said, Apple engineers shifting work to Swift, and Google abandoning Clang and moving to Carbon). - Implosions in the ISO committee (notably the controversy surrounding the rape convict) It's really not looking good, but there aren't that much alternatives so I think people will just stick to C++17 for the moment. Listing the worthwhile competitors: - Rust is a bit too awkward to use in many cases where C++ is used (particularly with unsafe Rust), and inherits some of the hyper-modern complexities/insanities of C++. - Zig is still too unstable, they just finished reworking the compiler - Jai is not even released to the public - D might be a candidate but IMO they should really commit 100% fully for GC-less betterC mode... - Nim still has many warts and unbaked features, and also there was a split in the compiler team [3] [0] https://www.aristeia.com/TalkNotes/C++vstheVasa2-ups.pdf https://www.aristeia.com/TalkNotes/C++vstheVasa2-ups.pdf [1] https://www.stroustrup.com/P0977-remember-the-vasa.pdf https://www.stroustrup.com/P0977-remember-the-vasa.pdf [2] https://old.reddit.com/r/cpp/comments/o94gvz/what_happened_with_compilation_times_in_c20/ https://old.reddit.com/r/cpp/comments/o94gvz/what_happened_w... [3] https://github.com/nim-works/nimskull https://github.com/nim-works/nimskull
- pjmlp 4y agoI share the feeling, however I would point out C++23 as the last version, I think the ecosystem will still make it that far, afterwards is as you point out. Still, look at Fortran, Cobol, C, as examples of 50 - 60 old languages that aren't leaving us anytime soon.
- f1shy 4y agoThe languages do not die in one day. In 30 years, maybe there are some people writing new code in C++38... and of course the immense code base already existing will stay for decades. What happens, is there is a steady descent in the number or people using it. I think it has started. I know even C++ fanboys/lawyers, that are having a lot of trouble to keep up with all features from present and past... And 99% of developers I know, even very good ones, speak of "my 20% C++". So my feeing is 17 is the last version which some people can use 100% of.
- pjmlp 4y agoNot wanting to do public shaming, there are still tutorials being uploaded to YouTube using Turbo C++ for MS-DOS. While on the other hand I also have an issue keeping up with my 20% of JVM, CLR, V8, Azure, AWS,... I guess things eventually implode and we need to start from scratch.
- Kwpolska 4y agoThose Turbo C++ tutorials tend to come out of India, and it’s because their schools are stuck teaching that. But those aren’t really tutorials for modern C++, they’re tutorials for C-with-classes at best.
- pjmlp 4y agoDefinitely, however many beginners don't know about it. Imagine a group of teenager, getting interested into C++ via the Arduino or Pi based school projects, they search YouTube for tutorials (as common practice nowadays) and land on such tutorials.
- boundchecked 4y agoI don't know what motivate you to keep repeating this narrative, Clang currently have good support of C++23 while MSVC have none[1], if your emphasis is on the standard library side, Clang is the only one that is compatible to all three major implementations and do use libstdc++ and MS STL on their respective "main" platforms. Also, why isn't Microsoft in the "profit from Clang" list? Is Clang-CL not shipped in Visual Studio Installer? Did they find a way to compile Edge with VC++? https://en.cppreference.com/w/cpp/compiler_support/23 https://en.cppreference.com/w/cpp/compiler_support/23
- snovv_crash 4y agoHave you tried using ranges with latest clang? That's a pretty central part of C++20 and it doesn't work.
- boundchecked 4y agoHave you tried converting iterations to SIMD and using vector extension to target x86, ARM, Webassembly and compile for Linux/Windows/MacOS with a simple piece of code? It's a pretty significant speed up and it only work with Clang.
- snovv_crash 4y agoWhat does that have to do with standards support?
- pjmlp 4y agoNone of that is part of ISO C++ compliance.
- throwaway311022 4y agoHow is ISO C++ compliance relevant to actual development?
- 4y ago
- lenkite 4y agoThe ABI vote was C++ being effectively assassinated with a tombstone on top. What a horrible decision to effectively end a powerful and long-standing programming language. Words cannot convey how angry I am that a self-obsessed committee killed the language with a decision of the highest, absolute idiocy.
- jahnu 4y agoThere are even c++17 features of the standard library that are incomplete in some major implementations like libc++
- kramerger 4y agoWhat do you mean? It has ALWAYS been like this. It was even worse in the old Microsoft C++ days.
- pjmlp 4y agoMicrosoft C++ is leading the green boxes on C++20 compliance. https://en.cppreference.com/w/cpp/compiler_support/20 https://en.cppreference.com/w/cpp/compiler_support/20
- jcelerier 4y agoThe boxes may be green but just two weeks ago I had to report two msvc bugs, one against if constexpr and one against requires-expression, which breaks very simple language examples. In practice it's much buggier than GCC (second least buggier) and Clang (by far the least buggy, I think I only ever reported a couple of core bugs to clang versus maybe 30+ for MSVC even though Clang is my main compiler and I use MSVC only for testing)