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


<ul>

  <li><b>13 April 2004 -- BusyBox 1.0.0-pre10 released</b><p>

    Ok, I lied.  It turns out that -pre9 will not be the final BusyBox
    pre-release.  With any luck however -pre10 will be, since I <b>really</b>
    want to get BusyBox 1.0.0 released this week.  As usual, please do not
    bother to send in patches adding cool new features at this time.  Only
    bug-fix patches will be accepted.  It would also be <b>very</b> helpful if
    people could continue to review the BusyBox documentation and submit
    improvements.

    <p>
    The <a href="downloads/Changelog">changelog</a> has all the details.
    And as usual you can <a href="downloads">download busybox here</a>.

    <p>Have Fun!
    <p>


  <p>
  <li><b>6 April 2004 -- BusyBox 1.0.0-pre9 released</b><p>

    Here goes the final BusyBox pre-release...  This is your last chance for
    bug fixes.  With luck this will be released as BusyBox 1.0.0 later this
    week.  Please do not bother to send in patches adding cool new features at
    this time.  Only bug-fix patches will be accepted.  It would also be
    <b>very</b> helpful if people could help review the BusyBox documentation
    and submit improvements.  I've spent a lot of time updating the
    documentation to make it better match reality, but I could really use some
    assistance in checking that the features supported by the various applets
    match the features listed in the documentation.

    <p>
    I had hoped to get this released a month ago, but
    <a href="http://codepoet.org/gallery/baby_peter/img_1796">
    another release on 1 March 2004</a> has kept me busy...

    <p>
    The <a href="downloads/Changelog">changelog</a> has all the details.
    And as usual you can <a href="downloads">download busybox here</a>.

    <p>Have Fun!
    <p>


  <p>
  <li><b>23 February 2004 -- BusyBox 1.0.0-pre8 released</b><p>

    Here goes yet another BusyBox pre-release...  Please do not bother to send
    in patches supplying new features at this time.  Only bug-fix patches will
    be accepted.  If you have a cool new feature you would like to see
    supported, or if you have an amazing new applet you would like to submit,
    please wait and submit such things later.  We really want to get a release
    out we can all be proud of.  We are still aiming to finish off the -pre
    series in February and move on to the final 1.0.0 release...  So if you
    spot any bugs, now would be an excellent time to send in a fix to the
    busybox mailing list.  It would also be <b>very</b> helpful if people could
    help review the BusyBox documentation and submit improvements.  It would be
    especially helpful if people could check that the features supported by the
    various applets match the features listed in the documentation.

    <p>

    The <a href="downloads/Changelog">changelog</a> has all the details.
    And as usual you can <a href="downloads">download busybox here</a>.

    <p>Have Fun!
    <p>


    <p>
    <li><b>Old News</b><p>
    <a href="/oldnews.html">Click here to read older news</a>


</ul>

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

