Home | History | Annotate | Download | only in docs
      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