1===================================== 2Clang 3.3 (In-Progress) Release Notes 3===================================== 4 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 59Extended 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 68New 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 84C++11 Feature Support 85^^^^^^^^^^^^^^^^^^^^^ 86 87... 88 89Objective-C Language Changes in Clang 90------------------------------------- 91 92... 93 94Internal API Changes 95-------------------- 96 97These are major API changes that have happened since the 3.2 release of 98Clang. If upgrading an external codebase that uses Clang as a library, 99this section should help get you past the largest hurdles of upgrading. 100 101Value Casting 102^^^^^^^^^^^^^ 103 104Certain type hierarchies (TypeLoc, CFGElement, ProgramPoint, and SVal) were 105misusing the llvm::cast machinery to perform undefined operations. Their APIs 106have been changed to use two member function templates that return values 107instead of pointers or references - "T castAs" and "Optional<T> getAs" (in the 108case of the TypeLoc hierarchy the latter is "T getAs" and you can use the 109boolean testability of a TypeLoc (or its 'validity') to verify that the cast 110succeeded). Essentially all previous 'cast' usage should be replaced with 111'castAs' and 'dyn_cast' should be replaced with 'getAs'. See r175462 for the 112first example of such a change along with many examples of how code was 113migrated to the new API. 114 115API change 1 116^^^^^^^^^^^^ 117 118... 119 120Python Binding Changes 121---------------------- 122 123The following methods have been added: 124 125- ... 126 127Significant Known Problems 128========================== 129 130Additional Information 131====================== 132 133A wide variety of additional information is available on the `Clang web 134page <http://clang.llvm.org/>`_. The web page contains versions of the 135API documentation which are up-to-date with the Subversion version of 136the source code. You can access versions of these documents specific to 137this release by going into the "``clang/docs/``" directory in the Clang 138tree. 139 140If you have any questions or comments about Clang, please feel free to 141contact us via the `mailing 142list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_. 143