1======================================= 2Clang 5.0.0 (In-Progress) Release Notes 3======================================= 4 5.. contents:: 6 :local: 7 :depth: 2 8 9Written by the `LLVM Team <http://llvm.org/>`_ 10 11.. warning:: 12 13 These are in-progress notes for the upcoming Clang 5 release. 14 Release notes for previous releases can be found on 15 `the Download Page <http://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 5.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 <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM 26releases may be downloaded from the `LLVM releases web 27site <http://llvm.org/releases/>`_. 28 29For more information about Clang or LLVM, including information about 30the latest release, please check out the main please see the `Clang Web 31Site <http://clang.llvm.org>`_ or the `LLVM Web 32Site <http://llvm.org>`_. 33 34Note that if you are reading this file from a Subversion checkout or the 35main Clang web page, this document applies to the *next* release, not 36the current one. To see the release notes for a specific release, please 37see the `releases page <http://llvm.org/releases/>`_. 38 39What's New in Clang 5.0.0? 40========================== 41 42Some of the major new features and improvements to Clang are listed 43here. Generic improvements to Clang as a whole or to its underlying 44infrastructure are described first, followed by language-specific 45sections with improvements to Clang's support for those languages. 46 47Major New Features 48------------------ 49 50- ... 51 52Improvements to Clang's diagnostics 53^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 54 55- -Wunused-lambda-capture warns when a variable explicitly captured 56 by a lambda is not used in the body of the lambda. 57 58New Compiler Flags 59------------------ 60 61The option .... 62 63New Pragmas in Clang 64----------------------- 65 66Clang now supports the ... 67 68 69Attribute Changes in Clang 70-------------------------- 71 72- ... 73 74Windows Support 75--------------- 76 77Clang's support for building native Windows programs ... 78 79 80C Language Changes in Clang 81--------------------------- 82 83- ... 84 85... 86 87C11 Feature Support 88^^^^^^^^^^^^^^^^^^^ 89 90... 91 92C++ Language Changes in Clang 93----------------------------- 94 95... 96 97C++1z Feature Support 98^^^^^^^^^^^^^^^^^^^^^ 99 100... 101 102Objective-C Language Changes in Clang 103------------------------------------- 104 105... 106 107OpenCL C Language Changes in Clang 108---------------------------------- 109 110... 111 112OpenMP Support in Clang 113---------------------------------- 114 115... 116 117Internal API Changes 118-------------------- 119 120These are major API changes that have happened since the 4.0.0 release of 121Clang. If upgrading an external codebase that uses Clang as a library, 122this section should help get you past the largest hurdles of upgrading. 123 124- ... 125 126AST Matchers 127------------ 128 129... 130 131 132clang-format 133------------ 134 135* Option **BreakBeforeInheritanceComma** added to break before ``:`` and ``,`` in case of 136 multiple inheritance in a class declaration. Enabled by default in the Mozilla coding style. 137 138 +---------------------+----------------------------------------+ 139 | true | false | 140 +=====================+========================================+ 141 | .. code-block:: c++ | .. code-block:: c++ | 142 | | | 143 | class MyClass | class MyClass : public X, public Y { | 144 | : public X | }; | 145 | , public Y { | | 146 | }; | | 147 +---------------------+----------------------------------------+ 148 149* Align block comment decorations. 150 151 +----------------------+---------------------+ 152 | Before | After | 153 +======================+=====================+ 154 | .. code-block:: c++ | .. code-block:: c++ | 155 | | | 156 | /* line 1 | /* line 1 | 157 | * line 2 | * line 2 | 158 | */ | */ | 159 +----------------------+---------------------+ 160 161* The :doc:`ClangFormatStyleOptions` documentation provides detailed examples for most options. 162 163* Namespace end comments are now added or updated automatically. 164 165 +---------------------+---------------------+ 166 | Before | After | 167 +=====================+=====================+ 168 | .. code-block:: c++ | .. code-block:: c++ | 169 | | | 170 | namespace A { | namespace A { | 171 | int i; | int i; | 172 | int j; | int j; | 173 | } | } | 174 +---------------------+---------------------+ 175 176* Comment reflow support added. Overly long comment lines will now be reflown with the rest of 177 the paragraph instead of just broken. Option **ReflowComments** added and enabled by default. 178 179libclang 180-------- 181 182... 183 184 185Static Analyzer 186--------------- 187 188... 189 190Undefined Behavior Sanitizer (UBSan) 191------------------------------------ 192 193- The Undefined Behavior Sanitizer has a new check for pointer overflow. This 194 check is on by default. The flag to control this functionality is 195 -fsanitize=pointer-overflow. 196 197 Pointer overflow is an indicator of undefined behavior: when a pointer 198 indexing expression wraps around the address space, or produces other 199 unexpected results, its result may not point to a valid object. 200 201- UBSan has several new checks which detect violations of nullability 202 annotations. These checks are off by default. The flag to control this group 203 of checks is -fsanitize=nullability. The checks can be individially enabled 204 by -fsanitize=nullability-arg (which checks calls), 205 -fsanitize=nullability-assign (which checks assignments), and 206 -fsanitize=nullability-return (which checks return statements). 207 208- UBSan can now detect invalid loads from bitfields and from ObjC BOOLs. 209 210- UBSan can now avoid emitting unnecessary type checks in C++ class methods and 211 in several other cases where the result is known at compile-time. UBSan can 212 also avoid emitting unnecessary overflow checks in arithmetic expressions 213 with promoted integer operands. 214 215Core Analysis Improvements 216========================== 217 218- ... 219 220New Issues Found 221================ 222 223- ... 224 225Python Binding Changes 226---------------------- 227 228The following methods have been added: 229 230- ... 231 232Significant Known Problems 233========================== 234 235Additional Information 236====================== 237 238A wide variety of additional information is available on the `Clang web 239page <http://clang.llvm.org/>`_. The web page contains versions of the 240API documentation which are up-to-date with the Subversion version of 241the source code. You can access versions of these documents specific to 242this release by going into the "``clang/docs/``" directory in the Clang 243tree. 244 245If you have any questions or comments about Clang, please feel free to 246contact us via the `mailing 247list <http://lists.llvm.org/mailman/listinfo/cfe-dev>`_. 248