1 ===================================== 2 Clang 3.3 (In-Progress) Release Notes 3 ===================================== 4 5 .. contents:: 6 :local: 7 :depth: 2 8 9 Written 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 17 Introduction 18 ============ 19 20 This document contains the release notes for the Clang C/C++/Objective-C 21 frontend, part of the LLVM Compiler Infrastructure, release 3.3. Here we 22 describe the status of Clang in some detail, including major 23 improvements from the previous release and new feature work. For the 24 general LLVM release notes, see `the LLVM 25 documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM 26 releases may be downloaded from the `LLVM releases web 27 site <http://llvm.org/releases/>`_. 28 29 For more information about Clang or LLVM, including information about 30 the latest release, please check out the main please see the `Clang Web 31 Site <http://clang.llvm.org>`_ or the `LLVM Web 32 Site <http://llvm.org>`_. 33 34 Note that if you are reading this file from a Subversion checkout or the 35 main Clang web page, this document applies to the *next* release, not 36 the current one. To see the release notes for a specific release, please 37 see the `releases page <http://llvm.org/releases/>`_. 38 39 What's New in Clang 3.3? 40 ======================== 41 42 Some of the major new features and improvements to Clang are listed 43 here. Generic improvements to Clang as a whole or to its underlying 44 infrastructure are described first, followed by language-specific 45 sections with improvements to Clang's support for those languages. 46 47 Major New Features 48 ------------------ 49 50 Improvements to Clang's diagnostics 51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 52 53 Clang's diagnostics are constantly being improved to catch more issues, 54 explain them more clearly, and provide more accurate source information 55 about them. The improvements since the 3.2 release include: 56 57 - ... 58 59 Extended Identifiers: Unicode Support and Universal Character Names 60 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 61 62 Clang 3.3 includes support for *extended identifiers* in C99 and C++. 63 This feature allows identifiers to contain certain Unicode characters, as 64 specified by the active language standard; these characters can be written 65 directly in the source file using the UTF-8 encoding, or referred to using 66 *universal character names* (``\u00E0``, ``\U000000E0``). 67 68 New Compiler Flags 69 ------------------ 70 71 - ... 72 73 C Language Changes in Clang 74 --------------------------- 75 76 C11 Feature Support 77 ^^^^^^^^^^^^^^^^^^^ 78 79 ... 80 81 C++ Language Changes in Clang 82 ----------------------------- 83 84 C++11 Feature Support 85 ^^^^^^^^^^^^^^^^^^^^^ 86 87 ... 88 89 Objective-C Language Changes in Clang 90 ------------------------------------- 91 92 ... 93 94 Internal API Changes 95 -------------------- 96 97 These are major API changes that have happened since the 3.2 release of 98 Clang. If upgrading an external codebase that uses Clang as a library, 99 this section should help get you past the largest hurdles of upgrading. 100 101 Value Casting 102 ^^^^^^^^^^^^^ 103 104 Certain type hierarchies (TypeLoc, CFGElement, ProgramPoint, and SVal) were 105 misusing the llvm::cast machinery to perform undefined operations. Their APIs 106 have been changed to use two member function templates that return values 107 instead of pointers or references - "T castAs" and "Optional<T> getAs" (in the 108 case of the TypeLoc hierarchy the latter is "T getAs" and you can use the 109 boolean testability of a TypeLoc (or its 'validity') to verify that the cast 110 succeeded). Essentially all previous 'cast' usage should be replaced with 111 'castAs' and 'dyn_cast' should be replaced with 'getAs'. See r175462 for the 112 first example of such a change along with many examples of how code was 113 migrated to the new API. 114 115 API change 1 116 ^^^^^^^^^^^^ 117 118 ... 119 120 Python Binding Changes 121 ---------------------- 122 123 The following methods have been added: 124 125 - ... 126 127 Significant Known Problems 128 ========================== 129 130 Additional Information 131 ====================== 132 133 A wide variety of additional information is available on the `Clang web 134 page <http://clang.llvm.org/>`_. The web page contains versions of the 135 API documentation which are up-to-date with the Subversion version of 136 the source code. You can access versions of these documents specific to 137 this release by going into the "``clang/docs/``" directory in the Clang 138 tree. 139 140 If you have any questions or comments about Clang, please feel free to 141 contact us via the `mailing 142 list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_. 143