<li>Better detection of include and linking paths for system headers and
libraries, especially for Linux distributions.</li>
- <li>Implemented support
- for <a href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">Automatic
- Reference Counting</a> for Objective-C.</li>
+ <li>Several improvements to Objective-C support, including:
+
+ <ul>
+ <li><a href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">
+ Automatic Reference Counting</a> (ARC) and an improved memory model
+ cleanly separating object and C memory.</li>
+
+ <li>A migration tool for moving legacy code to ARC</li>
+
+ <li>Better support for data hiding, allowing instance variables to be
+ declared in implementation contexts or class extensions</li>
+ <li>Weak linking for classes</li>
+ <li>Improved static type checking by inferring the return type of methods
+ such as +alloc and -init.</li>
+ </ul>
+
+ Some new features require either the Mac OS X 10.7 / iOS 5 Objective-C
+ runtime, or version 1.6 or later of the GNUstep Objective-C runtime
+ version.</li>
<li>Implemented a number of optimizations in <tt>libclang</tt>, the Clang C
interface, to improve the performance of code completion and the mapping
licensed</a> under the MIT and UIUC license, allowing it to be used more
permissively.</p>
+<p>Libc++ has been ported to FreeBSD and imported into the base system. It is
+ planned to be the default STL implementation for FreeBSD 10.</p>
+
</div>
its own interpreter. Pragmatic Smalltalk is a dialect of Smalltalk, built on
top of LanguageKit, that interfaces directly with Objective-C, sharing the
same object representation and message sending behaviour. These projects are
- developed as part of the Étoié desktop environment.</p>
+ developed as part of the Étoilé desktop environment.</p>
</div>
</div>
-<!--=========================================================================-->
-<h3>The ZooLib C++ Cross-Platform Application Framework</h3>
-
-<div>
-
-<p><a href="http://www.zoolib.org/">ZooLib</a> is Open Source under the MIT
- License. It provides GUI, filesystem access, TCP networking, thread-safe
- memory management, threading and locking for Mac OS X, Classic Mac OS,
- Microsoft Windows, POSIX operating systems with X11, BeOS, Haiku, Apple's iOS
- and Research in Motion's BlackBerry.</p>
-
-<p>My current work is to use CLang's static analyzer to improve ZooLib's code
- quality. I also plan to set up LLVM compiles of the demo programs and test
- programs using CLang and LLVM on all the platforms that CLang, LLVM and
- ZooLib all support.</p>
-
-</div>
-
</div>
<!-- *********************************************************************** -->
Pass manager extension API.
-Information about branch probability and basic block frequency is now available within LLVM based on a combination of static branch prediction heuristics and __builtin_expect calls. That information is currently used for register spill placement and if-conversion, with additional optimizations planned for future releases. The same frameworks are intended for eventual use with profile-guided optimization, but that is not yet implemented.
-
-->
<ul>
<p>Converting from the old EH API to the new EH API is rather simple, because a
lot of complexity has been removed. The two intrinsics,
<code>@llvm.eh.exception</code> and <code>@llvm.eh.selector</code> have been
- superceded by the <code>landingpad</code> instruction. Instead of generating
+ superseded by the <code>landingpad</code> instruction. Instead of generating
a call to <code>@llvm.eh.exception</code> and <code>@llvm.eh.selector</code>:
<div class="doc_code">
optimizers:</p>
<ul>
-<!--
-<li></li>
--->
+<li>Information about <a href="BranchWeightMetadata.html">branch probability</a>
+ and basic block frequency is now available within LLVM, based on a
+ combination of static branch prediction heuristics and
+ <code>__builtin_expect</code> calls. That information is currently used for
+ register spill placement and if-conversion, with additional optimizations
+ planned for future releases. The same framework is intended for eventual
+ use with profile-guided optimization.</li>
</li>
</ul>
<p>New features and major changes in the X86 target include:</p>
<ul>
+ <li>The X86 backend, assembler and disassembler now completely support AVX.
+ To enable it pass <code>-mavx</code> to the compiler.</li>
<li>The X86 backend now supports
all <a href="http://llvm.org/PR879">inline assembly that uses the X86
"<code>load volatile</code>"/"<code>store volatile</code>". The old
syntax ("<code>volatile load</code>"/"<code>volatile store</code>")
is still accepted, but is now considered deprecated.</li>
- <li>The old atomic intrinscs (<code>llvm.memory.barrier</code> and
+ <li>The old atomic intrinsics (<code>llvm.memory.barrier</code> and
<code>llvm.atomic.*</code>) are now gone. Please use the new atomic
instructions, described in the <a href="Atomics.html">atomics guide</a>.
</ul>
LLVM API changes are:</p>
<ul>
- <li>The biggest and most pervasive change is that llvm::Type's are no longer
+ <li>The biggest and most pervasive change is that llvm::Types are no longer
returned or accepted as 'const' values. Instead, just pass around
- non-const Type's.</li>
+ non-const Types.</li>
<li><code>PHINode::reserveOperandSpace</code> has been removed. Instead, you
must specify how many operands to reserve space for when you create the