1===================================== 2Clang 3.4 (In-Progress) Release Notes 3===================================== 4 5.. contents:: 6 :local: 7 :depth: 2 8 9Introduction 10============ 11 12This document contains the release notes for the Clang C/C++/Objective-C 13frontend, part of the LLVM Compiler Infrastructure, release 3.4. Here we 14describe the status of Clang in some detail, including major 15improvements from the previous release and new feature work. For the 16general LLVM release notes, see `the LLVM 17documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM 18releases may be downloaded from the `LLVM releases web 19site <http://llvm.org/releases/>`_. 20 21For more information about Clang or LLVM, including information about 22the latest release, please check out the main please see the `Clang Web 23Site <http://clang.llvm.org>`_ or the `LLVM Web 24Site <http://llvm.org>`_. 25 26Note that if you are reading this file from a Subversion checkout or the 27main Clang web page, this document applies to the *next* release, not 28the current one. To see the release notes for a specific release, please 29see the `releases page <http://llvm.org/releases/>`_. 30 31What's New in Clang 3.4? 32======================== 33 34Some of the major new features and improvements to Clang are listed 35here. Generic improvements to Clang as a whole or to its underlying 36infrastructure are described first, followed by language-specific 37sections with improvements to Clang's support for those languages. 38 39Last release which will build as C++98 40-------------------------------------- 41 42This is expected to be the last release of Clang which compiles using a C++98 43toolchain. We expect to start using some C++11 features in Clang starting after 44this release. That said, we are committed to supporting a reasonable set of 45modern C++ toolchains as the host compiler on all of the platforms. This will 46at least include Visual Studio 2012 on Windows, and Clang 3.1 or GCC 4.7.x on 47Mac and Linux. The final set of compilers (and the C++11 features they support) 48is not set in stone, but we wanted users of Clang to have a heads up that the 49next release will involve a substantial change in the host toolchain 50requirements. 51 52Note that this change is part of a change for the entire LLVM project, not just 53Clang. 54 55Major New Features 56------------------ 57 58Improvements to Clang's diagnostics 59^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 60 61Clang's diagnostics are constantly being improved to catch more issues, 62explain them more clearly, and provide more accurate source information 63about them. The improvements since the 3.3 release include: 64 65- ... 66 67New Compiler Flags 68------------------ 69 70- Clang no longer special cases -O4 to enable lto. Explicitly pass -flto to 71 enable it. 72- Clang no longer fails on >= -O5. Uses -O3 instead. 73- Command line "clang -O3 -flto a.c -c" and "clang -emit-llvm a.c -c" 74 are no longer equivalent. 75- Clang now errors on unknown -m flags (``-munknown-to-clang``), 76 unknown -f flags (``-funknown-to-clang``) and unknown 77 options (``-what-is-this``). 78 79C Language Changes in Clang 80--------------------------- 81 82- Added new checked arithmetic builtins for security critical applications. 83 84C11 Feature Support 85^^^^^^^^^^^^^^^^^^^ 86 87... 88 89C++ Language Changes in Clang 90----------------------------- 91 92- Fixed an ABI regression, introduced in Clang 3.2, which affected 93 member offsets for classes inheriting from certain classes with tail padding. 94 See PR16537. 95 96- ... 97 98C++11 Feature Support 99^^^^^^^^^^^^^^^^^^^^^ 100 101... 102 103Objective-C Language Changes in Clang 104------------------------------------- 105 106... 107 108OpenCL C Language Changes in Clang 109---------------------------------- 110 111- OpenCL C "long" now always has a size of 64 bit, and all OpenCL C 112 types are aligned as specified in the OpenCL C standard. Also, 113 "char" is now always signed. 114 115Internal API Changes 116-------------------- 117 118These are major API changes that have happened since the 3.3 release of 119Clang. If upgrading an external codebase that uses Clang as a library, 120this section should help get you past the largest hurdles of upgrading. 121 122Wide Character Types 123^^^^^^^^^^^^^^^^^^^^ 124 125The ASTContext class now keeps track of two different types for wide character 126types: WCharTy and WideCharTy. WCharTy represents the built-in wchar_t type 127available in C++. WideCharTy is the type used for wide character literals; in 128C++ it is the same as WCharTy, but in C99, where wchar_t is a typedef, it is an 129integer type. 130 131... 132 133libclang 134-------- 135 136... 137 138Static Analyzer 139--------------- 140 141The static analyzer (which contains additional code checking beyond compiler 142warnings) has improved significantly in both in the core analysis engine and 143also in the kinds of issues it can find. 144 145Core Analysis Improvements 146========================== 147 148- ... 149 150New Issues Found 151================ 152 153- ... 154 155Python Binding Changes 156---------------------- 157 158The following methods have been added: 159 160- ... 161 162Significant Known Problems 163========================== 164 165Additional Information 166====================== 167 168A wide variety of additional information is available on the `Clang web 169page <http://clang.llvm.org/>`_. The web page contains versions of the 170API documentation which are up-to-date with the Subversion version of 171the source code. You can access versions of these documents specific to 172this release by going into the "``clang/docs/``" directory in the Clang 173tree. 174 175If you have any questions or comments about Clang, please feel free to 176contact us via the `mailing 177list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_. 178