blob: 2307e353309231302f1c6fa5112640b0809f9600 [file] [log] [blame]
Chandler Carruthc00c0c32011-11-28 07:16:19 +00001<html>
2<head>
3<title>Clang 3.0 Release Notes</title>
4<link type="text/css" rel="stylesheet" href="../menu.css" />
5<link type="text/css" rel="stylesheet" href="../content.css" />
6<style type="text/css">
7td {
8 vertical-align: top;
9}
10</style>
11</head>
12<body>
13
14<!--#include virtual="../menu.html.incl"-->
15
16<div id="content">
17
18<h1>Clang 3.0 Release Notes</h1>
19
20<img align=right src="http://llvm.org/img/DragonSmall.png"
21 width="136" height="136" alt="LLVM Dragon Logo">
22
23<ul>
24 <li><a href="#intro">Introduction</a></li>
25 <li><a href="#whatsnew">What's New in Clang 3.0?</a>
26 <ul>
27 <li><a href="#majorfeatures">Major New Features</a></li>
28 <li><a href="#cchanges">C Language Changes</a></li>
29 <li><a href="#cxxhanges">C++ Language Changes</a></li>
30 <li><a href="#objchanges">Objective-C Language Changes</a></li>
31 <li><a href="#apichanges">Internal API Changes</a></li>
Richard Smith855746b2011-11-28 20:02:05 +000032 </ul>
Chandler Carruthc00c0c32011-11-28 07:16:19 +000033 </li>
34 <li><a href="#knownproblems">Known Problems</a></li>
35 <li><a href="#additionalinfo">Additional Information</a></li>
36</ul>
37
38<div class="doc_author">
39 <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
40</div>
41
42<!--
43<h1 style="color:red">These are in-progress notes for the upcoming LLVM 3.0
44release.<br>
45You may prefer the
46<a href="http://llvm.org/releases/2.9/docs/ReleaseNotes.html">LLVM 2.9
47Release Notes</a>.</h1>
48 -->
49
50<!-- ======================================================================= -->
51<h2 id="intro">Introduction</h2>
52<!-- ======================================================================= -->
53
54<p>This document contains the release notes for the Clang C/C++/Objective-C
55frontend, part of the LLVM Compiler Infrastructure, release 3.0. Here we
56describe the status of Clang in some detail, including major improvements from
57the previous release and new feature work. For the general LLVM release notes,
58see <a href ="http;//llvm.org/docs/ReleaseNotes.html">the LLVM
59 documentation</a>. All LLVM releases may be downloaded from the
60<a href="http://llvm.org/releases/">LLVM releases web site</a>.</p>
61
62<p>For more information about Clang or LLVM, including information about the
63latest release, please check out the main please see the
64<a href="http://clang.llvm.org">Clang Web Site</a> or the
65<a href="http://llvm.org">LLVM Web Site</a>.
66
67<p>Note that if you are reading this file from a Subversion checkout or the main
68Clang web page, this document applies to the <i>next</i> release, not the
69current one. To see the release notes for a specific release, please see the
70<a href="http://llvm.org/releases/">releases page</a>.</p>
71
72<!-- ======================================================================= -->
73<h2 id="whatsnew">What's New in Clang 3.0?</h2>
74<!-- ======================================================================= -->
75
76<p>Some of the major new features and improvements to Clang are listed here.
77Generic improvements to Clang as a whole or two its underlying infrastructure
78are described first, followed by language-specific sections with improvements to
79Clang's support for those languages.</p>
80
81<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
82<h3 id="majorfeatures">Major New Features</h3>
83<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
84
Chandler Carrutha3950cc2011-11-28 08:41:06 +000085<h4 id="notes">Unorganized Notes</h4>
86<p>These are completely random notes as I'm organizing my thoughts and reviewing
87the history. Anything still here needs to be distilled and turned into proper
88prose in a section of its own. When doing that, delete the notes.</p>
89<ul>
Chandler Carrutha3950cc2011-11-28 08:41:06 +000090 <li>OpenCL support -- need details from Tanya and Peter -- separate language
91 section?</li>
92 <li>Building Clang on windows -- mingw, 32 and 64 bit, native windows builds,
93 cygwin. get chapuni to flesh out details.</li>
Chandler Carruth1af40222011-11-28 09:43:30 +000094 <li>Compiling C/C++ w/ MinGW (32/64) and Cygwin on Windows -- chapuni</li>
95 <li>C++ -- Parsing and AST support for Windows Structured Exception
96 Handling.</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +000097 <li>Uninitialized values Clang warning rewrite -- more accurate, faster, able
98 to differentiate between the possibility of an uninitialized use and the
99 certainty of an uninitialized use.</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000100 <li>Support for language specific address spaces</li>
Chandler Carruth1af40222011-11-28 09:43:30 +0000101 <li>Support for compiling on NetBSD systems -- Joerg Sonnenberger to fill
102 out</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000103 <li>Support for '--sysroot' based cross-compilation</li>
104 <li>Crash recovery handling for libclang clients -- Ted</li>
105 <li>Driver support for automatic preparation of reproduction steps for
106 compiler crashes -- Chad</li>
107 <li>OS Availability attribute -- r128127</li>
108 <li>GNU ObjectiveC Runtime support -- David Chisnall</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000109 <li>Diagnostic improvements bucket?
110 <ul>
111 <li>Emitting fewer include stacks</li>
Chandler Carruth1af40222011-11-28 09:43:30 +0000112 <li>Significantly better recovery when encountering misspelled type names
113 in a declaration context. r130082</li>
Chandler Carruthb6a1d9d2011-11-28 11:27:33 +0000114 <li>Expanded typo correction, most especially namespace-aware typo
115 correction in C++</li>
Chandler Carruth5d46a502011-11-28 12:24:21 +0000116 <li>Significantly more rich diagnostics w.r.t. macro expansion backtraces,
117 especially when macro arguments are involved.</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000118 </ul>
119 </li>
Douglas Gregor7c304c42011-11-28 17:50:36 +0000120 <li>libclang improvements bucket
Chandler Carruth7717ce42011-11-28 12:24:23 +0000121 <ul>
122 <li>Better Python Bindings</li>
123 <li>More AST coverage</li>
124 <li>Improved cursor support within macros, especially function-style macro
125 arguments.</li>
126 <li>Improved code completion surrounding macros, macro arguments, and
127 token pasting.</li>
Douglas Gregor7c304c42011-11-28 17:50:36 +0000128 <li>Improved code completion for in-class member functions.</li>
Chandler Carruth7717ce42011-11-28 12:24:23 +0000129 </ul>
130 </li>
Anna Zaksa5a6d1d2011-11-28 21:31:55 +0000131 <li>Basic C++ support in the static analyzer.</li>
Chandler Carruth1af40222011-11-28 09:43:30 +0000132 <li>Improved AST support for partially constructed nodes and incomplete
133 information for LLDB and other clients which dynamically build AST nodes.</li>
134 <li>Largely complete MSVC-compatible parsing mode -- fpichet</li>
135 <li>C1X -- static asserts and generic selections</li>
Chandler Carruth1af40222011-11-28 09:43:30 +0000136 <li>Memory reduction -- initializers, macro expansions, source locations,
137 etc.</li>
Richard Smith855746b2011-11-28 20:02:05 +0000138 <li>The Embarcadero
139 <a href="http://docwiki.embarcadero.com/RADStudio/en/Is_lvalue_expr"><tt>__is_lvalue_expr</tt></a> and
140 <a href="http://docwiki.embarcadero.com/RADStudio/en/Is_rvalue_expr"><tt>__is_rvalue_expr</tt></a> expression traits.</li>
Chandler Carruthbba72a82011-11-28 10:57:14 +0000141 <li>CFI-based debug info -- nlewycky/espindola details</li>
Chandler Carruthb6a1d9d2011-11-28 11:27:33 +0000142 <li>ObjC ARC -- get a blurb from rjmccall</li>
Douglas Gregora1e3e8c2011-11-28 17:51:39 +0000143 <li>ObjC related result type/instancetype</li>
Chandler Carruth7717ce42011-11-28 12:24:23 +0000144 <li>Thread Safety attributes and correctness analysis added to Clang.</li>
Chandler Carruth7a1f1482011-11-28 13:02:29 +0000145 <li>NRVO for blocks.</li>
146 <li>Major improvements to the interactions between serializing and
147 deserializing the AST and the preprocessor -- argiris</li>
Chandler Carruth7a1f1482011-11-28 13:02:29 +0000148 <li>Major driver and system compatibility changes:
149 <ul>
150 <li>Correct support for many more hardware architecture pre-defined macros
151 (e.g., __i686__).</li>
152 <li>Much more robust detection of library and header search paths on Linux
153 distributions.</li>
154 <li>Partial support for sysroot based cross compiling on Linux (like)
155 systems.</li>
156 <li>Improved support for locating and using libcxx, especially on
157 Darwin.</li>
158 </ul>
159 </li>
160 <li>Initial steps of CUDA support -- Peter</li>
161 <li>Atomic builtins and C1X specifiers using the new LLVM atomic instructions
162 and memory model -- efriedma, jyasskin</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000163</ul>
164
Chandler Carruthc6f2af32011-11-28 19:17:25 +0000165<h4 id="ppcallbacks">Expanded support for instrumenting the preprocessor through
166 callbacks</h4>
167Several enhancements were made to the <code>PPCallbacks</code> interface to expand the information available to tools and library users of Clang that wish to introspect the preprocessing.
168<ul>
169 <li>The exact text used between the <code>""</code>s or <code>&lt;&gt;</code>s is reported.</li>
170 <li>The header search path used to locate the header is reported.</li>
171 <li>Missing files during including headers reported.</li>
172 <li>The exact source range for expanded macros can be retrieved.</li>
173</ul>
174
Chandler Carruthc00c0c32011-11-28 07:16:19 +0000175<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
176<h3 id="cchanges">C Language Changes in Clang</h3>
177<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
178
179<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
180<h3 id="cxxchanges">C++ Language Changes in Clang</h3>
181<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
182
Richard Smith855746b2011-11-28 20:02:05 +0000183<h4 id="cxx11changes">C++11 Feature Support</h4>
184
185<p>Clang 3.0 adds support for
186<a href="http://clang.llvm.org/cxx_status.html#cxx11">more of the language
187features</a> added in the latest ISO C++ standard, C++11. Use
188<tt>-std=c++11</tt> or <tt>-std=gnu++11</tt> to enable support for these
189features. The following are now considered to be of production quality:
190<ul>
191 <li>Range-based <tt>for</tt> loops</li>
192 <li>Alias declarations (a new syntax for <tt>typedef</tt> declarations),
193 including their <tt>template</tt> forms</li>
194 <li>Specifying default values for class data members within a class
195 definition</li>
196 <li>Constructors delegating to other constructors of the same class</li>
197 <li>The <tt>override</tt> context-sensitive keyword for virtual member
198 function declarations</li>
199 <li>Explicitly generating default function definitions with <tt>= default</tt>
200 </li>
201 <li>The <tt>nullptr</tt> keyword, and the corresponding type</li>
202 <li>Raw string literals with arbitary delimiters (for instance,
203 <tt>R"delim(str"ing)delim"</tt>)</li>
204 <li>Unicode string literals (for instance, <tt>U"\u1234"</tt>) and the
205 <tt>char16_t</tt> and <tt>char32_t</tt> built-in types
206 <li><tt>noexcept</tt> expressions and the <tt>noexcept</tt> specifier on
207 function declarations</li>
208 <li><tt>alignof</tt> expressions and the <tt>alignas</tt> specifier on
209 variable declarations</li>
210 <li>A full set of <a href="http://clang.llvm.org/docs/LanguageExtensions.html#checking_type_traits">type traits</a>,
211 sufficient to support C++11 standard libraries</li>
212</ul>
213
Chandler Carruthc00c0c32011-11-28 07:16:19 +0000214<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
215<h3 id="objcchanges">Objective-C Language Changes in Clang</h3>
216<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
217
218<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
219<h3 id="apichanges">Internal API Changes</h3>
220<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
221
Chandler Carruthc4dbffa2011-11-28 18:55:47 +0000222These are major API changes that have happened since the 2.9 release of Clang.
223If upgrading an external codebase that uses Clang as a library, this section
224should help get you past the largest hurdles of upgrading.
225
Chandler Carruth7d727b72011-11-28 19:06:34 +0000226<h4 id="macroexpansion">Switched terminology from "instantiation" to "expansion"
227 for macros</h4>
228A great deal of comments and code changes fell out of this, but also every API
229relating to macros with the word "instantiation" (or some variant thereof) was
230renamed. An incomplete list of the most note-worthy ones is here:
231<ul>
232 <li><code>MacroInstantiation</code> became <code>MacroExpansion</code></li>
233 <li><code>SourceManager::getInstantiationLoc</code> became
234 <code>SourceManager::getExpansionLoc</code></li>
235 <li><code>SourceManager::getInstantiationRange</code> became
236 <code>SourceManager::getExpansionRange</code></li>
237 <li><code>SourceManager::getImmediateInstantiationRange</code> became
238 <code>SourceManager::getImmediateExpansionRange</code></li>
239 <li><code>SourceManager::getDecomposedInstantiationLoc</code> became
240 <code>SourceManager::getDecomposedExpansionLoc</code></li>
241 <li><code>SourceManager::getInstantiationColumnNumber</code> became
242 <code>SourceManager::getExpansionColumnNumber</code></li>
243 <li><code>SourceManager::getInstantiationLineNumber</code> became
244 <code>SourceManager::getExpansionLineNumber</code></li>
245 <!-- TODO: Make this more complete! -->
246</ul>
247
Chandler Carruthc4dbffa2011-11-28 18:55:47 +0000248<h4 id="diagnosticrename">Diagnostic class names were shuffled</h4>
249<ul>
250 <li><code>Diagnostic</code> became <code>DiagnosticEngine</code></li>
251 <li><code>DiagnosticClient</code> became <code>DiagnosticConsumer</code></li>
252 <li><code>DiagnosticInfo</code> became <code>Diagnostic</code></li>
253</ul>
254Subclasses of <code>DiagnosticConsumer</code> were also then renamed to end with
255<code>Consumer</code>.
256
Chandler Carruthc00c0c32011-11-28 07:16:19 +0000257<!-- ======================================================================= -->
258<h2 id="knownproblems">Significant Known Problems</h2>
259<!-- ======================================================================= -->
260
261<!-- ======================================================================= -->
262<h2 id="additionalinfo">Additional Information</h2>
263<!-- ======================================================================= -->
264
265<p>A wide variety of additional information is available on the
266<a href="http://clang.llvm.org/">Clang web page</a>. The web page contains
267versions of the API documentation which are up-to-date with the Subversion
268version of the source code. You can access versions of these documents specific
269to this release by going into the "<tt>clang/doc/</tt>" directory in the Clang
270tree.</p>
271
272<p>If you have any questions or comments about Clang, please feel free to
273contact us via the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">
274mailing list</a>.</p>
275
276</body>
277</html>