I am beginning Tizen application developer.
I would like to know what is current support for C++11 features on Tizen?
When will the C++11 standard be fully supported? Maybe some platform developers could shed a light on that topic.
The Tizen 2.3 SDK comes with clang++ version 3.4 and gcc 4.8.
gcc 4.8 is known to not adhere to the C++11 and C++14 standards, clang++ 3.4 is really close to complete for C++11.
However, there's more to C++11 compliance than just the compiler. You also need to have enough support in the C++ library. GCC and Clang have different C++ library projects.
As far as I can quickly tell, Tizen 2.3 ships version 2.13 - which is from 2011.
So don't get your hopes up: things like move semantics, std::mutex, std::async will work, but smaller details like thread local storage will not.
Related
I am trying to find an official document to show to my team that We are good to use c++20 now. But There is no document mentioned that all compiler already fully support the c++20. so Should I use C++20 for the new project.
I would use the C++ reference website to see what is supported in what toolchains (and what versions), the modules might not be as widely supported as you would hope. However, if you know exactly what tools you and your team are using and you know exactly what parts of the standard you want (and what risks it involves), then you could theoretically use some parts of the standard.
For myself, I will be using modules on my own projects wherever I can, but it feels to me too early to propose it in a team.
Modules(P1103R3)
GCC 11 partial
Clang 8 partial
MSVC 19.0 (VS 2015) partial, 19.10 (VS 2017) TS only, 19.28 (VS 2019) 16.8
Apple Clang 10.0.1 partial (Xcode 10.2 10E125, Xcode 10.2.1 10E1001, Xcode 10.3 10G8)
EDG eccp no
Intel C++ no
IBM XLC++ no
Sun/Oracle C++ no
Embarcadero C++ Builder no
Cray no
Nvidia HPC C++ (ex Portland Group/PGI) no
Nvidia nvcc no
References:
https://en.cppreference.com/w/cpp/compiler_support
GCC
C++20 core language support status(complete as of 11.0, except part of modules)
https://gcc.gnu.org/projects/cxx-status.html#cxx20
Clang
https://clang.llvm.org/cxx_status.html#cxx20
https://libcxx.llvm.org/docs/Cxx2aStatus.html
Apple Clang
https://developer.apple.com/documentation/xcode-release-notes
MSVS
https://github.com/microsoft/STL/wiki/Changelog
https://devblogs.microsoft.com/cppblog/cpp17-20-features-and-fixes-in-vs-2019/
Range
I'm not sure which one you are meaning, this one?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf
Then that's supported:
GCC 10 yes
Clang 13 partial
MSVC 19.29 yes (VS 2019 16.10)
Apple Clang no
EDG eccp no
Intel C++ no
IBM XLC++ no
Sun/Oracle C++ no
Embarcadero C++ Builder no
Cray no
Nvidia HPC C++ (ex Portland Group/PGI) no
Nvidia nvcc no
I'm trying to build a simple application with CUDA and I've been trying for hours on end and I just can't make it work on windows. nvcc absolutely refuses to compile without Visual Studio's compiler which doesn't support things I need. I tried building using nvcc with clang but It just asks me to use Visual Studio's compiler. I've also tried using clang directly since it now supports CUDA but I receive this error:
clang++.exe: error: Unsupported CUDA gpu architecture: compute_52
This makes no sense to me because I have the CUDA toolkit version 7.5 and my graphics card is a GTX 970 (two of them). I have googled this extensively and everywhere I come across the error the person always has is their CUDA toolkit is < 7.5. I'm on the brink of tears right now trying to get something as simple as VLA to work on this CUDA application and I just can't achieve it...
The CUDA windows toolchain requires the Visual Studio C++ compiler. You cannot use anything else on that platform. If the VS compiler doesn't support the language features you need within CUDA host code, you have no choice but to change platforms, or your expectations.
You can still potentially compile non-CUDA host code using another compiler and then link that code using NVCC and the VS toolchain.
Try to use clang-cl, --cubin=clang-cl.exe
It may be worth to work on a Linux VM or WSL2 within windows. As per the CUDA docs.
To compile new CUDA applications, a CUDA Toolkit for Linux x86 is
needed. CUDA Toolkit support for WSL is still in preview stage as
developer tools such as profilers are not available yet. However, CUDA
application development is fully supported in the WSL2 environment, as
a result, users should be able to compile new CUDA Linux applications
with the latest CUDA Toolkit for x86 Linux.
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#:~:text=However%2C%20CUDA%20application%20development%20is,becomes%20available%20within%20WSL%202.
I am a student but this is a more general question and not related to any HW
I am using CLION with MinGW 3.2 and CMake 3.2.2 Is this ideal for C++11? Or better phrased is this at minimum compatible and will not crash for most C++11 features?
A lot of my classmates are having issues compiling or getting crashes, my instructor suggested due to many of them not using the class recommended IDE (Visual Studio) and default compiler that it may be because their compiler is not C++11 compatible.
We have not used many C++11 features-in fact the only one we have used so far is auto. (I did some searching before and found that this was a C++11 new feature, is this correct?). Should I be worried about any compatibility issues with my given environment (MinGW 3.2 - CLION uses GCC 32 only last I checked) and CMake (ver 3.2.2)?
Also is CLION a good IDE in general? I have access to VS2013 for a year though I use a WebStorm and PyCharm for other classes and personal projects so I thought I'd stick in the JetBrains family and use CLION.
I'm currently studying a book regarding C++, which is quite new. Therefore it also discusses C++11 in some parts. Having Windows Vista, I can't download the latest version of Visual Express, so I'll have to do with the 2010 version. This doesn't support C++11, so I'm currently wondering whether there exists a free alternative which does support C++11.
p.s. - Would you say it's essential/important for a beginner in programming to learn C++11 as well (instead of just the core basics)?
You could consider using virtual machine with a Linux flavor. I had the same problem as you, I installed VirtualBox, then Ubuntu having the latest g++ compiler
You could compile and use Clang on Windows Vista and integrate it to Visual Studio. They have an almost complete support for C++11 now (as of version 3.3).
I tried to use Boost thread local storage with Windows threads. I built the project without any problems.
However my question here is, is it okay to use Boost TLS with Windows threads?
Edit
Yes Boost is integrally supported on windows with all major compilers:
Supported compilers and platforms
The library should build and work with a reasonably compliant compiler. The library was > successfully built and tested on the following platforms:
Windows XP, Windows Vista. MSVC 8.0, 9.0. MSVC 7.1 may work too, but it was not tested.
Windows Vista. Intel C++ Compiler 10.1.022, 11.1.048.
Linux. GCC 4.2 and newer. GCC 4.1 may work too, but it was not tested.
Linux. Intel C++ 11.1.056.
The following compilers/platforms are not supported and will likely fail to compile the library:
MSVC 7.0 and older.
Borland C++ 5.5.1 (free version). Newer versions might or might not work.
GCC 4.0 and older.
Windows 9x, ME, NT4 and older are not supported.
I suppose you mean what "libraries do I need"?
You need to link to the import library for boost threads, usually a file like
C:\Program Files\boost\boot_1_47_0\lib\libboost_pthread....lib
This file can be added to the additional libraries to link box in the c++ linker settings. Don't forget to add it for debug and release builds.
PS. don't have Windows handy right now, so I can't do the screen shots.