blob: 3dcca036ebde0f78c25b3b88ac759ce2d49b5e55 [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
65- ...
66
Sean Silvadebc0182012-12-23 01:19:35 +000067New Compiler Flags
68------------------
69
Rafael Espindola3b0f62b2013-08-23 21:49:00 +000070- Clang no longer special cases -O4 to enable lto. Explicitly pass -flto to
71 enable it.
Sylvestre Ledru762e5672013-11-18 13:23:07 +000072- Clang no longer fails on >= -O5. Uses -O3 instead.
73- Command line "clang -O3 -flto a.c -c" and "clang -emit-llvm a.c -c"
Shuxin Yang8b498542013-08-23 22:01:03 +000074 are no longer equivalent.
Rafael Espindola3dd4dd62013-10-16 16:32:17 +000075- Clang now errors on unknown -m flags (``-munknown-to-clang``),
76 unknown -f flags (``-funknown-to-clang``) and unknown
77 options (``-what-is-this``).
Sean Silvadebc0182012-12-23 01:19:35 +000078
79C Language Changes in Clang
80---------------------------
81
Michael Gottesman98d1ec12013-06-20 23:28:10 +000082- Added new checked arithmetic builtins for security critical applications.
83
Sean Silvadebc0182012-12-23 01:19:35 +000084C11 Feature Support
85^^^^^^^^^^^^^^^^^^^
86
87...
88
89C++ Language Changes in Clang
90-----------------------------
91
Eli Friedman65400522013-07-20 01:06:31 +000092- Fixed an ABI regression, introduced in Clang 3.2, which affected
93 member offsets for classes inheriting from certain classes with tail padding.
94 See PR16537.
95
Bill Wendlinga03209e2013-06-04 06:17:46 +000096- ...
Rafael Espindola40db5152013-04-09 12:51:24 +000097
Sean Silvadebc0182012-12-23 01:19:35 +000098C++11 Feature Support
99^^^^^^^^^^^^^^^^^^^^^
100
101...
102
103Objective-C Language Changes in Clang
104-------------------------------------
105
106...
107
Erik Schnettera87219b2013-11-11 06:36:33 +0000108OpenCL C Language Changes in Clang
109----------------------------------
110
111- OpenCL C "long" now always has a size of 64 bit, and all OpenCL C
112 types are aligned as specified in the OpenCL C standard. Also,
113 "char" is now always signed.
114
Sean Silvadebc0182012-12-23 01:19:35 +0000115Internal API Changes
116--------------------
117
Bill Wendlinga03209e2013-06-04 06:17:46 +0000118These are major API changes that have happened since the 3.3 release of
Sean Silvadebc0182012-12-23 01:19:35 +0000119Clang. If upgrading an external codebase that uses Clang as a library,
120this section should help get you past the largest hurdles of upgrading.
121
Hans Wennborg0437e0d2013-05-20 14:53:06 +0000122Wide Character Types
123^^^^^^^^^^^^^^^^^^^^
124
125The ASTContext class now keeps track of two different types for wide character
126types: WCharTy and WideCharTy. WCharTy represents the built-in wchar_t type
127available in C++. WideCharTy is the type used for wide character literals; in
128C++ it is the same as WCharTy, but in C99, where wchar_t is a typedef, it is an
129integer type.
130
Sean Silvadebc0182012-12-23 01:19:35 +0000131...
132
Ted Kremenek230fc372013-04-24 07:33:52 +0000133libclang
134--------
135
Bill Wendlinga03209e2013-06-04 06:17:46 +0000136...
Ted Kremenek230fc372013-04-24 07:33:52 +0000137
Anna Zaks08741a02013-04-25 23:14:38 +0000138Static Analyzer
Ted Kremenek1377a462013-04-26 00:01:34 +0000139---------------
Anna Zaks08741a02013-04-25 23:14:38 +0000140
Ted Kremenek1377a462013-04-26 00:01:34 +0000141The static analyzer (which contains additional code checking beyond compiler
142warnings) has improved significantly in both in the core analysis engine and
143also in the kinds of issues it can find.
144
Hans Wennborga6c18502013-12-02 22:38:55 +0000145Windows Support
146---------------
147
148- `clang-cl <UsersManual.html#clang-cl>` provides a new driver mode that is
149 designed for compatibility with Visual Studio's compiler, cl.exe. This driver
150 mode makes Clang accept the same kind of command-line options as cl.exe.
151 Please note that this mode is still experimental.
152
153
Ted Kremenek1377a462013-04-26 00:01:34 +0000154Core Analysis Improvements
155==========================
156
Bill Wendlinga03209e2013-06-04 06:17:46 +0000157- ...
Ted Kremenek1377a462013-04-26 00:01:34 +0000158
159New Issues Found
160================
161
Bill Wendlinga03209e2013-06-04 06:17:46 +0000162- ...
Anna Zaks08741a02013-04-25 23:14:38 +0000163
Sean Silvadebc0182012-12-23 01:19:35 +0000164Python Binding Changes
165----------------------
166
167The following methods have been added:
168
169- ...
170
171Significant Known Problems
172==========================
173
174Additional Information
175======================
176
177A wide variety of additional information is available on the `Clang web
178page <http://clang.llvm.org/>`_. The web page contains versions of the
179API documentation which are up-to-date with the Subversion version of
180the source code. You can access versions of these documents specific to
181this release by going into the "``clang/docs/``" directory in the Clang
182tree.
183
184If you have any questions or comments about Clang, please feel free to
185contact us via the `mailing
186list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_.