Sean Silva | 28c1f75 | 2013-01-02 22:05:33 +0000 | [diff] [blame] | 1 | ===================================== |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 2 | Clang 3.4 (In-Progress) Release Notes |
Sean Silva | 28c1f75 | 2013-01-02 22:05:33 +0000 | [diff] [blame] | 3 | ===================================== |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 4 | |
| 5 | .. contents:: |
| 6 | :local: |
| 7 | :depth: 2 |
| 8 | |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 9 | Introduction |
| 10 | ============ |
| 11 | |
| 12 | This document contains the release notes for the Clang C/C++/Objective-C |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 13 | frontend, part of the LLVM Compiler Infrastructure, release 3.4. Here we |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 14 | describe the status of Clang in some detail, including major |
| 15 | improvements from the previous release and new feature work. For the |
| 16 | general LLVM release notes, see `the LLVM |
| 17 | documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM |
| 18 | releases may be downloaded from the `LLVM releases web |
| 19 | site <http://llvm.org/releases/>`_. |
| 20 | |
| 21 | For more information about Clang or LLVM, including information about |
| 22 | the latest release, please check out the main please see the `Clang Web |
| 23 | Site <http://clang.llvm.org>`_ or the `LLVM Web |
| 24 | Site <http://llvm.org>`_. |
| 25 | |
| 26 | Note that if you are reading this file from a Subversion checkout or the |
| 27 | main Clang web page, this document applies to the *next* release, not |
| 28 | the current one. To see the release notes for a specific release, please |
| 29 | see the `releases page <http://llvm.org/releases/>`_. |
| 30 | |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 31 | What's New in Clang 3.4? |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 32 | ======================== |
| 33 | |
| 34 | 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 |
| 36 | infrastructure are described first, followed by language-specific |
| 37 | sections with improvements to Clang's support for those languages. |
| 38 | |
Chandler Carruth | fe1088d | 2013-11-07 00:26:32 +0000 | [diff] [blame] | 39 | Last release which will build as C++98 |
| 40 | -------------------------------------- |
| 41 | |
| 42 | This is expected to be the last release of Clang which compiles using a C++98 |
| 43 | toolchain. We expect to start using some C++11 features in Clang starting after |
| 44 | this release. That said, we are committed to supporting a reasonable set of |
| 45 | modern C++ toolchains as the host compiler on all of the platforms. This will |
| 46 | at least include Visual Studio 2012 on Windows, and Clang 3.1 or GCC 4.7.x on |
| 47 | Mac and Linux. The final set of compilers (and the C++11 features they support) |
| 48 | is not set in stone, but we wanted users of Clang to have a heads up that the |
| 49 | next release will involve a substantial change in the host toolchain |
| 50 | requirements. |
| 51 | |
| 52 | Note that this change is part of a change for the entire LLVM project, not just |
| 53 | Clang. |
| 54 | |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 55 | Major New Features |
| 56 | ------------------ |
| 57 | |
| 58 | Improvements to Clang's diagnostics |
| 59 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 60 | |
| 61 | Clang's diagnostics are constantly being improved to catch more issues, |
| 62 | explain them more clearly, and provide more accurate source information |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 63 | about them. The improvements since the 3.3 release include: |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 64 | |
Richard Trieu | 06907e1 | 2013-12-03 01:35:18 +0000 | [diff] [blame] | 65 | - -Wheader-guard warns on mismatches between the #ifndef and #define lines |
| 66 | in a header guard. |
| 67 | - -Wlogical-not-parentheses warns when a logical not ('!') only applies to the |
| 68 | left-hand side of a comparison. This warning is part of -Wparentheses. |
| 69 | - Boolean increment, a deprecated feature, has own warning flag |
| 70 | -Wdeprecated-increment-bool, and is still part of -Wdeprecated. |
| 71 | - Clang errors on builtin enum increments and decrements. |
| 72 | - -Wloop-analysis now warns on for-loops which have the same increment or |
| 73 | decrement in the loop header as the last statement in the loop. |
| 74 | - -Wuninitialized now performs checking across field initializers to detect |
| 75 | when one field in used uninitialized in another field initialization. |
| 76 | - Clang can detect initializer list use inside a macro and suggest parentheses |
| 77 | if possible to fix. |
Kaelyn Uhrain | b4ec8b1 | 2013-12-04 02:25:41 +0000 | [diff] [blame] | 78 | - Many improvements to Clang's typo correction facilities, such as: |
| 79 | + Adding global namespace qualifiers so that corrections can refer to shadowed |
| 80 | or otherwise ambiguous or unreachable namespaces. |
| 81 | + Including accessible class members in the set of typo correction candidates, |
| 82 | so that corrections requiring a class name in the name specifier are now |
| 83 | possible. |
| 84 | + Allowing typo corrections that involve removing a name specifier. |
| 85 | + In some situations, correcting function names when a function was given the |
| 86 | wrong number of arguments, including situations where the original function |
| 87 | name was correct but was shadowed by a lexically closer function with the |
| 88 | same name yet took a different number of arguments. |
| 89 | + Offering typo suggestions for 'using' declarations. |
| 90 | + Providing better diagnostics and fixit suggestions in more situations when |
| 91 | a '->' was used instead of '.' or vice versa. |
| 92 | + Providing more relevant suggestions for typos followed by '.' or '='. |
| 93 | + Various performance improvements when searching for typo correction |
| 94 | candidates. |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 95 | |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 96 | New Compiler Flags |
| 97 | ------------------ |
| 98 | |
Rafael Espindola | 3b0f62b | 2013-08-23 21:49:00 +0000 | [diff] [blame] | 99 | - Clang no longer special cases -O4 to enable lto. Explicitly pass -flto to |
| 100 | enable it. |
Sylvestre Ledru | 762e567 | 2013-11-18 13:23:07 +0000 | [diff] [blame] | 101 | - Clang no longer fails on >= -O5. Uses -O3 instead. |
| 102 | - Command line "clang -O3 -flto a.c -c" and "clang -emit-llvm a.c -c" |
Shuxin Yang | 8b49854 | 2013-08-23 22:01:03 +0000 | [diff] [blame] | 103 | are no longer equivalent. |
Rafael Espindola | 3dd4dd6 | 2013-10-16 16:32:17 +0000 | [diff] [blame] | 104 | - Clang now errors on unknown -m flags (``-munknown-to-clang``), |
| 105 | unknown -f flags (``-funknown-to-clang``) and unknown |
| 106 | options (``-what-is-this``). |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 107 | |
| 108 | C Language Changes in Clang |
| 109 | --------------------------- |
| 110 | |
Michael Gottesman | 98d1ec1 | 2013-06-20 23:28:10 +0000 | [diff] [blame] | 111 | - Added new checked arithmetic builtins for security critical applications. |
| 112 | |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 113 | C11 Feature Support |
| 114 | ^^^^^^^^^^^^^^^^^^^ |
| 115 | |
| 116 | ... |
| 117 | |
| 118 | C++ Language Changes in Clang |
| 119 | ----------------------------- |
| 120 | |
Eli Friedman | 6540052 | 2013-07-20 01:06:31 +0000 | [diff] [blame] | 121 | - Fixed an ABI regression, introduced in Clang 3.2, which affected |
| 122 | member offsets for classes inheriting from certain classes with tail padding. |
| 123 | See PR16537. |
| 124 | |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 125 | - ... |
Rafael Espindola | 40db515 | 2013-04-09 12:51:24 +0000 | [diff] [blame] | 126 | |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 127 | C++11 Feature Support |
| 128 | ^^^^^^^^^^^^^^^^^^^^^ |
| 129 | |
| 130 | ... |
| 131 | |
| 132 | Objective-C Language Changes in Clang |
| 133 | ------------------------------------- |
| 134 | |
| 135 | ... |
| 136 | |
Erik Schnetter | a87219b | 2013-11-11 06:36:33 +0000 | [diff] [blame] | 137 | OpenCL C Language Changes in Clang |
| 138 | ---------------------------------- |
| 139 | |
| 140 | - OpenCL C "long" now always has a size of 64 bit, and all OpenCL C |
| 141 | types are aligned as specified in the OpenCL C standard. Also, |
| 142 | "char" is now always signed. |
| 143 | |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 144 | Internal API Changes |
| 145 | -------------------- |
| 146 | |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 147 | These are major API changes that have happened since the 3.3 release of |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 148 | Clang. If upgrading an external codebase that uses Clang as a library, |
| 149 | this section should help get you past the largest hurdles of upgrading. |
| 150 | |
Hans Wennborg | 0437e0d | 2013-05-20 14:53:06 +0000 | [diff] [blame] | 151 | Wide Character Types |
| 152 | ^^^^^^^^^^^^^^^^^^^^ |
| 153 | |
| 154 | The ASTContext class now keeps track of two different types for wide character |
| 155 | types: WCharTy and WideCharTy. WCharTy represents the built-in wchar_t type |
| 156 | available in C++. WideCharTy is the type used for wide character literals; in |
| 157 | C++ it is the same as WCharTy, but in C99, where wchar_t is a typedef, it is an |
| 158 | integer type. |
| 159 | |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 160 | ... |
| 161 | |
Ted Kremenek | 230fc37 | 2013-04-24 07:33:52 +0000 | [diff] [blame] | 162 | libclang |
| 163 | -------- |
| 164 | |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 165 | ... |
Ted Kremenek | 230fc37 | 2013-04-24 07:33:52 +0000 | [diff] [blame] | 166 | |
Anna Zaks | 08741a0 | 2013-04-25 23:14:38 +0000 | [diff] [blame] | 167 | Static Analyzer |
Ted Kremenek | 1377a46 | 2013-04-26 00:01:34 +0000 | [diff] [blame] | 168 | --------------- |
Anna Zaks | 08741a0 | 2013-04-25 23:14:38 +0000 | [diff] [blame] | 169 | |
Ted Kremenek | 1377a46 | 2013-04-26 00:01:34 +0000 | [diff] [blame] | 170 | The static analyzer (which contains additional code checking beyond compiler |
| 171 | warnings) has improved significantly in both in the core analysis engine and |
| 172 | also in the kinds of issues it can find. |
| 173 | |
Daniel Jasper | 87ddfdd | 2013-12-11 14:41:33 +0000 | [diff] [blame^] | 174 | Clang Format |
| 175 | ------------ |
| 176 | |
| 177 | Clang now includes a new tool ``clang-format`` which can be used to |
| 178 | automatically format C, C++ and Objective-C source code. ``clang-format`` |
| 179 | automatically chooses linebreaks and indentation and can be easily integrated |
| 180 | into editors, IDEs and version control systems. It supports several pre-defined |
| 181 | styles as well as precise style control using a multitude of formatting |
| 182 | options. ``clang-format`` itself is just a thin wrapper around a library which |
| 183 | can also be used directly from code refactoring and code translation tools. |
| 184 | More information can be found on `Clang Format's |
| 185 | site <http://clang.llvm.org/docs/ClangFormat.html>`_. |
| 186 | |
Hans Wennborg | a6c1850 | 2013-12-02 22:38:55 +0000 | [diff] [blame] | 187 | Windows Support |
| 188 | --------------- |
| 189 | |
| 190 | - `clang-cl <UsersManual.html#clang-cl>` provides a new driver mode that is |
| 191 | designed for compatibility with Visual Studio's compiler, cl.exe. This driver |
Hans Wennborg | 70cb838 | 2013-12-09 20:00:25 +0000 | [diff] [blame] | 192 | mode makes Clang accept the same kind of command-line options as cl.exe. The |
| 193 | installer will attempt to expose clang-cl in any Visual Studio installations |
| 194 | on the system as a Platform Toolset, e.g. "LLVM-vs2012". clang-cl targets the |
| 195 | Microsoft ABI by default. Please note that this driver mode and compatibility |
| 196 | with the MS ABI is highly experimental. |
Hans Wennborg | a6c1850 | 2013-12-02 22:38:55 +0000 | [diff] [blame] | 197 | |
Ted Kremenek | 1377a46 | 2013-04-26 00:01:34 +0000 | [diff] [blame] | 198 | Core Analysis Improvements |
| 199 | ========================== |
| 200 | |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 201 | - ... |
Ted Kremenek | 1377a46 | 2013-04-26 00:01:34 +0000 | [diff] [blame] | 202 | |
| 203 | New Issues Found |
| 204 | ================ |
| 205 | |
Bill Wendling | a03209e | 2013-06-04 06:17:46 +0000 | [diff] [blame] | 206 | - ... |
Anna Zaks | 08741a0 | 2013-04-25 23:14:38 +0000 | [diff] [blame] | 207 | |
Sean Silva | debc018 | 2012-12-23 01:19:35 +0000 | [diff] [blame] | 208 | Python Binding Changes |
| 209 | ---------------------- |
| 210 | |
| 211 | The following methods have been added: |
| 212 | |
| 213 | - ... |
| 214 | |
| 215 | Significant Known Problems |
| 216 | ========================== |
| 217 | |
| 218 | Additional Information |
| 219 | ====================== |
| 220 | |
| 221 | A wide variety of additional information is available on the `Clang web |
| 222 | page <http://clang.llvm.org/>`_. The web page contains versions of the |
| 223 | API documentation which are up-to-date with the Subversion version of |
| 224 | the source code. You can access versions of these documents specific to |
| 225 | this release by going into the "``clang/docs/``" directory in the Clang |
| 226 | tree. |
| 227 | |
| 228 | If you have any questions or comments about Clang, please feel free to |
| 229 | contact us via the `mailing |
| 230 | list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_. |