blob: 0f49e3f979c9d35e0e5301da05bb4db98bd0dc51 [file] [log] [blame]
Hans Wennborg60d06bf2016-07-18 18:05:19 +00001=======================================
Hans Wennborg159d6ad2017-01-12 21:55:16 +00002Clang 5.0.0 (In-Progress) Release Notes
Hans Wennborg60d06bf2016-07-18 18:05:19 +00003=======================================
Sean Silvafe251442012-12-23 01:19:35 +00004
5.. contents::
6 :local:
7 :depth: 2
8
9Written by the `LLVM Team <http://llvm.org/>`_
10
11.. warning::
12
Hans Wennborg189f1f32017-02-09 23:26:34 +000013 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>`_.
Sean Silvafe251442012-12-23 01:19:35 +000016
17Introduction
18============
19
20This document contains the release notes for the Clang C/C++/Objective-C
Hans Wennborg159d6ad2017-01-12 21:55:16 +000021frontend, part of the LLVM Compiler Infrastructure, release 5.0.0. Here we
Sean Silvafe251442012-12-23 01:19:35 +000022describe 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
Hans Wennborg159d6ad2017-01-12 21:55:16 +000039What's New in Clang 5.0.0?
Hans Wennborg60d06bf2016-07-18 18:05:19 +000040==========================
Sean Silvafe251442012-12-23 01:19:35 +000041
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
Hans Wennborg60d06bf2016-07-18 18:05:19 +000050- ...
Rafael Espindola34970692013-12-12 16:07:11 +000051
Sean Silvafe251442012-12-23 01:19:35 +000052Improvements to Clang's diagnostics
53^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
54
Malcolm Parsonsc6e45832017-01-13 18:55:32 +000055- -Wunused-lambda-capture warns when a variable explicitly captured
56 by a lambda is not used in the body of the lambda.
Sean Silvafe251442012-12-23 01:19:35 +000057
Sean Silvafe251442012-12-23 01:19:35 +000058New Compiler Flags
59------------------
60
Sylvestre Ledruf6b48972016-11-12 10:37:17 +000061The option ....
62
Joerg Sonnenbergerc9199682017-07-01 21:36:21 +000063Deprecated Compiler Flags
64-------------------------
65
66The following options are deprecated and ignored. They will be removed in
67future versions of Clang.
68
69- -fslp-vectorize-aggressive used to enable the BB vectorizing pass. They have been superseeded
70 by the normal SLP vectorizer.
71- -fno-slp-vectorize-aggressive used to be the default behavior of clang.
72
Tyler Nowickidb2668a2014-06-18 00:51:32 +000073New Pragmas in Clang
74-----------------------
75
Rafael Espindolaaf742502014-08-22 21:59:11 +000076Clang now supports the ...
Mark Heffernanbd26f5e2014-07-21 18:08:34 +000077
Paul Robinsonf9ede1c2016-07-18 17:19:12 +000078
79Attribute Changes in Clang
80--------------------------
81
Hans Wennborg60d06bf2016-07-18 18:05:19 +000082- ...
Paul Robinsonf9ede1c2016-07-18 17:19:12 +000083
Hans Wennborg02dc0002014-08-05 00:21:23 +000084Windows Support
85---------------
86
Rafael Espindolaaf742502014-08-22 21:59:11 +000087Clang's support for building native Windows programs ...
Hans Wennborg02dc0002014-08-05 00:21:23 +000088
89
Renato Golinf2fcddb2013-12-13 09:27:34 +000090C Language Changes in Clang
91---------------------------
92
Hans Wennborg60d06bf2016-07-18 18:05:19 +000093- ...
Pirama Arumuga Nainarc85c8532016-06-21 16:09:30 +000094
Renato Golinf2fcddb2013-12-13 09:27:34 +000095...
96
Sean Silvafe251442012-12-23 01:19:35 +000097C11 Feature Support
98^^^^^^^^^^^^^^^^^^^
99
100...
101
102C++ Language Changes in Clang
103-----------------------------
104
Richard Smith8eb53c82016-05-05 18:40:37 +0000105...
106
107C++1z Feature Support
Sean Silvafe251442012-12-23 01:19:35 +0000108^^^^^^^^^^^^^^^^^^^^^
109
110...
111
112Objective-C Language Changes in Clang
113-------------------------------------
114
115...
116
Erik Schnetter489700d2013-11-11 06:36:33 +0000117OpenCL C Language Changes in Clang
118----------------------------------
119
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000120...
Erik Schnetter489700d2013-11-11 06:36:33 +0000121
Alexey Bataev44b67502016-05-31 11:17:08 +0000122OpenMP Support in Clang
123----------------------------------
124
Hans Wennborg60d06bf2016-07-18 18:05:19 +0000125...
Alexey Bataev44b67502016-05-31 11:17:08 +0000126
Sean Silvafe251442012-12-23 01:19:35 +0000127Internal API Changes
128--------------------
129
Hans Wennborg159d6ad2017-01-12 21:55:16 +0000130These are major API changes that have happened since the 4.0.0 release of
Sean Silvafe251442012-12-23 01:19:35 +0000131Clang. If upgrading an external codebase that uses Clang as a library,
132this section should help get you past the largest hurdles of upgrading.
133
Vedant Kumar5fb00e42016-07-27 23:01:55 +0000134- ...
Richard Smitha0334a92015-05-14 00:22:12 +0000135
Aaron Ballmancdc43af2015-09-17 13:47:22 +0000136AST Matchers
137------------
Aaron Ballmancdc43af2015-09-17 13:47:22 +0000138
139...
140
Sylvestre Ledru72e3fa72017-03-14 09:43:55 +0000141
142clang-format
143------------
144
145* Option **BreakBeforeInheritanceComma** added to break before ``:`` and ``,`` in case of
146 multiple inheritance in a class declaration. Enabled by default in the Mozilla coding style.
147
Jonathan Roelofs335777b2017-03-20 17:07:49 +0000148 +---------------------+----------------------------------------+
149 | true | false |
150 +=====================+========================================+
151 | .. code-block:: c++ | .. code-block:: c++ |
152 | | |
153 | class MyClass | class MyClass : public X, public Y { |
154 | : public X | }; |
155 | , public Y { | |
156 | }; | |
157 +---------------------+----------------------------------------+
Sylvestre Ledru72e3fa72017-03-14 09:43:55 +0000158
Krasimir Georgiev18f4aed2017-03-14 10:34:39 +0000159* Align block comment decorations.
Sylvestre Ledru72e3fa72017-03-14 09:43:55 +0000160
Jonathan Roelofs335777b2017-03-20 17:07:49 +0000161 +----------------------+---------------------+
162 | Before | After |
163 +======================+=====================+
164 | .. code-block:: c++ | .. code-block:: c++ |
165 | | |
166 | /* line 1 | /* line 1 |
167 | * line 2 | * line 2 |
168 | */ | */ |
169 +----------------------+---------------------+
Sylvestre Ledru72e3fa72017-03-14 09:43:55 +0000170
Krasimir Georgiev18f4aed2017-03-14 10:34:39 +0000171* The :doc:`ClangFormatStyleOptions` documentation provides detailed examples for most options.
172
173* Namespace end comments are now added or updated automatically.
174
Jonathan Roelofs335777b2017-03-20 17:07:49 +0000175 +---------------------+---------------------+
176 | Before | After |
177 +=====================+=====================+
178 | .. code-block:: c++ | .. code-block:: c++ |
179 | | |
180 | namespace A { | namespace A { |
181 | int i; | int i; |
182 | int j; | int j; |
183 | } | } |
184 +---------------------+---------------------+
Krasimir Georgiev18f4aed2017-03-14 10:34:39 +0000185
186* Comment reflow support added. Overly long comment lines will now be reflown with the rest of
187 the paragraph instead of just broken. Option **ReflowComments** added and enabled by default.
Sylvestre Ledru72e3fa72017-03-14 09:43:55 +0000188
Ted Kremenek3a2291b2013-04-24 07:33:52 +0000189libclang
190--------
191
Bill Wendling61f44cc2013-06-04 06:17:46 +0000192...
Ted Kremenek3a2291b2013-04-24 07:33:52 +0000193
Sylvestre Ledruea49d3a2016-08-06 20:23:54 +0000194
Anna Zaksb6219a92013-04-25 23:14:38 +0000195Static Analyzer
Ted Kremenek004e8232013-04-26 00:01:34 +0000196---------------
Anna Zaksb6219a92013-04-25 23:14:38 +0000197
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000198...
Ted Kremenek004e8232013-04-26 00:01:34 +0000199
Vedant Kumar840c2c72017-06-13 02:52:31 +0000200Undefined Behavior Sanitizer (UBSan)
201------------------------------------
202
203- The Undefined Behavior Sanitizer has a new check for pointer overflow. This
204 check is on by default. The flag to control this functionality is
205 -fsanitize=pointer-overflow.
206
207 Pointer overflow is an indicator of undefined behavior: when a pointer
208 indexing expression wraps around the address space, or produces other
209 unexpected results, its result may not point to a valid object.
210
211- UBSan has several new checks which detect violations of nullability
212 annotations. These checks are off by default. The flag to control this group
213 of checks is -fsanitize=nullability. The checks can be individially enabled
214 by -fsanitize=nullability-arg (which checks calls),
215 -fsanitize=nullability-assign (which checks assignments), and
216 -fsanitize=nullability-return (which checks return statements).
217
218- UBSan can now detect invalid loads from bitfields and from ObjC BOOLs.
219
220- UBSan can now avoid emitting unnecessary type checks in C++ class methods and
221 in several other cases where the result is known at compile-time. UBSan can
222 also avoid emitting unnecessary overflow checks in arithmetic expressions
223 with promoted integer operands.
224
Ted Kremenek004e8232013-04-26 00:01:34 +0000225Core Analysis Improvements
226==========================
227
Bill Wendling61f44cc2013-06-04 06:17:46 +0000228- ...
Ted Kremenek004e8232013-04-26 00:01:34 +0000229
230New Issues Found
231================
232
Bill Wendling61f44cc2013-06-04 06:17:46 +0000233- ...
Anna Zaksb6219a92013-04-25 23:14:38 +0000234
Sean Silvafe251442012-12-23 01:19:35 +0000235Python Binding Changes
236----------------------
237
238The following methods have been added:
239
240- ...
241
242Significant Known Problems
243==========================
244
245Additional Information
246======================
247
248A wide variety of additional information is available on the `Clang web
249page <http://clang.llvm.org/>`_. The web page contains versions of the
250API documentation which are up-to-date with the Subversion version of
251the source code. You can access versions of these documents specific to
252this release by going into the "``clang/docs/``" directory in the Clang
253tree.
254
255If you have any questions or comments about Clang, please feel free to
256contact us via the `mailing
Tanya Lattner4a08e932015-08-05 03:55:23 +0000257list <http://lists.llvm.org/mailman/listinfo/cfe-dev>`_.