blob: 53ee651910e03f1eab36107bbb4eab2d491f54b2 [file] [log] [blame]
Hans Wennborg60d06bf2016-07-18 18:05:19 +00001=======================================
Hans Wennborg7b852ea2018-01-03 15:49:39 +00002Clang 7.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 Wennborg7b852ea2018-01-03 15:49:39 +000013 These are in-progress notes for the upcoming Clang 7 release.
Hans Wennborg189f1f32017-02-09 23:26:34 +000014 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 Wennborg7b852ea2018-01-03 15:49:39 +000021frontend, part of the LLVM Compiler Infrastructure, release 7.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
Hans Wennborgd878ca82017-08-30 18:35:44 +000029For more information about Clang or LLVM, including information about the
30latest release, please see the `Clang Web Site <http://clang.llvm.org>`_ or the
31`LLVM Web Site <http://llvm.org>`_.
Sean Silvafe251442012-12-23 01:19:35 +000032
33Note that if you are reading this file from a Subversion 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 <http://llvm.org/releases/>`_.
37
Hans Wennborg7b852ea2018-01-03 15:49:39 +000038What's New in Clang 7.0.0?
Hans Wennborg60d06bf2016-07-18 18:05:19 +000039==========================
Sean Silvafe251442012-12-23 01:19:35 +000040
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
Hans Wennborg60d06bf2016-07-18 18:05:19 +000049- ...
Rafael Espindola34970692013-12-12 16:07:11 +000050
Sean Silvafe251442012-12-23 01:19:35 +000051Improvements to Clang's diagnostics
52^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
53
Roman Lebedevc9977f32018-03-16 18:01:07 +000054- ``-Wc++98-compat-extra-semi`` is a new flag, which was previously inseparable
55 from ``-Wc++98-compat-pedantic``. The latter still controls the new flag.
56
57- ``-Wextra-semi`` now also controls ``-Wc++98-compat-extra-semi``.
58 Please do note that if you pass ``-Wno-c++98-compat-pedantic``, it implies
59 ``-Wno-c++98-compat-extra-semi``, so if you want that diagnostic, you need
60 to explicitly re-enable it (e.g. by appending ``-Wextra-semi``).
Roman Lebedev809df342017-10-26 13:18:14 +000061
Erich Keaneb0c78092017-07-26 18:04:45 +000062Non-comprehensive list of changes in this release
63-------------------------------------------------
64
Richard Smithbb0ad1e2018-04-03 18:28:13 +000065- Clang binary and libraries have been renamed from 7.0 to 7.
66 For example, the ``clang`` binary will be called ``clang-7``
67 instead of ``clang-7.0``.
Sylvestre Ledrua8b717f2018-03-29 10:05:46 +000068
Richard Smithb6070db2018-04-05 18:55:37 +000069- Clang implements a collection of recent fixes to the C++ standard's definition
70 of "standard-layout". In particular, a class is only considered to be
71 standard-layout if all base classes and the first data member (or bit-field)
72 can be laid out at offset zero.
73
Hans Wennborg7b852ea2018-01-03 15:49:39 +000074- ...
Alex Lorenzd8ec4312017-12-14 19:22:02 +000075
Sean Silvafe251442012-12-23 01:19:35 +000076New Compiler Flags
77------------------
78
Hans Wennborg7b852ea2018-01-03 15:49:39 +000079- ...
Aaron Ballman2b3bc4c2017-10-21 16:45:08 +000080
Joerg Sonnenbergerc9199682017-07-01 21:36:21 +000081Deprecated Compiler Flags
82-------------------------
83
84The following options are deprecated and ignored. They will be removed in
85future versions of Clang.
86
Hans Wennborgfbb21e02017-07-19 14:14:07 +000087- ...
Joerg Sonnenbergerc9199682017-07-01 21:36:21 +000088
Yuka Takahashiba900ab2018-03-07 11:34:02 +000089Modified Compiler Flags
90-----------------------
91
Sylvestre Ledrue0b46382018-04-04 09:38:22 +000092- Before Clang 7, we prepended the `#` character to the `--autocomplete`
Eugene Zelenkod02f3e92018-03-08 01:37:39 +000093 argument to enable cc1 flags. For example, when the `-cc1` or `-Xclang` flag
94 is in the :program:`clang` invocation, the shell executed
Sylvestre Ledrue0b46382018-04-04 09:38:22 +000095 `clang --autocomplete=#-<flag to be completed>`. Clang 7 now requires the
Eugene Zelenkod02f3e92018-03-08 01:37:39 +000096 whole invocation including all flags to be passed to the `--autocomplete` like
97 this: `clang --autocomplete=-cc1,-xc++,-fsyn`.
Yuka Takahashiba900ab2018-03-07 11:34:02 +000098
Tyler Nowickidb2668a2014-06-18 00:51:32 +000099New Pragmas in Clang
100-----------------------
101
Rafael Espindolaaf742502014-08-22 21:59:11 +0000102Clang now supports the ...
Mark Heffernanbd26f5e2014-07-21 18:08:34 +0000103
Paul Robinsonf9ede1c2016-07-18 17:19:12 +0000104
105Attribute Changes in Clang
106--------------------------
107
Erich Keaneace10a22018-01-08 23:36:29 +0000108- Clang now supports function multiversioning with attribute 'target' on ELF
109 based x86/x86-64 environments by using indirect functions. This implementation
110 has a few minor limitations over the GCC implementation for the sake of AST
111 sanity, however it is otherwise compatible with existing code using this
112 feature for GCC. Consult the documentation for the target attribute for more
113 information.
Eugene Zelenkod02f3e92018-03-08 01:37:39 +0000114
Hans Wennborgfbb21e02017-07-19 14:14:07 +0000115- ...
Paul Robinsonf9ede1c2016-07-18 17:19:12 +0000116
Hans Wennborg02dc0002014-08-05 00:21:23 +0000117Windows Support
118---------------
119
Rafael Espindolaaf742502014-08-22 21:59:11 +0000120Clang's support for building native Windows programs ...
Hans Wennborg02dc0002014-08-05 00:21:23 +0000121
122
Renato Golinf2fcddb2013-12-13 09:27:34 +0000123C Language Changes in Clang
124---------------------------
125
Hans Wennborg60d06bf2016-07-18 18:05:19 +0000126- ...
Pirama Arumuga Nainarc85c8532016-06-21 16:09:30 +0000127
Renato Golinf2fcddb2013-12-13 09:27:34 +0000128...
129
Sean Silvafe251442012-12-23 01:19:35 +0000130C11 Feature Support
131^^^^^^^^^^^^^^^^^^^
132
133...
134
135C++ Language Changes in Clang
136-----------------------------
137
Hans Wennborg7b852ea2018-01-03 15:49:39 +0000138- ...
Richard Smith8eb53c82016-05-05 18:40:37 +0000139
140C++1z Feature Support
Sean Silvafe251442012-12-23 01:19:35 +0000141^^^^^^^^^^^^^^^^^^^^^
142
143...
144
145Objective-C Language Changes in Clang
146-------------------------------------
147
148...
149
Erik Schnetter489700d2013-11-11 06:36:33 +0000150OpenCL C Language Changes in Clang
151----------------------------------
152
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000153...
Erik Schnetter489700d2013-11-11 06:36:33 +0000154
Alexey Bataev44b67502016-05-31 11:17:08 +0000155OpenMP Support in Clang
156----------------------------------
157
Hans Wennborg7b852ea2018-01-03 15:49:39 +0000158- ...
Alexey Bataev44b67502016-05-31 11:17:08 +0000159
Sean Silvafe251442012-12-23 01:19:35 +0000160Internal API Changes
161--------------------
162
Hans Wennborg7b852ea2018-01-03 15:49:39 +0000163These are major API changes that have happened since the 6.0.0 release of
Sean Silvafe251442012-12-23 01:19:35 +0000164Clang. If upgrading an external codebase that uses Clang as a library,
165this section should help get you past the largest hurdles of upgrading.
166
Vedant Kumar5fb00e42016-07-27 23:01:55 +0000167- ...
Richard Smitha0334a92015-05-14 00:22:12 +0000168
Aaron Ballmancdc43af2015-09-17 13:47:22 +0000169AST Matchers
170------------
Aaron Ballmancdc43af2015-09-17 13:47:22 +0000171
Hans Wennborg7b852ea2018-01-03 15:49:39 +0000172- ...
Sylvestre Ledru72e3fa72017-03-14 09:43:55 +0000173
174clang-format
175------------
176
Hans Wennborg7b852ea2018-01-03 15:49:39 +0000177- ...
Sylvestre Ledruc9410392017-12-05 09:23:47 +0000178
Ted Kremenek3a2291b2013-04-24 07:33:52 +0000179libclang
180--------
181
Bill Wendling61f44cc2013-06-04 06:17:46 +0000182...
Ted Kremenek3a2291b2013-04-24 07:33:52 +0000183
Sylvestre Ledruea49d3a2016-08-06 20:23:54 +0000184
Anna Zaksb6219a92013-04-25 23:14:38 +0000185Static Analyzer
Ted Kremenek004e8232013-04-26 00:01:34 +0000186---------------
Anna Zaksb6219a92013-04-25 23:14:38 +0000187
Hans Wennborg7b852ea2018-01-03 15:49:39 +0000188- ...
Roman Lebedev88b56ca2017-11-30 09:18:35 +0000189
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000190...
Ted Kremenek004e8232013-04-26 00:01:34 +0000191
Vedant Kumar840c2c72017-06-13 02:52:31 +0000192Undefined Behavior Sanitizer (UBSan)
193------------------------------------
194
Hans Wennborg7b852ea2018-01-03 15:49:39 +0000195* ...
Vedant Kumar840c2c72017-06-13 02:52:31 +0000196
Ted Kremenek004e8232013-04-26 00:01:34 +0000197Core Analysis Improvements
198==========================
199
Bill Wendling61f44cc2013-06-04 06:17:46 +0000200- ...
Ted Kremenek004e8232013-04-26 00:01:34 +0000201
202New Issues Found
203================
204
Bill Wendling61f44cc2013-06-04 06:17:46 +0000205- ...
Anna Zaksb6219a92013-04-25 23:14:38 +0000206
Sean Silvafe251442012-12-23 01:19:35 +0000207Python Binding Changes
208----------------------
209
210The following methods have been added:
211
212- ...
213
214Significant Known Problems
215==========================
216
217Additional Information
218======================
219
220A wide variety of additional information is available on the `Clang web
221page <http://clang.llvm.org/>`_. The web page contains versions of the
222API documentation which are up-to-date with the Subversion version of
223the source code. You can access versions of these documents specific to
224this release by going into the "``clang/docs/``" directory in the Clang
225tree.
226
227If you have any questions or comments about Clang, please feel free to
228contact us via the `mailing
Tanya Lattner4a08e932015-08-05 03:55:23 +0000229list <http://lists.llvm.org/mailman/listinfo/cfe-dev>`_.