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


<ul>

  <li><b>23 December 2003 -- BusyBox 1.0.0-pre5 released</b><p> 

    Here goes the next pre-release for the new BusyBox stable
    series.  The most obvious thing in this release is a fix for
    a terribly stupid bug in mount that prevented it from working
    properly unless you specified the filesystem type.  This
    release also fixes a few compile problems, updates udhcp,
    fixes a silly bug in fdisk, fixes ifup/ifdown to behave like
    the Debian version, updates devfsd, updates the 2.6.x
    modutils support, add a new 'rx' applet, removes the obsolete
    'loadacm' applet, fixes a few tar bugs, fixes a sed bug, and
    a few other odd fixes.

    <p>

    If you see any problems, of have suggestions to make, as
    always, please feel free to send an email to the busybox
    mailing list.

    <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>10 December 2003 -- BusyBox 1.0.0-pre4 released</b><p> 

    Here goes the fourth pre-release for the new BusyBox stable
    series.  This release includes major rework to sed, lots of
    rework on tar, a new tiny implementation of bunzip2, a new
    devfsd applet, support for 2.6.x kernel modules, updates to
    the ash shell, sha1sum and md5sum have been merged into a
    common applet, the dpkg applets has been cleaned up, and tons
    of random bugs have been fixed.  Thanks everyone for all the
    testing, bug reports, and patches!  Once again, a big
    thank-you goes to Glenn McGrath (bug1) for stepping in and 
    helping get patches merged!

    <p>

    And of course, if you are reading this, you might have noticed
    the busybox website has been completely reworked.  Hopefully
    things are now somewhat easier to navigate...  If you see any
    problems, of have suggestions to make, as always, please feel
    free to send an email to the busybox mailing list.

    <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" -->

