| 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 |