OLD | NEW |
1 ======================= | 1 ===================================== |
2 Clang 3.3 Release Notes | 2 Clang 3.3 (In-Progress) Release Notes |
3 ======================= | 3 ===================================== |
4 | 4 |
5 .. contents:: | 5 .. contents:: |
6 :local: | 6 :local: |
7 :depth: 2 | 7 :depth: 2 |
8 | 8 |
9 Written by the `LLVM Team <http://llvm.org/>`_ | 9 Written by the `LLVM Team <http://llvm.org/>`_ |
10 | 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 |
11 Introduction | 17 Introduction |
12 ============ | 18 ============ |
13 | 19 |
14 This document contains the release notes for the Clang C/C++/Objective-C | 20 This document contains the release notes for the Clang C/C++/Objective-C |
15 frontend, part of the LLVM Compiler Infrastructure, release 3.3. Here we | 21 frontend, part of the LLVM Compiler Infrastructure, release 3.3. Here we |
16 describe the status of Clang in some detail, including major improvements from | 22 describe the status of Clang in some detail, including major |
17 the previous release and new feature work. For the general LLVM release notes, | 23 improvements from the previous release and new feature work. For the |
18 see `the LLVM documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM | 24 general LLVM release notes, see `the LLVM |
19 releases may be downloaded from the `LLVM releases web site | 25 documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM |
20 <http://llvm.org/releases/>`_. | 26 releases may be downloaded from the `LLVM releases web |
| 27 site <http://llvm.org/releases/>`_. |
21 | 28 |
22 For more information about Clang or LLVM, including information about the latest | 29 For more information about Clang or LLVM, including information about |
23 release, please check out the main please see the `Clang Web Site | 30 the latest release, please check out the main please see the `Clang Web |
24 <http://clang.llvm.org>`_ or the `LLVM Web Site <http://llvm.org>`_. | 31 Site <http://clang.llvm.org>`_ or the `LLVM Web |
| 32 Site <http://llvm.org>`_. |
25 | 33 |
26 Note that if you are reading this file from a Subversion checkout or the main | 34 Note that if you are reading this file from a Subversion checkout or the |
27 Clang web page, this document applies to the *next* release, not the current | 35 main Clang web page, this document applies to the *next* release, not |
28 one. To see the release notes for a specific release, please see the `releases | 36 the current one. To see the release notes for a specific release, please |
29 page <http://llvm.org/releases/>`_. | 37 see the `releases page <http://llvm.org/releases/>`_. |
30 | 38 |
31 What's New in Clang 3.3? | 39 What's New in Clang 3.3? |
32 ======================== | 40 ======================== |
33 | 41 |
34 Some of the major new features and improvements to Clang are listed | 42 Some of the major new features and improvements to Clang are listed |
35 here. Generic improvements to Clang as a whole or to its underlying | 43 here. Generic improvements to Clang as a whole or to its underlying |
36 infrastructure are described first, followed by language-specific sections with | 44 infrastructure are described first, followed by language-specific |
37 improvements to Clang's support for those languages. | 45 sections with improvements to Clang's support for those languages. |
38 | 46 |
39 Major New Features | 47 Major New Features |
40 ------------------ | 48 ------------------ |
41 | 49 |
42 Improvements to Clang's diagnostics | 50 Improvements to Clang's diagnostics |
43 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
44 | 52 |
45 Clang's diagnostics are constantly being improved to catch more issues, | 53 Clang's diagnostics are constantly being improved to catch more issues, |
46 explain them more clearly, and provide more accurate source information | 54 explain them more clearly, and provide more accurate source information |
47 about them. The improvements since the 3.2 release include: | 55 about them. The improvements since the 3.2 release include: |
48 | 56 |
| 57 - ... |
| 58 |
49 Extended Identifiers: Unicode Support and Universal Character Names | 59 Extended Identifiers: Unicode Support and Universal Character Names |
50 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 60 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
51 | 61 |
52 Clang 3.3 includes support for *extended identifiers* in C99 and C++. | 62 Clang 3.3 includes support for *extended identifiers* in C99 and C++. |
53 This feature allows identifiers to contain certain Unicode characters, as | 63 This feature allows identifiers to contain certain Unicode characters, as |
54 specified by the active language standard; these characters can be written | 64 specified by the active language standard; these characters can be written |
55 directly in the source file using the UTF-8 encoding, or referred to using | 65 directly in the source file using the UTF-8 encoding, or referred to using |
56 *universal character names* (``\u00E0``, ``\U000000E0``). | 66 *universal character names* (``\u00E0``, ``\U000000E0``). |
57 | 67 |
| 68 New Compiler Flags |
| 69 ------------------ |
| 70 |
| 71 - ... |
| 72 |
58 C Language Changes in Clang | 73 C Language Changes in Clang |
59 --------------------------- | 74 --------------------------- |
60 | 75 |
| 76 C11 Feature Support |
| 77 ^^^^^^^^^^^^^^^^^^^ |
| 78 |
| 79 ... |
| 80 |
61 C++ Language Changes in Clang | 81 C++ Language Changes in Clang |
62 ----------------------------- | 82 ----------------------------- |
63 | 83 |
64 - Clang now correctly implements language linkage for functions and variables. | 84 - Clang now correctly implements language linkage for functions and variables. |
65 This means that, for example, it is now possible to overload static functions | 85 This means that, for example, it is now possible to overload static functions |
66 declared in an ``extern "C"`` context. For backwards compatibility, an alias | 86 declared in an ``extern "C"`` context. For backwards compatibility, an alias |
67 with the unmangled name is still emitted if it is the only one and has the | 87 with the unmangled name is still emitted if it is the only one and has the |
68 ``used`` attribute. | 88 ``used`` attribute. |
69 | 89 |
| 90 C++11 Feature Support |
| 91 ^^^^^^^^^^^^^^^^^^^^^ |
| 92 |
| 93 ... |
| 94 |
| 95 Objective-C Language Changes in Clang |
| 96 ------------------------------------- |
| 97 |
| 98 ... |
| 99 |
70 Internal API Changes | 100 Internal API Changes |
71 -------------------- | 101 -------------------- |
72 | 102 |
73 These are major API changes that have happened since the 3.2 release of | 103 These are major API changes that have happened since the 3.2 release of |
74 Clang. If upgrading an external codebase that uses Clang as a library, | 104 Clang. If upgrading an external codebase that uses Clang as a library, |
75 this section should help get you past the largest hurdles of upgrading. | 105 this section should help get you past the largest hurdles of upgrading. |
76 | 106 |
77 Value Casting | 107 Value Casting |
78 ^^^^^^^^^^^^^ | 108 ^^^^^^^^^^^^^ |
79 | 109 |
80 Certain type hierarchies (TypeLoc, CFGElement, ProgramPoint, and SVal) were | 110 Certain type hierarchies (TypeLoc, CFGElement, ProgramPoint, and SVal) were |
81 misusing the llvm::cast machinery to perform undefined operations. Their APIs | 111 misusing the llvm::cast machinery to perform undefined operations. Their APIs |
82 have been changed to use two member function templates that return values | 112 have been changed to use two member function templates that return values |
83 instead of pointers or references - "T castAs" and "Optional<T> getAs" (in the | 113 instead of pointers or references - "T castAs" and "Optional<T> getAs" (in the |
84 case of the TypeLoc hierarchy the latter is "T getAs" and you can use the | 114 case of the TypeLoc hierarchy the latter is "T getAs" and you can use the |
85 boolean testability of a TypeLoc (or its 'validity') to verify that the cast | 115 boolean testability of a TypeLoc (or its 'validity') to verify that the cast |
86 succeeded). Essentially all previous 'cast' usage should be replaced with | 116 succeeded). Essentially all previous 'cast' usage should be replaced with |
87 'castAs' and 'dyn_cast' should be replaced with 'getAs'. See r175462 for the | 117 'castAs' and 'dyn_cast' should be replaced with 'getAs'. See r175462 for the |
88 first example of such a change along with many examples of how code was | 118 first example of such a change along with many examples of how code was |
89 migrated to the new API. | 119 migrated to the new API. |
90 | 120 |
91 Storage Class | 121 Storage Class |
92 ^^^^^^^^^^^^^ | 122 ^^^^^^^^^^^^^ |
93 | 123 |
94 For each variable and function Clang used to keep the storage class as written | 124 For each variable and function Clang used to keep the storage class as written |
95 in the source, the linkage and a semantic storage class. This was a bit | 125 in the source, the linkage and a semantic storage class. This was a bit |
96 redundant and the semantic storage class has been removed. The method | 126 redundant and the semantic storage class has been removed. The method |
97 getStorageClass now returns what is written in the source code for that decl. | 127 getStorageClass now returns what is written it the source code for that decl. |
| 128 |
| 129 ... |
98 | 130 |
99 libclang | 131 libclang |
100 -------- | 132 -------- |
101 | 133 |
102 The clang_CXCursorSet_contains() function previously incorrectly returned 0 | 134 The clang_CXCursorSet_contains() function previously incorrectly returned 0 |
103 if it contained a CXCursor, contrary to what the documentation stated. This | 135 if it contained a CXCursor, contrary to what the documentation stated. This |
104 has been fixed so that the function returns a non-zero value if the set | 136 has been fixed so that the function returns a non-zero value if the set |
105 contains a cursor. This is API breaking change, but matches the intended | 137 contains a cursor. This is API breaking change, but matches the intended |
106 original behavior. Moreover, this also fixes the issue of an invalid CXCursorSe
t | 138 original behavior. Moreover, this also fixes the issue of an invalid CXCursorSe
t |
107 appearing to contain any CXCursor. | 139 appearing to contain any CXCursor. |
108 | 140 |
109 Static Analyzer | 141 Static Analyzer |
110 --------------- | 142 --------------- |
111 | 143 |
112 The static analyzer (which contains additional code checking beyond compiler | 144 The static analyzer (which contains additional code checking beyond compiler |
113 warnings) has improved significantly in both in the core analysis engine and | 145 warnings) has improved significantly in both in the core analysis engine and |
114 also in the kinds of issues it can find. | 146 also in the kinds of issues it can find. |
115 | 147 |
116 Core Analysis Improvements | 148 Core Analysis Improvements |
117 ========================== | 149 ========================== |
118 | 150 |
119 - Support for interprocedural reasoning about constructors and destructors. | 151 - Support for interprocedural reasoning about constructors and destructors. |
120 - New false positive suppression mechanisms that reduced the number of false | 152 - New false positive suppression mechanisms that reduced the number of false nul
l pointer dereference warnings due to interprocedural analysis. |
121 null pointer dereference warnings due to interprocedural analysis. | |
122 - Major performance enhancements to speed up interprocedural analysis | 153 - Major performance enhancements to speed up interprocedural analysis |
123 | 154 |
124 New Issues Found | 155 New Issues Found |
125 ================ | 156 ================ |
126 | 157 |
127 - New memory error checks such as use-after-free with C++ 'delete'. | 158 - New memory error checks such as use-after-free with C++ 'delete'. |
128 - Detection of mismatched allocators and deallocators (e.g., using 'new' with | 159 - Detection of mismatched allocators and deallocators (e.g., using 'new' with 'f
ree()', 'malloc()' with 'delete'). |
129 'free()', 'malloc()' with 'delete'). | |
130 - Additional checks for misuses of Apple Foundation framework collection APIs. | 160 - Additional checks for misuses of Apple Foundation framework collection APIs. |
131 | 161 |
| 162 Python Binding Changes |
| 163 ---------------------- |
| 164 |
| 165 The following methods have been added: |
| 166 |
| 167 - ... |
| 168 |
132 Significant Known Problems | 169 Significant Known Problems |
133 ========================== | 170 ========================== |
134 | 171 |
135 Additional Information | 172 Additional Information |
136 ====================== | 173 ====================== |
137 | 174 |
138 A wide variety of additional information is available on the `Clang web page | 175 A wide variety of additional information is available on the `Clang web |
139 <http://clang.llvm.org/>`_. The web page contains versions of the API | 176 page <http://clang.llvm.org/>`_. The web page contains versions of the |
140 documentation which are up-to-date with the Subversion version of the source | 177 API documentation which are up-to-date with the Subversion version of |
141 code. You can access versions of these documents specific to this release by | 178 the source code. You can access versions of these documents specific to |
142 going into the "``clang/docs/``" directory in the Clang tree. | 179 this release by going into the "``clang/docs/``" directory in the Clang |
| 180 tree. |
143 | 181 |
144 If you have any questions or comments about Clang, please feel free to contact | 182 If you have any questions or comments about Clang, please feel free to |
145 us via the `mailing list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_. | 183 contact us via the `mailing |
| 184 list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_. |
OLD | NEW |