<!--#include file="header.html" -->

<h3>News</h3>

<p>

<ul>
  <li><b>1 June 2009 -- 2009.05 released</b>

    <p>The stable 2009.05 release is out - Thanks to everyone
    contributing and testing the release candidates. See the
    <a href="http://lists.busybox.net/pipermail/buildroot/2009-June/027640.html">announcement</a>
    or <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05">CHANGES</a>
    for more details, and go to the <a href="/downloads/">downloads page</a>
    to pick up the <a href="/downloads/buildroot-2009.05.tar.bz2">2009.05
    release</a>.</p>

  <li><b>27 May 2009 -- 2009.05-rc3 released</b>

    <p>We had a number of fixes post-RC2, so RC3 is out (see <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc3">CHANGES</a>
    for details). Now is the moment to test and verify that everything
    is working for your favorite config - Expect a final 2009.05 very soon.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.05-rc3.tar.bz2">2009.05-rc3
    release candidate</a>, and report any problems found to the <a
    href="lists.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>19 May 2009 -- 2009.05-rc2 released</b>

    <p>RC2 is out with more cleanups and bug fixes (see <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc2">CHANGES</a>).
    Unless big issues are found, expect this to be the last release
    candidate before the release - So give it a good test.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.05-rc2.tar.bz2">2009.05-rc2
    release candidate</a>, and report any problems found to the <a
    href="lists.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>14 May 2009 -- Buildroot.org</b>

    <p>Earl Levine has been so kind to donate the <b>buildroot.org</b>
    domain to us, so the website can now also be reached at <a
    href="http://www.buildroot.org">www.buildroot.org</a> (and git at
    <a href="http://git.buildroot.org/buildroot">git.buildroot.org</a>).

    Thanks a lot Earl!</p>

  <li><b>5 May 2009 -- 2009.05-rc1 released</b>

    <p>We have a new release candidate! Lots of changes all over the
    tree, see the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc1">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.05-rc1.tar.bz2">2009.05-rc1
    release candidate</a>, and report any problems found to the <a
    href="lists.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>3 May 2009 -- Moved to git</b>

    <p>We've moved the source code from <a
    href="http://subversion.tigris.org">Subversion</a> to <a
    href="http://git-scm.org">Git</a>. You can browse the repo online
    <a href="http://git.buildroot.net/buildroot">here</a>, and clone
    the repo using:
    <pre>git clone git://git.buildroot.net/buildroot</pre>
    See the <a href="/git.html">Git Access</a> page for more details.
    </p>

  <li><b>27 March 2009 -- new Logo</b>

    <p>We have a <a href="images/logo.png">logo</a>! We have so far
    been using the <a href="http://busybox.net">Busybox</a> logo on
    the website, as the website was a copy of the <a
    href="http://busybox.net">Busybox</a> one - But not anymore, we
    now have a shiny new logo of our own.</p>

  <li><b>12 February 2009 -- 2009.02 released</b>
    <p>The stable 2009.02 release is out - Thanks to everyone
    contributing and testing the release candidates. See the
    <a href="http://lists.busybox.net/pipermail/buildroot/2009-February/025974.html">announcement</a>
    for more details, and go to the <a href="/downloads/">downloads page</a>
    to pick up the <a href="/downloads/buildroot-2009.02.tar.bz2">2009.02
    release</a>.</p>

  <li><b>9 February 2009 -- 2009.02-rc4 released</b>
    <p>We had more than 50 changes since RC3, several of them
    toolchain related, so decided to make a RC4 as well. This is
    very much expected to be the final release candidate, so give it
    a good test and expect a final 2009.02 release this week unless
    critical issues are found.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.02-rc4.tar.bz2">2009.02-rc4
    release candidate</a>, and report any problems found to the <a
    href="lists.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>31 January 2009 -- 2009.02-rc3 released</b>
      <p>RC3 is out with more cleanups and bug fixes. Unless big issues
    are found, expect this to be the last release candidate before the
    release - So give it a good test.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.02-rc3.tar.bz2">2009.02-rc3
    release candidate</a>, and report any problems found to the <a
    href="lists.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>23 January 2009 -- 2009.02-rc2 released</b>
    <p>Another week, another release candidate with a bunch of
    cleanups and build fixes.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.02-rc2.tar.bz2">2009.02-rc2
    release candidate</a>, and report any problems found to the <a
    href="lists.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>16 January 2009 -- Release candidate and new maintainer</b>
    <p>It has been a long time coming, but we finally have a new
    release candidate! - And a new maintainer to match (Peter Korsgaard).</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.02-rc1.tar.bz2">2009.02-rc1
    release candidate</a>, and report any problems found to the <a
    href="lists.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>. The plan is to
    release 2009.02 in time for <a
    href="http://www.fosdem.org/2009/">FOSDEM</a>.</p>

  <li><b>16 July 2006 -- Buildroot mailing list</b>
    <p>Buildroot now has its own <a href=lists.html>mailing list</a>.</p>

  <li><b>21 February 2005 -- Buildroot webpage added</b><p>

    Buildroot is a set of Makefiles and patches that makes it easy generate a
    cross-compilation toolchain and root filesystem for your target Linux
    system using the <a href= "http://www.uclibc.org/">uClibc C library</a>.
    Buildroot is useful mainly for people working with small or embedded
    systems.  Embedded systems often use processors that are not the regular
    x86 processors everyone is used to using on their PC. It can be PowerPC
    processors, MIPS processors, ARM processors, etc.  And to be extra safe,
    you do not need to be root to build or run buildroot.

    <p>

    And as of today buildroot even has its own webpage, making it a first class
    citizen of uclibc.org and busybox.net, and more importantly, make it easy
    to find and point to buildroot.

    <p>

    If you find a bug in buildroot, or wish to submit a patch to fix a problem
    or add a shiny new feature, please use the <a
    href="https://bugs.uclibc.org/">Bug and Patch Tracking System</a> to post
    the details, to make certain your work is not lost.


</ul>

<!--#include file="footer.html" -->

