+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="majorfeatures">Major New Features</a>
+</div>
+
+<div class="doc_text">
+
+<p>LLVM 2.3 includes several major new capabilities:</p>
+
+<ul>
+<li><p>The biggest change in LLVM 2.3 is Multiple Return Value (MRV) support.
+ MRVs allow LLVM IR to directly represent functions that return multiple
+ values without having to pass them "by reference" in the LLVM IR. This
+ allows a front-end to generate more efficient code, as MRVs are generally
+ returned in registers if a target supports them. See the <a
+ href="LangRef.html#i_getresult">LLVM IR Reference</a> for more details.</p>
+
+ <p>MRVs are fully supported in the LLVM IR, but are not yet fully supported in
+ on all targets. However, it is generally safe to return up to 2 values from
+ a function: most targets should be able to handle at least that. MRV
+ support is a critical requirement for X86-64 ABI support, as X86-64 requires
+ the ability to return multiple registers from functions, and we use MRVs to
+ accomplish this in a direct way.</p></li>
+
+<li><p>LLVM 2.3 includes a complete reimplementation of the "<tt>llvmc</tt>"
+ tool. It is designed to overcome several problems with the original
+ <tt>llvmc</tt> and to provide a superset of the features of the
+ '<tt>gcc</tt>' driver.</p>
+
+ <p>The main features of <tt>llvmc2</tt> are:
+ <ul>
+ <li>Extended handling of command line options and smart rules for
+ dispatching them to different tools.</li>
+ <li>Flexible (and extensible) rules for defining different tools.</li>
+ <li>The different intermediate steps performed by tools are represented
+ as edges in the abstract graph.</li>
+ <li>The 'language' for driver behavior definition is tablegen and thus
+ it's relatively easy to add new features.</li>
+ <li>The definition of driver is transformed into set of C++ classes, thus
+ no runtime interpretation is needed.</li>
+ </ul>
+</li>
+
+<li><p>LLVM 2.3 includes a completely rewritten interface for <a
+ href="LinkTimeOptimization.html">Link Time Optimization</a>. This interface
+ is written in C, which allows for easier integration with C code bases, and
+ incorporates improvements we learned about from the first incarnation of the
+ interface.</p></li>
+
+<li><p>The <a href="tutorial/LangImpl1.html">Kaleidoscope tutorial</a> now
+ includes a "port" of the tutorial that <a
+ href="tutorial/OCamlLangImpl1.html">uses the Ocaml bindings</a> to implement
+ the Kaleidoscope language.</p></li>