Release Notes can be found at "release notes" links on <a href="https://prereleases.llvm.org/10.0.0/#rc1" rel="nofollow">https://prereleases.llvm.org/10.0.0/#rc1</a>.<p>A few highlights:<p>> llvm: -mprefer-vector-width=256 is now the default behavior skylake-avx512 and later Intel CPUs. This tries to limit the use of 512-bit registers which can cause a decrease in CPU frequency on these CPUs.<p>This reminds me of all those "don't use AVX512" memes and a good explanation is at <a href="https://stackoverflow.com/questions/56852812/simd-instructions-lowering-cpu-frequency/56861355#56861355" rel="nofollow">https://stackoverflow.com/questions/56852812/simd-instructio...</a><p>> llvm: Windows Control Flow Guard: the -cfguard option now emits CFG checks on indirect function calls. The previous behavior is still available with the -cfguard-nochecks option. Note that this feature should always be used with optimizations enabled.<p>A good resource for learning basics of ClangCFI: <a href="https://blog.trailofbits.com/2017/02/20/the-challenges-of-deploying-security-mitigations/" rel="nofollow">https://blog.trailofbits.com/2017/02/20/the-challenges-of-de...</a><p>> clang/c++: Concepts support. Clang now supports C++2a Concepts under the -std=c++2a flag.<p>This finally landed and was considered one of the biggest features of C++23. Visual Studio implemented it in 16.3 released last year: <a href="https://devblogs.microsoft.com/cppblog/c20-concepts-are-here-in-visual-studio-2019-version-16-3/" rel="nofollow">https://devblogs.microsoft.com/cppblog/c20-concepts-are-here...</a><p>> clang now defaults to .init_array on Linux. It used to use .ctors if the found gcc installation is older than 4.7.0. Add -fno-use-init-array to get the old behavior (.ctors).<p>That's the pain of relying gcc toolchain in many components to keep backward compatibility. I really wish there could be a "-fbehavior-model=v3" for these kind of subtle changes.