Home | History | Annotate | Download | only in docs
      1 =====================================
      2 Clang 3.5 (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.5 release. You may
     14    prefer the `Clang 3.4 Release Notes
     15    <http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.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.5. 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.5?
     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 - Clang uses the new MingW ABI
     51   GCC 4.7 changed the mingw ABI. Clang 3.4 and older use the GCC 4.6
     52   ABI. Clang 3.5 and newer use the GCC 4.7 abi.
     53 
     54 - The __has_attribute feature test is now target-aware. Older versions of Clang
     55   would return true when the attribute spelling was known, regardless of whether
     56   the attribute was available to the specific target. Clang now returns true
     57   only when the attribute pertains to the current compilation target.
     58 
     59 
     60 Improvements to Clang's diagnostics
     61 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     62 
     63 Clang's diagnostics are constantly being improved to catch more issues,
     64 explain them more clearly, and provide more accurate source information
     65 about them. The improvements since the 3.4 release include:
     66 
     67 -  ...
     68 
     69 New Compiler Flags
     70 ------------------
     71 
     72 The integrated assembler is now turned on by default on ARM (and Thumb),
     73 so the use of the option `-fintegrated-as` is now redundant on those
     74 architectures. This is an important move to both *eat our own dog food*
     75 and to ease cross-compilation tremendously.
     76 
     77 We are aware of the problems that this may cause for code bases that
     78 rely on specific GNU syntax or extensions, and we're working towards
     79 getting them all fixed. Please, report bugs or feature requests if
     80 you find anything. In the meantime, use `-fno-integrated-as` to revert
     81 back the call to GNU assembler.
     82 
     83 In order to provide better diagnostics, the integrated assembler validates
     84 inline assembly when the integrated assembler is enabled.  Because this is
     85 considered a feature of the compiler, it is controlled via the `fintegrated-as`
     86 and `fno-integrated-as` flags which enable and disable the integrated assembler
     87 respectively.  `-integrated-as` and `-no-integrated-as` are now considered
     88 legacy flags (but are available as an alias to prevent breaking existing users),
     89 and users are encouraged to switch to the equivalent new feature flag.
     90 
     91 Deprecated flags `-faddress-sanitizer`, `-fthread-sanitizer`,
     92 `-fcatch-undefined-behavior` and `-fbounds-checking` were removed in favor of
     93 `-fsanitize=` family of flags.
     94 
     95 It is now possible to get optimization reports from the major transformation
     96 passes via three new flags: `-Rpass`, `-Rpass-missed` and `-Rpass-analysis`.
     97 These flags take a POSIX regular expression which indicates the name
     98 of the pass (or passes) that should emit optimization remarks.
     99 
    100 New Pragmas in Clang
    101 -----------------------
    102 
    103 Loop optimization hints can be specified using the new `#pragma clang loop`
    104 directive just prior to the desired loop. The directive allows vectorization,
    105 interleaving, and unrolling to be enabled or disabled. Vector width as well
    106 as interleave and unrolling count can be manually specified.  See language
    107 extensions for details.
    108 
    109 C Language Changes in Clang
    110 ---------------------------
    111 
    112 ...
    113 
    114 C11 Feature Support
    115 ^^^^^^^^^^^^^^^^^^^
    116 
    117 ...
    118 
    119 C++ Language Changes in Clang
    120 -----------------------------
    121 
    122 - ...
    123 
    124 C++11 Feature Support
    125 ^^^^^^^^^^^^^^^^^^^^^
    126 
    127 ...
    128 
    129 Objective-C Language Changes in Clang
    130 -------------------------------------
    131 
    132 ...
    133 
    134 OpenCL C Language Changes in Clang
    135 ----------------------------------
    136 
    137 ...
    138 
    139 Internal API Changes
    140 --------------------
    141 
    142 These are major API changes that have happened since the 3.4 release of
    143 Clang. If upgrading an external codebase that uses Clang as a library,
    144 this section should help get you past the largest hurdles of upgrading.
    145 
    146 ...
    147 
    148 libclang
    149 --------
    150 
    151 ...
    152 
    153 Static Analyzer
    154 ---------------
    155 
    156 The `-analyzer-config` options are now passed from scan-build through to
    157 ccc-analyzer and then to Clang.
    158 
    159 With the option `-analyzer-config stable-report-filename=true`,
    160 instead of `report-XXXXXX.html`, scan-build/clang analyzer generate
    161 `report-<filename>-<function, method name>-<function position>-<id>.html`.
    162 (id = i++ for several issues found in the same function/method).
    163 
    164 List the function/method name in the index page of scan-build.
    165 
    166 ...
    167 
    168 Core Analysis Improvements
    169 ==========================
    170 
    171 - ...
    172 
    173 New Issues Found
    174 ================
    175 
    176 - ...
    177 
    178 Python Binding Changes
    179 ----------------------
    180 
    181 The following methods have been added:
    182 
    183 -  ...
    184 
    185 Significant Known Problems
    186 ==========================
    187 
    188 Additional Information
    189 ======================
    190 
    191 A wide variety of additional information is available on the `Clang web
    192 page <http://clang.llvm.org/>`_. The web page contains versions of the
    193 API documentation which are up-to-date with the Subversion version of
    194 the source code. You can access versions of these documents specific to
    195 this release by going into the "``clang/docs/``" directory in the Clang
    196 tree.
    197 
    198 If you have any questions or comments about Clang, please feel free to
    199 contact us via the `mailing
    200 list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_.
    201