1======================================== 2Clang 13.0.0 (In-Progress) Release Notes 3======================================== 4 5.. contents:: 6 :local: 7 :depth: 2 8 9Written by the `LLVM Team <https://llvm.org/>`_ 10 11.. warning:: 12 13 These are in-progress notes for the upcoming Clang 13 release. 14 Release notes for previous releases can be found on 15 `the Download Page <https://releases.llvm.org/download.html>`_. 16 17Introduction 18============ 19 20This document contains the release notes for the Clang C/C++/Objective-C 21frontend, part of the LLVM Compiler Infrastructure, release 13.0.0. Here we 22describe the status of Clang in some detail, including major 23improvements from the previous release and new feature work. For the 24general LLVM release notes, see `the LLVM 25documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM 26releases may be downloaded from the `LLVM releases web 27site <https://llvm.org/releases/>`_. 28 29For more information about Clang or LLVM, including information about the 30latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or the 31`LLVM Web Site <https://llvm.org>`_. 32 33Note that if you are reading this file from a Git checkout or the 34main Clang web page, this document applies to the *next* release, not 35the current one. To see the release notes for a specific release, please 36see the `releases page <https://llvm.org/releases/>`_. 37 38What's New in Clang 13.0.0? 39=========================== 40 41Some of the major new features and improvements to Clang are listed 42here. Generic improvements to Clang as a whole or to its underlying 43infrastructure are described first, followed by language-specific 44sections with improvements to Clang's support for those languages. 45 46Major New Features 47------------------ 48 49- ... 50 51Improvements to Clang's diagnostics 52^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 53 54- ... 55 56Non-comprehensive list of changes in this release 57------------------------------------------------- 58 59- ... 60 61New Compiler Flags 62------------------ 63 64- ... 65 66Deprecated Compiler Flags 67------------------------- 68 69- ... 70 71Modified Compiler Flags 72----------------------- 73 74- -Wshadow now also checks for shadowed structured bindings 75- ``-B <prefix>`` (when ``<prefix>`` is a directory) was overloaded to additionally 76 detect GCC installations under ``<prefix>`` (``lib{,32,64}/gcc{,-cross}/$triple``). 77 This behavior was incompatible with GCC, caused interop issues with 78 ``--gcc-toolchain``, and was thus dropped. Specify ``--gcc-toolchain=<dir>`` 79 instead. ``-B``'s other GCC-compatible semantics are preserved: 80 ``$prefix/$triple-$file`` and ``$prefix$file`` are searched for executables, 81 libraries, includes, and data files used by the compiler. 82 83Removed Compiler Flags 84------------------------- 85 86- The clang-cl ``/fallback`` flag, which made clang-cl invoke Microsoft Visual 87 C++ on files it couldn't compile itself, has been removed. 88 89- ``-Wreturn-std-move-in-c++11``, which checked whether an entity is affected by 90 `CWG1579 <https://wg21.link/CWG1579>`_ to become implicitly movable, has been 91 removed. 92 93New Pragmas in Clang 94-------------------- 95 96- ... 97 98Attribute Changes in Clang 99-------------------------- 100 101- ... 102 103Windows Support 104--------------- 105 106C Language Changes in Clang 107--------------------------- 108 109- ... 110 111C++ Language Changes in Clang 112----------------------------- 113 114- ... 115 116C++1z Feature Support 117^^^^^^^^^^^^^^^^^^^^^ 118... 119 120Objective-C Language Changes in Clang 121------------------------------------- 122 123OpenCL C Language Changes in Clang 124---------------------------------- 125 126... 127 128ABI Changes in Clang 129-------------------- 130 131OpenMP Support in Clang 132----------------------- 133 134- ... 135 136CUDA Support in Clang 137--------------------- 138 139- ... 140 141X86 Support in Clang 142-------------------- 143 144- ... 145 146Internal API Changes 147-------------------- 148 149These are major API changes that have happened since the 12.0.0 release of 150Clang. If upgrading an external codebase that uses Clang as a library, 151this section should help get you past the largest hurdles of upgrading. 152 153- ... 154 155Build System Changes 156-------------------- 157 158These are major changes to the build system that have happened since the 12.0.0 159release of Clang. Users of the build system should adjust accordingly. 160 161- The option ``LIBCLANG_INCLUDE_CLANG_TOOLS_EXTRA`` no longer exists. There were 162 two releases with that flag forced off, and no uses were added that forced it 163 on. The recommended replacement is clangd. 164 165- ... 166 167AST Matchers 168------------ 169 170- ... 171 172clang-format 173------------ 174 175- Option ``SpacesInLineCommentPrefix`` has been added to control the 176 number of spaces in a line comments prefix. 177 178- Option ``SortIncludes`` has been updated from a ``bool`` to an 179 ``enum`` with backwards compatibility. In addition to the previous 180 ``true``/``false`` states (now ``CaseSensitive``/``Never``), a third 181 state has been added (``CaseInsensitive``) which causes an alphabetical sort 182 with case used as a tie-breaker. 183 184 .. code-block:: c++ 185 186 // Never (previously false) 187 #include "B/A.h" 188 #include "A/B.h" 189 #include "a/b.h" 190 #include "A/b.h" 191 #include "B/a.h" 192 193 // CaseSensitive (previously true) 194 #include "A/B.h" 195 #include "A/b.h" 196 #include "B/A.h" 197 #include "B/a.h" 198 #include "a/b.h" 199 200 // CaseInsensitive 201 #include "A/B.h" 202 #include "A/b.h" 203 #include "a/b.h" 204 #include "B/A.h" 205 #include "B/a.h" 206 207- ``BasedOnStyle: InheritParentConfig`` allows to use the ``.clang-format`` of 208 the parent directories to overwrite only parts of it. 209 210- Option ``IndentAccessModifiers`` has been added to be able to give access 211 modifiers their own indentation level inside records. 212 213- Option ``ShortNamespaceLines`` has been added to give better control 214 over ``FixNamespaceComments`` when determining a namespace length. 215 216- Support for Whitesmiths has been improved, with fixes for ``namespace`` blocks 217 and ``case`` blocks and labels. 218 219libclang 220-------- 221 222- ... 223 224Static Analyzer 225--------------- 226 227- ... 228 229.. _release-notes-ubsan: 230 231Undefined Behavior Sanitizer (UBSan) 232------------------------------------ 233 234Core Analysis Improvements 235========================== 236 237- ... 238 239New Issues Found 240================ 241 242- ... 243 244Python Binding Changes 245---------------------- 246 247The following methods have been added: 248 249- ... 250 251Significant Known Problems 252========================== 253 254Additional Information 255====================== 256 257A wide variety of additional information is available on the `Clang web 258page <https://clang.llvm.org/>`_. The web page contains versions of the 259API documentation which are up-to-date with the Git version of 260the source code. You can access versions of these documents specific to 261this release by going into the "``clang/docs/``" directory in the Clang 262tree. 263 264If you have any questions or comments about Clang, please feel free to 265contact us via the `mailing 266list <https://lists.llvm.org/mailman/listinfo/cfe-dev>`_. 267