blob: 033cb308d36cb9d9de389a0e02478c97ff941f98 [file] [log] [blame]
Sean Silva28c1f752013-01-02 22:05:33 +00001=====================================
Bill Wendlinga03209e2013-06-04 06:17:46 +00002Clang 3.4 (In-Progress) Release Notes
Sean Silva28c1f752013-01-02 22:05:33 +00003=====================================
Sean Silvadebc0182012-12-23 01:19:35 +00004
5.. contents::
6 :local:
7 :depth: 2
8
Sean Silvadebc0182012-12-23 01:19:35 +00009Introduction
10============
11
12This document contains the release notes for the Clang C/C++/Objective-C
Bill Wendlinga03209e2013-06-04 06:17:46 +000013frontend, part of the LLVM Compiler Infrastructure, release 3.4. Here we
Sean Silvadebc0182012-12-23 01:19:35 +000014describe the status of Clang in some detail, including major
15improvements from the previous release and new feature work. For the
16general LLVM release notes, see `the LLVM
17documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM
18releases may be downloaded from the `LLVM releases web
19site <http://llvm.org/releases/>`_.
20
21For more information about Clang or LLVM, including information about
22the latest release, please check out the main please see the `Clang Web
23Site <http://clang.llvm.org>`_ or the `LLVM Web
24Site <http://llvm.org>`_.
25
26Note that if you are reading this file from a Subversion checkout or the
27main Clang web page, this document applies to the *next* release, not
28the current one. To see the release notes for a specific release, please
29see the `releases page <http://llvm.org/releases/>`_.
30
Bill Wendlinga03209e2013-06-04 06:17:46 +000031What's New in Clang 3.4?
Sean Silvadebc0182012-12-23 01:19:35 +000032========================
33
34Some of the major new features and improvements to Clang are listed
35here. Generic improvements to Clang as a whole or to its underlying
36infrastructure are described first, followed by language-specific
37sections with improvements to Clang's support for those languages.
38
Chandler Carruthfe1088d2013-11-07 00:26:32 +000039Last release which will build as C++98
40--------------------------------------
41
42This is expected to be the last release of Clang which compiles using a C++98
43toolchain. We expect to start using some C++11 features in Clang starting after
44this release. That said, we are committed to supporting a reasonable set of
45modern C++ toolchains as the host compiler on all of the platforms. This will
46at least include Visual Studio 2012 on Windows, and Clang 3.1 or GCC 4.7.x on
47Mac and Linux. The final set of compilers (and the C++11 features they support)
48is not set in stone, but we wanted users of Clang to have a heads up that the
49next release will involve a substantial change in the host toolchain
50requirements.
51
52Note that this change is part of a change for the entire LLVM project, not just
53Clang.
54
Sean Silvadebc0182012-12-23 01:19:35 +000055Major New Features
56------------------
57
58Improvements to Clang's diagnostics
59^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
60
61Clang's diagnostics are constantly being improved to catch more issues,
62explain them more clearly, and provide more accurate source information
Bill Wendlinga03209e2013-06-04 06:17:46 +000063about them. The improvements since the 3.3 release include:
Sean Silvadebc0182012-12-23 01:19:35 +000064
Richard Trieu06907e12013-12-03 01:35:18 +000065- -Wheader-guard warns on mismatches between the #ifndef and #define lines
66 in a header guard.
67- -Wlogical-not-parentheses warns when a logical not ('!') only applies to the
68 left-hand side of a comparison. This warning is part of -Wparentheses.
69- Boolean increment, a deprecated feature, has own warning flag
70 -Wdeprecated-increment-bool, and is still part of -Wdeprecated.
71- Clang errors on builtin enum increments and decrements.
72- -Wloop-analysis now warns on for-loops which have the same increment or
73 decrement in the loop header as the last statement in the loop.
74- -Wuninitialized now performs checking across field initializers to detect
75 when one field in used uninitialized in another field initialization.
76- Clang can detect initializer list use inside a macro and suggest parentheses
77 if possible to fix.
Kaelyn Uhrainb4ec8b12013-12-04 02:25:41 +000078- Many improvements to Clang's typo correction facilities, such as:
79 + Adding global namespace qualifiers so that corrections can refer to shadowed
80 or otherwise ambiguous or unreachable namespaces.
81 + Including accessible class members in the set of typo correction candidates,
82 so that corrections requiring a class name in the name specifier are now
83 possible.
84 + Allowing typo corrections that involve removing a name specifier.
85 + In some situations, correcting function names when a function was given the
86 wrong number of arguments, including situations where the original function
87 name was correct but was shadowed by a lexically closer function with the
88 same name yet took a different number of arguments.
89 + Offering typo suggestions for 'using' declarations.
90 + Providing better diagnostics and fixit suggestions in more situations when
91 a '->' was used instead of '.' or vice versa.
92 + Providing more relevant suggestions for typos followed by '.' or '='.
93 + Various performance improvements when searching for typo correction
94 candidates.
Sean Silvadebc0182012-12-23 01:19:35 +000095
Sean Silvadebc0182012-12-23 01:19:35 +000096New Compiler Flags
97------------------
98
Rafael Espindola3b0f62b2013-08-23 21:49:00 +000099- Clang no longer special cases -O4 to enable lto. Explicitly pass -flto to
100 enable it.
Sylvestre Ledru762e5672013-11-18 13:23:07 +0000101- Clang no longer fails on >= -O5. Uses -O3 instead.
102- Command line "clang -O3 -flto a.c -c" and "clang -emit-llvm a.c -c"
Shuxin Yang8b498542013-08-23 22:01:03 +0000103 are no longer equivalent.
Rafael Espindola3dd4dd62013-10-16 16:32:17 +0000104- Clang now errors on unknown -m flags (``-munknown-to-clang``),
105 unknown -f flags (``-funknown-to-clang``) and unknown
106 options (``-what-is-this``).
Sean Silvadebc0182012-12-23 01:19:35 +0000107
108C Language Changes in Clang
109---------------------------
110
Michael Gottesman98d1ec12013-06-20 23:28:10 +0000111- Added new checked arithmetic builtins for security critical applications.
112
Sean Silvadebc0182012-12-23 01:19:35 +0000113C11 Feature Support
114^^^^^^^^^^^^^^^^^^^
115
116...
117
118C++ Language Changes in Clang
119-----------------------------
120
Eli Friedman65400522013-07-20 01:06:31 +0000121- Fixed an ABI regression, introduced in Clang 3.2, which affected
122 member offsets for classes inheriting from certain classes with tail padding.
123 See PR16537.
124
Bill Wendlinga03209e2013-06-04 06:17:46 +0000125- ...
Rafael Espindola40db5152013-04-09 12:51:24 +0000126
Sean Silvadebc0182012-12-23 01:19:35 +0000127C++11 Feature Support
128^^^^^^^^^^^^^^^^^^^^^
129
130...
131
132Objective-C Language Changes in Clang
133-------------------------------------
134
135...
136
Erik Schnettera87219b2013-11-11 06:36:33 +0000137OpenCL C Language Changes in Clang
138----------------------------------
139
140- OpenCL C "long" now always has a size of 64 bit, and all OpenCL C
141 types are aligned as specified in the OpenCL C standard. Also,
142 "char" is now always signed.
143
Sean Silvadebc0182012-12-23 01:19:35 +0000144Internal API Changes
145--------------------
146
Bill Wendlinga03209e2013-06-04 06:17:46 +0000147These are major API changes that have happened since the 3.3 release of
Sean Silvadebc0182012-12-23 01:19:35 +0000148Clang. If upgrading an external codebase that uses Clang as a library,
149this section should help get you past the largest hurdles of upgrading.
150
Hans Wennborg0437e0d2013-05-20 14:53:06 +0000151Wide Character Types
152^^^^^^^^^^^^^^^^^^^^
153
154The ASTContext class now keeps track of two different types for wide character
155types: WCharTy and WideCharTy. WCharTy represents the built-in wchar_t type
156available in C++. WideCharTy is the type used for wide character literals; in
157C++ it is the same as WCharTy, but in C99, where wchar_t is a typedef, it is an
158integer type.
159
Sean Silvadebc0182012-12-23 01:19:35 +0000160...
161
Ted Kremenek230fc372013-04-24 07:33:52 +0000162libclang
163--------
164
Bill Wendlinga03209e2013-06-04 06:17:46 +0000165...
Ted Kremenek230fc372013-04-24 07:33:52 +0000166
Anna Zaks08741a02013-04-25 23:14:38 +0000167Static Analyzer
Ted Kremenek1377a462013-04-26 00:01:34 +0000168---------------
Anna Zaks08741a02013-04-25 23:14:38 +0000169
Ted Kremenek1377a462013-04-26 00:01:34 +0000170The static analyzer (which contains additional code checking beyond compiler
171warnings) has improved significantly in both in the core analysis engine and
172also in the kinds of issues it can find.
173
Daniel Jasper87ddfdd2013-12-11 14:41:33 +0000174Clang Format
175------------
176
177Clang now includes a new tool ``clang-format`` which can be used to
178automatically format C, C++ and Objective-C source code. ``clang-format``
179automatically chooses linebreaks and indentation and can be easily integrated
180into editors, IDEs and version control systems. It supports several pre-defined
181styles as well as precise style control using a multitude of formatting
182options. ``clang-format`` itself is just a thin wrapper around a library which
183can also be used directly from code refactoring and code translation tools.
184More information can be found on `Clang Format's
185site <http://clang.llvm.org/docs/ClangFormat.html>`_.
186
Hans Wennborga6c18502013-12-02 22:38:55 +0000187Windows Support
188---------------
189
190- `clang-cl <UsersManual.html#clang-cl>` provides a new driver mode that is
191 designed for compatibility with Visual Studio's compiler, cl.exe. This driver
Hans Wennborg70cb8382013-12-09 20:00:25 +0000192 mode makes Clang accept the same kind of command-line options as cl.exe. The
193 installer will attempt to expose clang-cl in any Visual Studio installations
194 on the system as a Platform Toolset, e.g. "LLVM-vs2012". clang-cl targets the
195 Microsoft ABI by default. Please note that this driver mode and compatibility
196 with the MS ABI is highly experimental.
Hans Wennborga6c18502013-12-02 22:38:55 +0000197
Ted Kremenek1377a462013-04-26 00:01:34 +0000198Core Analysis Improvements
199==========================
200
Bill Wendlinga03209e2013-06-04 06:17:46 +0000201- ...
Ted Kremenek1377a462013-04-26 00:01:34 +0000202
203New Issues Found
204================
205
Bill Wendlinga03209e2013-06-04 06:17:46 +0000206- ...
Anna Zaks08741a02013-04-25 23:14:38 +0000207
Sean Silvadebc0182012-12-23 01:19:35 +0000208Python Binding Changes
209----------------------
210
211The following methods have been added:
212
213- ...
214
215Significant Known Problems
216==========================
217
218Additional Information
219======================
220
221A wide variety of additional information is available on the `Clang web
222page <http://clang.llvm.org/>`_. The web page contains versions of the
223API documentation which are up-to-date with the Subversion version of
224the source code. You can access versions of these documents specific to
225this release by going into the "``clang/docs/``" directory in the Clang
226tree.
227
228If you have any questions or comments about Clang, please feel free to
229contact us via the `mailing
230list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_.