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