blob: 62a959e5a2b079b716de7dc04d594cad574719a5 [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>
32 </li>
33 <li><a href="#knownproblems">Known Problems</a></li>
34 <li><a href="#additionalinfo">Additional Information</a></li>
35</ul>
36
37<div class="doc_author">
38 <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
39</div>
40
41<!--
42<h1 style="color:red">These are in-progress notes for the upcoming LLVM 3.0
43release.<br>
44You may prefer the
45<a href="http://llvm.org/releases/2.9/docs/ReleaseNotes.html">LLVM 2.9
46Release Notes</a>.</h1>
47 -->
48
49<!-- ======================================================================= -->
50<h2 id="intro">Introduction</h2>
51<!-- ======================================================================= -->
52
53<p>This document contains the release notes for the Clang C/C++/Objective-C
54frontend, part of the LLVM Compiler Infrastructure, release 3.0. Here we
55describe the status of Clang in some detail, including major improvements from
56the previous release and new feature work. For the general LLVM release notes,
57see <a href ="http;//llvm.org/docs/ReleaseNotes.html">the LLVM
58 documentation</a>. All LLVM releases may be downloaded from the
59<a href="http://llvm.org/releases/">LLVM releases web site</a>.</p>
60
61<p>For more information about Clang or LLVM, including information about the
62latest release, please check out the main please see the
63<a href="http://clang.llvm.org">Clang Web Site</a> or the
64<a href="http://llvm.org">LLVM Web Site</a>.
65
66<p>Note that if you are reading this file from a Subversion checkout or the main
67Clang web page, this document applies to the <i>next</i> release, not the
68current one. To see the release notes for a specific release, please see the
69<a href="http://llvm.org/releases/">releases page</a>.</p>
70
71<!-- ======================================================================= -->
72<h2 id="whatsnew">What's New in Clang 3.0?</h2>
73<!-- ======================================================================= -->
74
75<p>Some of the major new features and improvements to Clang are listed here.
76Generic improvements to Clang as a whole or two its underlying infrastructure
77are described first, followed by language-specific sections with improvements to
78Clang's support for those languages.</p>
79
80<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
81<h3 id="majorfeatures">Major New Features</h3>
82<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
83
Chandler Carrutha3950cc2011-11-28 08:41:06 +000084<h4 id="notes">Unorganized Notes</h4>
85<p>These are completely random notes as I'm organizing my thoughts and reviewing
86the history. Anything still here needs to be distilled and turned into proper
87prose in a section of its own. When doing that, delete the notes.</p>
88<ul>
89 <li>Make analyzer (especially as used w/ warnings in Clang) much faster</li>
90 <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>C++11 -- noexcept (Sebastian Redl)</li>
98 <li>Uninitialized values Clang warning rewrite -- more accurate, faster, able
99 to differentiate between the possibility of an uninitialized use and the
100 certainty of an uninitialized use.</li>
101 <li>Enhancements to PPCallbacks
102 <ul>
Chandler Carruth7717ce42011-11-28 12:24:23 +0000103 <li>exact include paths</li>
104 <li>source range for macro expansions</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000105 </ul>
106 </li>
107 <li>Support for language specific address spaces</li>
Chandler Carruth1af40222011-11-28 09:43:30 +0000108 <li>Support for compiling on NetBSD systems -- Joerg Sonnenberger to fill
109 out</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000110 <li>Support for '--sysroot' based cross-compilation</li>
111 <li>Crash recovery handling for libclang clients -- Ted</li>
112 <li>Driver support for automatic preparation of reproduction steps for
113 compiler crashes -- Chad</li>
114 <li>OS Availability attribute -- r128127</li>
115 <li>GNU ObjectiveC Runtime support -- David Chisnall</li>
116 <li>C++11 -- override</li>
117 <li>Diagnostic improvements bucket?
118 <ul>
119 <li>Emitting fewer include stacks</li>
Chandler Carruth1af40222011-11-28 09:43:30 +0000120 <li>Significantly better recovery when encountering misspelled type names
121 in a declaration context. r130082</li>
Chandler Carruthb6a1d9d2011-11-28 11:27:33 +0000122 <li>Expanded typo correction, most especially namespace-aware typo
123 correction in C++</li>
Chandler Carruth5d46a502011-11-28 12:24:21 +0000124 <li>Significantly more rich diagnostics w.r.t. macro expansion backtraces,
125 especially when macro arguments are involved.</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000126 </ul>
127 </li>
Douglas Gregor7c304c42011-11-28 17:50:36 +0000128 <li>libclang improvements bucket
Chandler Carruth7717ce42011-11-28 12:24:23 +0000129 <ul>
130 <li>Better Python Bindings</li>
131 <li>More AST coverage</li>
132 <li>Improved cursor support within macros, especially function-style macro
133 arguments.</li>
134 <li>Improved code completion surrounding macros, macro arguments, and
135 token pasting.</li>
Douglas Gregor7c304c42011-11-28 17:50:36 +0000136 <li>Improved code completion for in-class member functions.</li>
Chandler Carruth7717ce42011-11-28 12:24:23 +0000137 </ul>
138 </li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000139 <li>C++ -- supported in the static analyzer: methods, new, constructors,
140 destructors, etc.</li>
Chandler Carruth1af40222011-11-28 09:43:30 +0000141 <li>Improved AST support for partially constructed nodes and incomplete
142 information for LLDB and other clients which dynamically build AST nodes.</li>
143 <li>Largely complete MSVC-compatible parsing mode -- fpichet</li>
144 <li>C1X -- static asserts and generic selections</li>
145 <li>C++11 -- alias declarations -- zygoloid</li>
146 <li>C++11 -- range-based-for loops -- zygoloid</li>
Chandler Carruthbba72a82011-11-28 10:57:14 +0000147 <li>C++11 -- nullptr -- zygoloid</li>
Chandler Carruthb6a1d9d2011-11-28 11:27:33 +0000148 <li>C++11 -- in-class init -- zygoloid</li>
Chandler Carruth7717ce42011-11-28 12:24:23 +0000149 <li>C++11 -- raw string literals -- zygoloid</li>
Douglas Gregor7c304c42011-11-28 17:50:36 +0000150 <li>C++11 -- delegating ctors -- zygoloid/scshunt</li>
Chandler Carruth1af40222011-11-28 09:43:30 +0000151 <li>Memory reduction -- initializers, macro expansions, source locations,
152 etc.</li>
153 <li>Full set of type traits, sufficient to support C++11 standard libraries;
154 also expression traits.</li>
Chandler Carruthbba72a82011-11-28 10:57:14 +0000155 <li>CFI-based debug info -- nlewycky/espindola details</li>
Chandler Carruthb6a1d9d2011-11-28 11:27:33 +0000156 <li>ObjC ARC -- get a blurb from rjmccall</li>
Douglas Gregora1e3e8c2011-11-28 17:51:39 +0000157 <li>ObjC related result type/instancetype</li>
Chandler Carruth5d46a502011-11-28 12:24:21 +0000158 <li>API -- The term "instantiation" w.r.t. macros in APIs has been completely
159 replaced by the term "expansion".</li>
Chandler Carruth7717ce42011-11-28 12:24:23 +0000160 <li>Thread Safety attributes and correctness analysis added to Clang.</li>
Chandler Carruth7a1f1482011-11-28 13:02:29 +0000161 <li>API -- Many opaque typedefs in Sema around AST nodes are gone.</li>
162 <li>NRVO for blocks.</li>
163 <li>Major improvements to the interactions between serializing and
164 deserializing the AST and the preprocessor -- argiris</li>
Chandler Carruth7a1f1482011-11-28 13:02:29 +0000165 <li>Major driver and system compatibility changes:
166 <ul>
167 <li>Correct support for many more hardware architecture pre-defined macros
168 (e.g., __i686__).</li>
169 <li>Much more robust detection of library and header search paths on Linux
170 distributions.</li>
171 <li>Partial support for sysroot based cross compiling on Linux (like)
172 systems.</li>
173 <li>Improved support for locating and using libcxx, especially on
174 Darwin.</li>
175 </ul>
176 </li>
177 <li>Initial steps of CUDA support -- Peter</li>
178 <li>Atomic builtins and C1X specifiers using the new LLVM atomic instructions
179 and memory model -- efriedma, jyasskin</li>
Chandler Carrutha3950cc2011-11-28 08:41:06 +0000180</ul>
181
Chandler Carruthc00c0c32011-11-28 07:16:19 +0000182<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
183<h3 id="cchanges">C Language Changes in Clang</h3>
184<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
185
186<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
187<h3 id="cxxchanges">C++ Language Changes in Clang</h3>
188<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
189
190<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
191<h3 id="objcchanges">Objective-C Language Changes in Clang</h3>
192<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
193
194<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
195<h3 id="apichanges">Internal API Changes</h3>
196<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
197
Chandler Carruthc4dbffa2011-11-28 18:55:47 +0000198These are major API changes that have happened since the 2.9 release of Clang.
199If upgrading an external codebase that uses Clang as a library, this section
200should help get you past the largest hurdles of upgrading.
201
202<h4 id="diagnosticrename">Diagnostic class names were shuffled</h4>
203<ul>
204 <li><code>Diagnostic</code> became <code>DiagnosticEngine</code></li>
205 <li><code>DiagnosticClient</code> became <code>DiagnosticConsumer</code></li>
206 <li><code>DiagnosticInfo</code> became <code>Diagnostic</code></li>
207</ul>
208Subclasses of <code>DiagnosticConsumer</code> were also then renamed to end with
209<code>Consumer</code>.
210
Chandler Carruthc00c0c32011-11-28 07:16:19 +0000211<!-- ======================================================================= -->
212<h2 id="knownproblems">Significant Known Problems</h2>
213<!-- ======================================================================= -->
214
215<!-- ======================================================================= -->
216<h2 id="additionalinfo">Additional Information</h2>
217<!-- ======================================================================= -->
218
219<p>A wide variety of additional information is available on the
220<a href="http://clang.llvm.org/">Clang web page</a>. The web page contains
221versions of the API documentation which are up-to-date with the Subversion
222version of the source code. You can access versions of these documents specific
223to this release by going into the "<tt>clang/doc/</tt>" directory in the Clang
224tree.</p>
225
226<p>If you have any questions or comments about Clang, please feel free to
227contact us via the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">
228mailing list</a>.</p>
229
230</body>
231</html>