blob: 886f7f9c29a298d5dad23850c6152e24d054c0e0 [file] [log] [blame]
Sean Silva28c1f752013-01-02 22:05:33 +00001=====================================
2Clang 3.3 (In-Progress) Release Notes
3=====================================
Sean Silvadebc0182012-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
13 These are in-progress notes for the upcoming Clang 3.3 release. You may
14 prefer the `Clang 3.2 Release Notes
15 <http://llvm.org/releases/3.2/docs/ClangReleaseNotes.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 3.3. 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 3.3?
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
50Improvements to Clang's diagnostics
51^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
52
53Clang's diagnostics are constantly being improved to catch more issues,
54explain them more clearly, and provide more accurate source information
55about them. The improvements since the 3.2 release include:
56
57- ...
58
Jordan Rose992c5922013-02-09 02:12:23 +000059Extended Identifiers: Unicode Support and Universal Character Names
60^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
61
62Clang 3.3 includes support for *extended identifiers* in C99 and C++.
63This feature allows identifiers to contain certain Unicode characters, as
64specified by the active language standard; these characters can be written
65directly in the source file using the UTF-8 encoding, or referred to using
66*universal character names* (``\u00E0``, ``\U000000E0``).
67
Sean Silvadebc0182012-12-23 01:19:35 +000068New Compiler Flags
69------------------
70
71- ...
72
73C Language Changes in Clang
74---------------------------
75
76C11 Feature Support
77^^^^^^^^^^^^^^^^^^^
78
79...
80
81C++ Language Changes in Clang
82-----------------------------
83
Rafael Espindola40db5152013-04-09 12:51:24 +000084- Clang now correctly implements language linkage for functions and variables.
85 This means that, for example, it is now possible to overload static functions
86 declared in an ``extern "C"`` context. For backwards compatibility, an alias
87 with the unmangled name is still emitted if it is the only one and has the
88 ``used`` attribute.
89
Sean Silvadebc0182012-12-23 01:19:35 +000090C++11 Feature Support
91^^^^^^^^^^^^^^^^^^^^^
92
93...
94
95Objective-C Language Changes in Clang
96-------------------------------------
97
98...
99
100Internal API Changes
101--------------------
102
103These are major API changes that have happened since the 3.2 release of
104Clang. If upgrading an external codebase that uses Clang as a library,
105this section should help get you past the largest hurdles of upgrading.
106
David Blaikiea62e5612013-02-23 19:27:10 +0000107Value Casting
108^^^^^^^^^^^^^
109
110Certain type hierarchies (TypeLoc, CFGElement, ProgramPoint, and SVal) were
111misusing the llvm::cast machinery to perform undefined operations. Their APIs
112have been changed to use two member function templates that return values
113instead of pointers or references - "T castAs" and "Optional<T> getAs" (in the
114case of the TypeLoc hierarchy the latter is "T getAs" and you can use the
115boolean testability of a TypeLoc (or its 'validity') to verify that the cast
116succeeded). Essentially all previous 'cast' usage should be replaced with
David Blaikie04ea68c2013-02-23 19:30:31 +0000117'castAs' and 'dyn_cast' should be replaced with 'getAs'. See r175462 for the
118first example of such a change along with many examples of how code was
119migrated to the new API.
Rafael Espindolad2615cc2013-04-03 19:27:57 +0000120
121Storage Class
122^^^^^^^^^^^^^
123
124For each variable and function Clang used to keep the storage class as written
125in the source, the linkage and a semantic storage class. This was a bit
126redundant and the semantic storage class has been removed. The method
127getStorageClass now returns what is written it the source code for that decl.
Sean Silvadebc0182012-12-23 01:19:35 +0000128
Hans Wennborg0437e0d2013-05-20 14:53:06 +0000129Wide Character Types
130^^^^^^^^^^^^^^^^^^^^
131
132The ASTContext class now keeps track of two different types for wide character
133types: WCharTy and WideCharTy. WCharTy represents the built-in wchar_t type
134available in C++. WideCharTy is the type used for wide character literals; in
135C++ it is the same as WCharTy, but in C99, where wchar_t is a typedef, it is an
136integer type.
137
Sean Silvadebc0182012-12-23 01:19:35 +0000138...
139
Ted Kremenek230fc372013-04-24 07:33:52 +0000140libclang
141--------
142
143The clang_CXCursorSet_contains() function previously incorrectly returned 0
144if it contained a CXCursor, contrary to what the documentation stated. This
145has been fixed so that the function returns a non-zero value if the set
146contains a cursor. This is API breaking change, but matches the intended
147original behavior. Moreover, this also fixes the issue of an invalid CXCursorSet
148appearing to contain any CXCursor.
149
Anna Zaks08741a02013-04-25 23:14:38 +0000150Static Analyzer
Ted Kremenek1377a462013-04-26 00:01:34 +0000151---------------
Anna Zaks08741a02013-04-25 23:14:38 +0000152
Ted Kremenek1377a462013-04-26 00:01:34 +0000153The static analyzer (which contains additional code checking beyond compiler
154warnings) has improved significantly in both in the core analysis engine and
155also in the kinds of issues it can find.
156
157Core Analysis Improvements
158==========================
159
160- Support for interprocedural reasoning about constructors and destructors.
161- New false positive suppression mechanisms that reduced the number of false null pointer dereference warnings due to interprocedural analysis.
Anna Zaks08741a02013-04-25 23:14:38 +0000162- Major performance enhancements to speed up interprocedural analysis
Ted Kremenek1377a462013-04-26 00:01:34 +0000163
164New Issues Found
165================
166
167- New memory error checks such as use-after-free with C++ 'delete'.
168- Detection of mismatched allocators and deallocators (e.g., using 'new' with 'free()', 'malloc()' with 'delete').
169- Additional checks for misuses of Apple Foundation framework collection APIs.
Anna Zaks08741a02013-04-25 23:14:38 +0000170
Sean Silvadebc0182012-12-23 01:19:35 +0000171Python Binding Changes
172----------------------
173
174The following methods have been added:
175
176- ...
177
178Significant Known Problems
179==========================
180
181Additional Information
182======================
183
184A wide variety of additional information is available on the `Clang web
185page <http://clang.llvm.org/>`_. The web page contains versions of the
186API documentation which are up-to-date with the Subversion version of
187the source code. You can access versions of these documents specific to
188this release by going into the "``clang/docs/``" directory in the Clang
189tree.
190
191If you have any questions or comments about Clang, please feel free to
192contact us via the `mailing
193list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_.