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

<h2>News</h2>

<p>

<ul>

  <li><b>31 May 2014 -- 2014.05 released</b>

    <p>The stable 2014.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=2014.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-2014.05.tar.bz2">2014.05 release</a>.</p>

  <li><b>28 May 2014 -- 2014.05-rc3 released</b>

    <p>Release candidate 3 is out with more cleanups and build fixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.05-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-2014.05-rc3.tar.bz2">2014.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>21 May 2014 -- 2014.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=2014.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-2014.05-rc2.tar.bz2">2014.05-rc2
    release candidate</a>, and report any problems found to the <a
    href="support.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>13 May 2014 -- 2014.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=2014.05-rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2014-May/096492.html">announcement</a>.</p>

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

  <li><b>27 February 2014 -- 2014.02 released</b>

    <p>The stable 2014.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=2014.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-2014.02.tar.bz2">2014.02 release</a>.</p>

  <li><b>25 February 2014 -- 2014.02-rc3 released</b>

    <p>Release candidate 3 is out with more cleanups and build fixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.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-2014.02-rc3.tar.bz2">2014.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>20 February 2014 -- 2014.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=2014.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-2014.02-rc2.tar.bz2">2014.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>11 February 2014 -- 2014.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=2014.02-rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2014-February/089055.html">announcement</a>.</p>

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

  <li><b>9 February 2014 -- Report from Buildroot Developers Meeting</b>

    <p>A report from the recent
    <a href="http://elinux.org/Buildroot:DeveloperDaysFOSDEM2014">
    Buildroot Developers Meeting</a> is now
    <a href="http://lists.busybox.net/pipermail/buildroot/2014-February/088373.html">available</a>.</p>

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

  <li><b>30 January 2014 -- Upcoming Buildroot Developers meeting</b>

    <p>The upcoming Buildroot Developers meeting will take place in
    Brussels on February, 3rd and 4th, after the
    <a href="http://www.fosdem.org">FOSDEM</a> conference. Additional
    details about the meeting can be found on the corresponding
    <a href="http://elinux.org/Buildroot:DeveloperDaysFOSDEM2014">
    wiki page</a>.</p>

    <p>Persons not able to join the meeting in Brussels can participate
    remotely using Google Hangouts. Simply give your Google address to
    <code>thomas.petazzoni@free-electrons.com</code>.</p>

    <p>This meeting is sponsored by
    <a href="http://www.google.com">Google</a> (for the meeting room)
    and <a href="http://www.mind.be">Mind</a> (for the dinner).
    Thanks to our sponsors!</p>

  <li><b>30 November 2013 -- 2013.11 released</b>

    <p>The stable 2013.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=2013.11">CHANGES</a>
    file for more details, read the <a href="http://lists.busybox.net/pipermail/buildroot/2013-November/083600.html">announcement</a>
    and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2013.11.tar.bz2">2013.11 release</a>.</p>

  <li><b>30 November 2013 -- Slides from Embedded Linux Conference Europe</b>

    <p>The slides from the Buildroot presentation at the recent
    <a href="http://events.linuxfoundation.org/events/embedded-linux-conference-europe">Embedded Linux Conference Europe 2013</a>
    are now
    <a href="http://elinux.org/images/2/23/Buildroot-whats-new-elce2013.pdf">available</a>.</p>

  <li><b>18 November 2013 -- 2013.11-rc3 released</b>

    <p>Another week, another release candidate with more fixes. See the <a
    href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.11-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.11-rc3.tar.bz2">2013.11-rc3
    release candidate</a>, and report any problems found to the <a
    href="support.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>18 November 2013 -- 2013.11-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.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-2013.11-rc2.tar.bz2">2013.11-rc2
    release candidate</a>, and report any problems found to the <a
    href="support.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>13 November 2013 -- Announcement of the next Buildroot Developer Days</b>

    <p>The next <i>Buildroot Developer Days</i> meeting will take
    place on Monday 3rd and Tuesday 4th February 2014 in Brussels,
    Belgium - Just after
    <a href="http://www.fosdem.org">FOSDEM</a> (February
    1st/2nd). This two days meeting is mainly open to Buildroot
    developers and contributors, or Buildroot users having a prior
    experience with the tool. It will allow developers to work on
    Buildroot and discuss current issues, the future directions, and
    more.</p>

    <p>In addition to the Buildroot event, we encourage embedded Linux
    developers to propose talks for the Embedded and Mobile Developer
    Room at FOSDEM. See
    the <a href="https://lists.fosdem.org/pipermail/fosdem/2013-October/001870.html">CFP</a>.</p>

    <p>We would like to thank our
    sponsor <a href="http://www.google.com">Google</a> for sponsoring
    the event by providing all the needed logistics.</p>

    <p>For more details, see the
    <a href="http://www.elinux.org/Buildroot:DeveloperDaysFOSDEM2014">wiki
    page</a> dedicated to the meeting.</p>

  <li><b>12 November 2013 -- 2013.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=2013.11_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2013-November/082514.html">announcement</a>.</p>

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

  <li><b>11 November 2013 -- Report from Buildroot Developers Meeting</b>

    <p>A report from the recent
    <a href="http://elinux.org/Buildroot:DeveloperDaysELCE2013">
    Buildroot Developers Meeting</a> is now
    <a href="http://lists.busybox.net/pipermail/buildroot/2013-November/082401.html">available</a>.</p>

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

  <li><b>17 September 2013 -- 2013.08.1 released</b>

    <p>The 2013.08.1 bugfix release is out - Thanks to everyone
    contributing. This release fixes critical issues discovered since
    the 2013.08 release. See the
    <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.08.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-2013.08.1.tar.bz2">2013.08.1 release</a>.</p>

  <li><b>16 September 2013 -- Buildroot Developer Days</b>

    <p>The next <i>Buildroot Developer Days</i> meeting will take
    place on Saturday October 26th and Sunday October 27th 2013 in
    Edinburgh, UK - Just after the <a
    href="https://events.linuxfoundation.org/events/embedded-linux-conference-europe">
    Embedded Linux Conference Europe</a> (October 23th-24th). This two
    days meeting is mainly open to Buildroot developers and
    contributors, or Buildroot users having a prior experience with
    the tool. It will allow developers to work on Buildroot and
    discuss current issues, the future directions, and more.</p>

    <p>For more details, see the
    <a href="http://www.elinux.org/Buildroot:DeveloperDaysELCE2013">wiki
    page</a> dedicated to the meeting.</p>

  <li><b>31 August 2013 -- 2013.08 released</b>

    <p>The stable 2013.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=2013.08">CHANGES</a>
    file for more details, read the <a href="http://lists.busybox.net/pipermail/buildroot/2013-August/077224.html">announcement</a>
    and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2013.08.tar.bz2">2013.08 release</a>.</p>

  <li><b>29 August 2013 -- 2013.08-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.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-2013.08-rc3.tar.bz2">2013.08-rc3
    release candidate</a>, and report any problems found to the <a
    href="support.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>16 August 2013 -- 2013.08-rc2 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.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-2013.08-rc2.tar.bz2">2013.08-rc2
    release candidate</a>, and report any problems found to the <a
    href="support.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>5 August 2013 -- 2013.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=2013.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-2013.08-rc1.tar.bz2">2013.08-rc1
    release candidate</a>, and report any problems found to the <a
    href="support.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>31 May 2013 -- 2013.05 released</b>

    <p>The stable 2013.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=2013.05">CHANGES</a>
    file for more details, read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2013-May/073121.html">announcement</a>
    and go to the <a href="/downloads/">downloads page</a> to pick up the
    <a href="/downloads/buildroot-2013.05.tar.bz2">2013.05 release</a>.</p>

  <li><b>25 May 2013 -- 2013.05-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.05_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.05-rc3.tar.bz2">2013.05-rc3
    release candidate</a>, and report any problems found to the <a
    href="support.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>15 May 2013 -- 2013.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=2013.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-2013.05-rc2.tar.bz2">2013.05-rc2
    release candidate</a>, and report any problems found to the <a
    href="support.html">mailing list</a> or <a
    href="https://bugs.uclibc.org">bug tracker</a>.</p>

  <li><b>8 May 2013 -- 2013.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=2013.05_rc1">CHANGES</a>
    file for details, and read the
    <a href="http://lists.busybox.net/pipermail/buildroot/2013-May/071737.html">announcement</a>.</p>

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

  <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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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="support.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=support.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" -->

