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

<h3>News</h3>

<p>

<ul>
  <li><b>28 February 2013 -- 2013.02 released</b>

    <p>The stable 2013.02 release is out - Thanks to everyone
    contributing and testing the release candidates. See the
    <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.02">CHANGES</a>
    file for more details
    and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2013.02.tar.bz2">2013.02 release</a>.</p>

  <li><b>26 February 2013 -- 2013.02-rc3 released</b>

    <p>Another week, another release candidate with more cleanups and
    build fixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.02_rc3">CHANGES</a>
    file for details.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2013.02-rc3.tar.bz2">2013.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>19 February 2013 -- 2013.02-rc2 released</b>

    <p>Another week, another release candidate with more cleanups and
    build fixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.02_rc2">CHANGES</a>
    file for details.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2013.02-rc2.tar.bz2">2013.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>10 February 2013 -- 2013.02-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=2013.02_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2013-February/067148.html">announcement</a>.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2013.02-rc1.tar.bz2">2013.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>.</p>

  <li><b>10 February 2013 -- Report from Buildroot Developers Meeting</b>

    <p>A report from the recent Buildroot Developers Meeting is now
    <a href="http://lists.busybox.net/pipermail/buildroot/2013-February/067105.html">available</a>.
    <a href="http://emlinews.net">Embedded Linux News</a> also has a
    <a href="http://www.emlinews.net/2013/02/buildroot-developers-meeting-report/">
    writeup about the event</a>, including photos.</p>

    <p>Once again, thanks to all the participants and to
    <a href="http://www.google.com">Google</a> for sponsoring the event.</p>

  <li><b>12 January 2013 -- Next Buildroot Developers Meeting next to FOSDEM, Brussels</b>

    <p>The next Buildroot Developers Meeting will take place on Monday
    4th February 2013 and Tuesday 5th February 2013 in Brussels,
    Belgium. Those dates have been chosen to immediately follow the
    great <a href="http://www.fosdem.org">FOSDEM</a> conference.</p>

    <p>Attending this meeting is free, after registration by
    contacting <a href="mailto:thomas.petazzoni@free-electrons.com">Thomas
    Petazzoni</a>. For more details about the meeting, please see
    the <a href="http://elinux.org/Buildroot:DeveloperDaysFOSDEM2013">related
    Wiki page</a>.</p>

    <p>We would like to
    thank <a href="http://www.google.com">Google</a> for providing the
    meeting location and the Internet connection, and offering free
    lunch and refreshments to the participants.</p>

  <li><b>3 January 2013 -- 2012.11.1 released</b>

    <p>The 2012.11.1 bugfix release is out - Thanks to everyone
    contributing. This release fixes critical issues discovered since
    the 2012.11 release, most importantly with non-largefile builds on
    recent Ubuntu versions. See the
    <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.11.1">CHANGES</a>
    file for more details,
    and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.11.1.tar.bz2">2012.11.1 release</a>.</p>

  <li><b>2 December 2012 -- 2012.11 released</b>

    <p>The stable 2012.11 release is out - Thanks to everyone
    contributing and testing the release candidates. See the
    <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.11">CHANGES</a>
    file for more details
    and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.11.tar.bz2">2012.11 release</a>.</p>

  <li><b>30 November 2012 -- 2012.11-rc2 released</b>

    <p>RC2 is out with more bugfixes - See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.11_rc2">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.11-rc2.tar.bz2">2012.11-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>17 November 2012 -- 2012.11-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=2012.11_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2012-November/061995.html">announcement</a>.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.11-rc1.tar.bz2">2012.11-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>17 November 2012 -- Buildroot Developer Day</b>

    <p>A report from the recent <i>Buildroot Developer Days</i> meeting
    in Barcelona, Spain is now <a
    href="http://lists.busybox.net/pipermail/buildroot/2012-November/061558.html">available</a>.
    Many thanks to all the participants, and a special thanks to Arnout
    Vandecappelle from <a href="http://mind.be/">mind</a> for taking
    notes and Thomas Petazzoni from <a
    href="http://free-electrons.com/">Free Electrons</a> for handling
    all the practical arrangements, and naturally our sponsors, <a
    href="http://www.fluendo.com/">Fluendo</a> and <a href="http://www.synopsys.com/">Synopsis</a>.
    </p>
    <p>The next Developer Days will take place on February 4th and 5th
    in Brussels, Belgium, right after <a href="http://fosdem.org">FOSDEM</a>.</p>

   <li><b>31 August 2012 -- 2012.08 released</b>

    <p>The stable 2012.08 release is out - Thanks to everyone
    contributing and testing the release candidates. See the
    <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.08">CHANGES</a>
    file for more details and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.08.tar.bz2">2012.08 release</a>.</p>

   <li><b>25 August 2012 -- 2012.08-rc3 released</b>

     <p>We have a new release candidate! Various fixes, and addition
     of licensing informations on many
     packages. See <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.08_rc3">CHANGES</a>
     file for details</p>

     <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
     <a href="/downloads/buildroot-2012.08-rc3.tar.bz2">2012.08-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>15 August 2012 -- 2012.08-rc2 released</b>

     <p>We have a new release candidate! Various fixes, and addition
     of licensing informations on many
     packages. See <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.08_rc2">CHANGES</a>
     file for details</p>

     <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
     <a href="/downloads/buildroot-2012.08-rc2.tar.bz2">2012.08-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>1 August 2012 -- 2012.08-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=2012.08_rc1">CHANGES</a>
     file for details</p>

     <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
     <a href="/downloads/buildroot-2012.08-rc1.tar.bz2">2012.08-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>22 July 2012 -- Buildroot Developer Day</b>

    <p>The next <i>Buildroot Developer Day</i> meeting will take place
    on Saturday November 3th and Sunday November 4th 2012 in
    Barcelona, Spain, just before
    the <a href="https://events.linuxfoundation.org/events/embedded-linux-conference-europe">Embedded
    Linux Conference Europe</a> (November 5th-7th). This two days
    meeting is mainly opened to Buildroot developers and contributors,
    or Buildroot users having a prior experience with the tool. This
    meeting will allow developers to work and Buildroot, and discuss
    current issues, the future directions, and more.</p>

    <p>For more details, see
    the <a href="http://elinux.org/Buildroot#Buildroot_Developers_Meeting.2C_3-4_November_2012.2C_Barcelona_Spain">wiki
    page</a> dedicated to the meeting.</p>

  <li><b>30 May 2012 -- 2012.05 released</b>

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

  <li><b>25 May 2012 -- 2012.05-rc3 released</b>

    <p>RC3 is out with more bugfixes - See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.05_rc3">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.05-rc3.tar.bz2">2012.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>18 May 2012 -- 2012.05-rc2 released</b>

    <p>Another week, another release candidate with more cleanups and
    build fixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.05_rc2">CHANGES</a>
    file for details.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.05-rc2.tar.bz2">2012.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>10 May 2012 -- 2012.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=2012.05_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2012-May/053736.html">announcement</a>.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.05-rc1.tar.bz2">2012.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>20 April 2012 -- Autobuilder Results Online</b>

    <p>The status of the autobuilders, which do repeated
    <code>randpackageconfig</code> builds for continuous integration
    testing, is now online at <a
    href='http://autobuild.buildroot.org'>autobuild.buildroot.org</a>. The
    code behind it can be found in <a
    href='http://git.buildroot.net/buildroot-test/'>git</a>.</p>

    <p>Thanks to Thomas Petazzoni for running the web interface, and
    to <a href='http://gcc.gnu.org/wiki/CompileFarm'>The GCC Compile
    Farm</a> and <a href='http://free-electrons.com/'>Free
    Electrons</a> for hosting builders. Thomas also sends out a daily
    summary of the build status to the mailing list.</p>

  <li><b>29 February 2012 -- 2012.02 released</b>

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

  <li><b>27 February 2012 -- 2012.02-rc3 released</b>

    <p>RC3 is out with more bugfixes - See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.02_rc3">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.02-rc3.tar.bz2">2012.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>19 February 2012 -- 2012.02-rc2 released</b>

    <p>Another week, another release candidate with more cleanups and
    build fixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.02_rc2">CHANGES</a>
    file for details.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.02-rc2.tar.bz2">2012.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>12 February 2012 -- 2012.02-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=2012.02_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2012-February/050234.html">announcement</a>.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2012.02-rc1.tar.bz2">2012.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>.</p>

  <li><b>31 January 2012 -- Buildroot Developer Day</b>

    <p>Another <i>Buildroot Developer Day</i> will take place on
    Friday, February 3rd in Brussels, Belgium - The day before <a
    href="http://fosdem.org">FOSDEM</a>. See the
    <a href="http://lists.busybox.net/pipermail/buildroot/2012-January/049340.html">announcement</a>
    or the <a href="http://free-electrons.com/blog/bdd-2012-brussels/">Free Electrons blog</a>
    for more info.</p>

  <li><b>30 November 2011 -- 2011.11 released</b>

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

  <li><b>26 November 2011 -- 2011.11-rc3 released</b>

    <p>RC3 is out with more bugfixes - See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.11_rc3">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.11-rc3.tar.bz2">2011.11-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>18 November 2011 -- 2011.11-rc2 released</b>

    <p>Another week, another release candidate with a bunch of
    cleanups and build fixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.11_rc2">CHANGES</a>
    file for details.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.11-rc2.tar.bz2">2011.11-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>11 November 2011 -- 2011.11-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=2011.11_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2011-November/047395.html">announcement</a>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.11-rc1.tar.bz2">2011.11-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>31 August 2011 -- 2011.08 released</b>

    <p>The stable 2011.08 release is out - Thanks to everyone
    contributing and testing the release candidates. See the
    <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.08">CHANGES</a>
    file for more details, and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.08.tar.bz2">2011.08 release</a>.</p>

  <li><b>29 August 2011 -- 2011.08-rc2 released</b>

    <p>RC2 is out with more bugfixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.08_rc2">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2011-August/045211.html">announcement</a>.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.08-rc2.tar.bz2">2011.08-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>4 August 2011 -- 2011.08-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=2011.08_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2011-August/044855.html">announcement</a>.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.08-rc1.tar.bz2">2011.08-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>27 May 2011 -- 2011.05 released</b>

    <p>The stable 2011.05 release is out - Thanks to everyone
    contributing and testing the release candidates. See the
    <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.05">CHANGES</a>
    file for more details, and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.05.tar.bz2">2011.05 release</a>.</p>

  <li><b>24 May 2011 -- 2011.05-rc2 released</b>

    <p>RC2 is out with more bugfixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.05_rc2">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.05-rc2.tar.bz2">2011.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>18 May 2011 -- 2011.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=2011.05_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2011-May/043317.html">announcement</a>.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.05-rc1.tar.bz2">2011.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>28 February 2011 -- 2011.02 released</b>

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

  <li><b>24 February 2011 -- 2011.02-rc2 released</b>

    <p>RC2 is out with more cleanups and bugfixes, see the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.02_rc2">CHANGES</a>
    file for details.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.02-rc2.tar.bz2">2011.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>14 February 2011 -- 2011.02-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=2011.02_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2011-February/041365.html">announcement</a>.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2011.02-rc1.tar.bz2">2011.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>.</p>

  <li><b>30 November 2010 -- 2010.11 released</b>

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

  <li><b>25 November 2010 -- 2010.11-rc2 released</b>

    <p>RC2 is out with more cleanups and bugfixes, see the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.11_rc2">CHANGES</a>
    file for details.</p>

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2010.11-rc2.tar.bz2">2010.11-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>8 November 2010 -- 2010.11-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=2010.11_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2010-November/038645.html">announcement</a>.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2010.11-rc1.tar.bz2">2010.11-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>28 September 2010 - Buildroot Developer Day</b>

    <p>A <i>Buildroot Developer Day</i> will take place on
    Friday, October 29th in Cambridge, UK - Just the day after the
    <a href="http://www.embeddedlinuxconference.com/elc_europe10/">Embedded
    Linux Conference Europe</a>. This <i>Developer Day</i> aims
    at allowing Buildroot developers to meet and exchange ideas on the
    project and its future. See the
    <a href="http://lists.busybox.net/pipermail/buildroot/2010-September/037930.html">announcement</a>
    for more info.</p>

    <p>Thanks to Thomas Petazzoni for taking care of the practical
    arrangements.</p>

  <li><b>31 August 2010 -- 2010.08 released</b>

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

  <li><b>30 August 2010 -- 2010.08-rc2 released</b>

    <p>RC2 is out with more cleanups and bugfixes, see the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.08_rc2">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2010.08-rc2.tar.bz2">2010.08-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>

    This is very much expected to be the final release
    candidate, so give it a good test and expect a final 2010.08
    release before September unless critical issues are found.</p>

  <li><b>30 July 2010 -- 2010.08-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=2010.08_rc1">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2010.08-rc1.tar.bz2">2010.08-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>30 May 2010 -- 2010.05 released</b>

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

  <li><b>27 May 2010 -- 2010.05-rc3 released</b>

    <p>RC3 is out with more cleanups and bugfixes, see the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.05_rc3">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2010.05-rc3.tar.bz2">2010.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>11 May 2010 -- 2010.05-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-2010.05-rc2.tar.bz2">2010.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>3 May 2010 -- 2010.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=2010.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-2010.05-rc1.tar.bz2">2010.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>2 May 2010 - FOSDEM slides online</b>

    <p>The slides from the <a
    href="http://fosdem.org/2010/schedule/events/emb_cross_build">Cross
    Build Systems: Present & Future</a> session at <a
    href="http://fosdem.org/2010">FOSDEM</a> are now <a
    href="http://send-patches.org/news/20100211-1-FOSDEM-Crossdev-Workshop.pdf">online</a>.

  <li><b>26 February 2010 -- 2010.02 released</b>

    <p>The stable 2010.02 release is out - Thanks to everyone
    contributing and testing the release candidates. See the
    <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.02">CHANGES</a>
    file for more details, and go to the <a href="/downloads/">downloads page</a>
    to pick up the <a href="/downloads/buildroot-2010.02.tar.bz2">2010.02
    release</a>.</p>

  <li><b>23 February 2010 -- 2010.02-rc2 released</b>

    <p>RC2 is out with more cleanups and bugfixes, see the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.02_rc2">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2010.02-rc2.tar.bz2">2010.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>9 February 2010 -- 2010.02-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=2010.02_rc1">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2010.02-rc1.tar.bz2">2010.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>.</p>

  <li><b>1 December 2009 -- 2009.11 released</b>

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

  <li><b>29 November 2009 -- 2009.11-rc2 released</b>

    <p>RC2 is out with more cleanups and bugfixes, see the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.11_rc2">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.11-rc2.tar.bz2">2009.11-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>23 November 2009 -- 2009.11-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.11_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.11-rc1.tar.bz2">2009.11-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>7 September 2009 -- First Buildroot Developer Day</b>

    <p>The first <i>Buildroot Developer Day</i> will take place on
    Saturday, October 17th in Grenoble, France, just the day after
    Embedded Linux Conference Europe. This <i>Developer Day</i> aims
    at allowing Buildroot developers to meet and exchange ideas on the
    project and its future.</p>

    <p>As the number of places is limited, interested candidates are
    invited to send an e-mail to Peter Korsgaard (<code>jacmet at
    uclibc dot org</code>) and Thomas Petazzoni (<code>thomas dot
    petazzoni at free-electrons dot com</code>).</p>

    <p>This <i>Developer Day</i> will take place thanks to the
    sponsoring of <a href="http://www.calao-systems.com">Calao
    Systems</a> and <a href="http://www.free-electrons.com">Free
    Electrons</a>.</p>

  <li><b>31 August 2009 -- 2009.08 released</b>

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

  <li><b>26 August 2009 -- 2009.08-rc3 released</b>
    <p>A number of bugfixes have been added to the tree since RC2
    (especially thanks to Thomas Petazzoni) - See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08_rc3">CHANGES</a>
    file for details. This is very much expected to be the final release
    candidate, so give it a good test and expect a final 2009.08
    release next weekend 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.08-rc3.tar.bz2">2009.08-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>6 August 2009 -- 2009.08-rc2 released</b>

    <p>RC2 is out with more cleanups and bugfixes, see the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08_rc2">CHANGES</a>
    file for details.

    <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2009.08-rc2.tar.bz2">2009.08-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>2 August 2009 -- 2009.08-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.08_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.08-rc1.tar.bz2">2009.08-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>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" -->

