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

<h3>News</h3>

<p>

<ul>
  <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="lists.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="lists.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="lists.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="lists.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="lists.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="lists.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="lists.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="lists.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="lists.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="lists.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="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" -->

