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

<h3>News archive</h3>

<ul>

  <li><b>25 June 2008 -- BusyBox 1.11.0 (unstable), BusyBox 1.10.4 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.11.0.tar.bz2">BusyBox 1.11.0</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_11_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.11.0/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
    <p><a href="http://busybox.net/downloads/busybox-1.10.4.tar.bz2">BusyBox 1.10.4</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_10_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.10.4/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
    <p>Sizes of busybox-1.10.4 and busybox-1.11.0 (with equivalent config, static uclibc build):<pre>
   text    data     bss     dec     hex filename
 800675     636    7080  808391   c55c7 busybox-1.10.4
 798392     611    6900  805903   c4c0f busybox-1.11.0
</pre>

    <p>New applets: inotify (Vladimir Dronnikov), man (Ivana Varekova),
    fbsplash (Michele Sanges), depmod (Bernhard Fischer)

    <p>Changes since previous release:
      <ul>
	<li>build system: reinstate CONFIG_CROSS_COMPILE_PREFIX</li>
	<li>ash: optional bash compatibility features added; other fixes</li>
	<li>hush: lots and lots of fixes</li>
	<li>msh: fix the case where the file has exec bit but can't be run directly (runs "$SHELL file" instead)</li>
	<li>msh: fix exit codes when command is not found or can't be execed</li>
	<li>udhcpc: added workaround for buggy kernels</li>
	<li>mount: fix mishandling of proto=tcp/udp</li>
	<li>diff: make it work on non-seekable streams</li>
	<li>openvt: made more compatible with "standard" one</li>
	<li>mdev: fix block/char device detection</li>
	<li>ping: add -w, -W support (James Simmons)</li>
	<li>crond: add handling of "MAILTO=user" lines</li>
	<li>start-stop-daemon: make --exec follow symlinks (Joakim Tjernlund)</li>
	<li>date: make it accept ISO date format</li>
	<li>echo: fix echo -e -n "msg\n\0" (David Pinedo)</li>
	<li>httpd: fix several bugs triggered by relative path in -h DIR</li>
	<li>printf: fix printf -%s- foo, printf -- -%s- foo</li>
	<li>syslogd: do not error out on missing files to rotate</li>
	<li>ls: support Unicode in names</li>
	<li>ip: support for the LOWER_UP flag (Natanael Copa)</li>
	<li>mktemp: make argument optional (coreutil 6.12 compat)</li>
	<li>libiproute: fix option parsing, so that "ip -o link" works again</li>
	<li>other fixes and code size reductions in many applets</li>
      </ul>
    <p>
    The email address gpl@busybox.net is the recommended way to contact
    the Software Freedom Law Center to report BusyBox license violations.
    </p>
  </li>

  <li><b>12 June 2008 -- Sponsors!</b>
    <p>We want to thank the following companies which are providing support
    for the BusyBox project:
    </p>
      <ul>
        <li>AOE media, a <a href="http://www.aoemedia.com/typo3-development.html">
	TYPO3 development agency</a> contributes financially.</li>
	<li><a href="http://www.analog.com/en/">Analog Devices, Inc.</a> provided
        a <a href="http://docs.blackfin.uclinux.org/doku.php?id=bf537_quick_start">
	Blackfin development board</a> free of charge.
	<a href="http://www.analog.com/blackfin">Blackfin</a>
	is a NOMMU processor, and its availability for testing is invaluable.
	If you are an embedded device developer,
	please note that Analog Devices has entire Linux distribution available
	for download for this board. Visit
	<a href="http://blackfin.uclinux.org/">http://blackfin.uclinux.org/</a>
	for more information.
	</li>
      </ul>
  </li>

  <li><b>5 June 2008 -- BusyBox 1.10.3 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.10.3.tar.bz2">BusyBox 1.10.3</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_10_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.10.3/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
    <p>
    Bugfix-only release for 1.10.x branch. It contains fixes for dnsd, fuser, hush,
    ip, mdev and syslogd.
    </p>
  </li>

  <li><b>8 May 2008 -- BusyBox 1.10.2 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.10.2.tar.bz2">BusyBox 1.10.2</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_10_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.10.2/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
    <p>
    Bugfix-only release for 1.10.x branch. It contains fixes for echo, httpd, pidof,
    start-stop-daemon, tar, taskset, tab completion in shells, build system.
    <p>Please note that mdev was backported from current svn trunk. Please
    report if you encounter any problems with it.
    </p>
  </li>

  <li><b>19 April 2008 -- BusyBox 1.10.1 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.10.1.tar.bz2">BusyBox 1.10.1</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_10_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.10.1/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
    <p>
    Bugfix-only release for 1.10.x branch. It contains fixes for
    fuser, init, less, nameif, tail, taskset, tcpudp, top, udhcp.
  </li>

  <li><b>21 March 2008 -- BusyBox 1.10.0 (unstable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.10.0.tar.bz2">BusyBox 1.10.0</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_10_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.10.0/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>Sizes of busybox-1.9.2 and busybox-1.10.0 (with almost full config, static uclibc build):<pre>
   text    data     bss     dec     hex filename
 781405     679    7500  789584   c0c50 busybox-1.9.2
 773551     640    7372  781563   becfb busybox-1.10.0
</pre>
    <p>Top 10 stack users:<pre>
busybox-1.9.2:               busybox-1.10.0:
echo_dg                 4116 bb_full_fd_action       4112
bb_full_fd_action       4112 find_list_entry2        4096
discard_dg              4108 readlink_main           4096
discard_dg              4096 ipaddr_list_or_flush    3900
echo_stream             4096 iproute_list_or_flush   3680
discard_stream          4096 insmod_main             3152
find_list_entry2        4096 fallbackSort            2952
readlink_main           4096 do_iproute              2492
ipaddr_list_or_flush    3900 cal_main                2464
iproute_list_or_flush   3680 readhere                2308
</pre>

    <p>New applets: brctl, chat (by Vladimir Dronnikov &lt;dronnikov AT gmail.com&gt;),
	findfs, ifenslave (closes bug 115), lpd (by Vladimir Dronnikov &lt;dronnikov AT gmail.com&gt;),
	lpr+lpq (by Walter Harms), script (by Pascal Bellard &lt;pascal.bellard AT ads-lu.com&gt;),
	sendmail (Vladimir Dronnikov &lt;dronnikov AT gmail.com&gt;), tac, tftpd.
    </p>
    <p>Made NOMMU-compatible: crond, crontab, ifupdown, inetd, init, runsv, svlogd, tcpsvd, udpsvd.
    </p>
    <p>Changes since previous release:
    </p>
      <ul>
	<li>globally: add -Wunused-parameter</li>
	<li>globally: add optimization barrier to all "G trick" locations</li>
	<li>adduser/addgroup: check username for invalid chars (by Tito &lt;farmatito AT tiscali.it&gt;)</li>
	<li>adduser: optional support for long options. Closes bug 2134</li>
	<li>ash: handle "A=1 A=2 B=$A; echo $B". Closes bug 947</li>
	<li>ash: make ash -c "if set -o barfoo 2&gt;/dev/null; then echo foo; else echo bar; fi" work. Closes bug 1142</li>
	<li>build system: don't use "gcc -o /dev/null", old gcc can delete /dev/null in this case</li>
	<li>build system: fixes for cross-compiling on an OS X host</li>
	<li>build system: make it do without "od -t"</li>
	<li>build system: pass CFLAGS to link stage too. Closes bug 1376</li>
	<li>build system: add CONFIG_NOMMU</li>
	<li>cp: add ENABLE_FEATURE_VERBOSE_CP_MESSAGE. Closes bug 1470</li>
	<li>crontab: almost complete rewrite</li>
	<li>dnsd: properly set _src_ IP:port on outgoing UDP packets</li>
	<li>dpkg: fix bug where existence check was reversed</li>
	<li>eject: add -s for SCSI- and USB-devices (Nico Erfurth)</li>
	<li>fdisk: fix a case where break was reached only for DOS labels</li>
	<li>fsck: don't kill pid -1! (Roy Marples &lt;roy at marples.name&gt;)</li>
	<li>fsck_minix: fix bug in map_block2: s/(blknr &gt;= 256 * 256)/(blknr &lt; 256 * 256)/</li>
	<li>fuser: substantial rewrite</li>
	<li>getopt: add support for "a+" specifier for nonnegative int parameters. By Vladimir Dronnikov &lt;dronnikov at gmail.com&gt;</li>
	<li>getty: don't try to detect parity on local lines (Joakim Tjernlund &lt;Joakim.Tjernlund at transmode.se&gt;)</li>
	<li>halt: write wtmp entry if wtmp support is enabled</li>
	<li>httpd: "HEAD" support. Closes bug 1530</li>
	<li>httpd: fix bug 2004: wrong argv when interpreter is invoked</li>
	<li>httpd: fix bug where we did chdir("") if CGI path had only one "/"</li>
	<li>httpd: fix for POST upload</li>
	<li>httpd: support for "I:index.xml" syntax (Peter Korsgaard &lt;jacmet AT uclibc.org&gt;)</li>
	<li>hush: fix a case where none of pipe members could be started because of fork failure</li>
	<li>hush: more correct handling of piping</li>
	<li>hush: reinstate `cmd` handling for NOMMU</li>
	<li>hush: report [v]fork failures</li>
	<li>hush: set CLOEXEC on script file being executed</li>
	<li>hush: try to add a bit more of vfork-friendliness</li>
	<li>inetd: make "udp nowait" work</li>
	<li>inetd: make inetd IPv6-capable</li>
	<li>init: add FEATURE_KILL_REMOVED (Eugene Bordenkircher &lt;eugebo AT gmail.com&gt;)</li>
	<li>init: allow last line of config file to be not terminated by "\n"</li>
	<li>init: do not die if "/dev/null" is missing</li>
	<li>init: fix bug 1111: restart actions were not splitting words</li>
	<li>init: wait for orphaned children too while waiting for sysinit-like processes (harald-tuxbox AT arcor.de)</li>
	<li>ip route: "ip route" was misbehaving (extra argv+1 ate 1st env var)</li>
	<li>last: do not go into endless loop on read error</li>
	<li>less,klogd,syslogd,nc,tcpudp: exit on signal by killing itself, not exit(1)</li>
	<li>less: "examine" command will not bomb out on bad file name now</li>
	<li>less: fix bug where backspace wasn't actually deleting chars</li>
	<li>less: make it a bit more resistant against status line corruption</li>
	<li>less: improve search when data is not supplied fast enough by stdin - now will try reading for 1-2 seconds before declaring that there is no match. This fixes a very common annoyance with long manpages</li>
	<li>less: update line input so that it doesn't interfere with screen update. Makes "man bash", [enter], [/], &lt;enter search pattern&gt;, [enter] more usable - manpage now draws even as you enter the pattern!</li>
	<li>libbb: filename completion matches dangling symlinks too</li>
	<li>libbb: fix getopt state corruption for NOFORK applets</li>
	<li>libbb: full_read/write now will report partial data counts prior to error</li>
	<li>libbb: intrduce and use safe_gethostname. By Tito &lt;farmatito AT tiscali.it&gt;</li>
	<li>libbb: introduce and use nonblock_safe_read(). Yay! Our shells are immune from this nasty O_NONBLOCK now!</li>
	<li>login,su: avoid clearing environment with some options, as was intended</li>
	<li>microcom: read more than 1 byte from device, if possible</li>
	<li>microcom: split -d (delay) option away from -t</li>
	<li>mktemp: support -p DIR (Timo Teras &lt;timo.teras at iki.fi&gt;)</li>
	<li>mount: #ifdef out MOUNT_LABEL code parts if it is not selected</li>
	<li>mount: add another mount helper call method</li>
	<li>mount: allow and ignore _netdev option</li>
	<li>mount: make -f work even without mtab support (Cristian Ionescu-Idbohrn &lt;cristian.ionescu-idbohrn at axis.com&gt;)</li>
	<li>mount: optional support for -vv verbosity</li>
	<li>mount: plug a hole where FEATURE_MOUNT_HELPERS could allow execution of arbitrary command</li>
	<li>mount: recognize "dirsync" (closes bug 835)</li>
	<li>mount: sanitize environment if called by non-root</li>
	<li>mount: support for mount by label. Closes bug 1143</li>
	<li>mount: with -vv -f, say what mount() calls we were going to make</li>
	<li>msh: create testsuite (based on hush one)</li>
	<li>msh: don't use floating point in "times" builtin</li>
	<li>msh: fix Ctrl-C handling with line editing</li>
	<li>msh: fix for bug 846 ("break" didn't work second time)</li>
	<li>msh: glob0/glob1/glob2/glob3 were just a sorting routine, removed</li>
	<li>msh: instead of fixing "ls | cd", "cd | ls" etc disallow builtins in pipes. They make no sense there anyway</li>
	<li>msh: stop trying to parse variables in "msh SCRIPT VAR=val param". They are passed as ordinary parameters</li>
	<li>netstat: print control chars as "^C" etc</li>
	<li>nmeter: fix bug where %[mf] behaves as %[mt]</li>
	<li>nohup: compat patch by Christoph Gysin &lt;mailinglist.cache at gmail.com&gt;</li>
	<li>od: handle /proc files (which have filesize 0) correctly</li>
	<li>patch: don't trash permissions of patched file</li>
	<li>ps: add conditional support for -o [e]time</li>
	<li>ps: fix COMMAND column adjustment; overflow in USER and VSZ columns</li>
	<li>reset: call "stty sane". Closes bug 1414</li>
	<li>rmdir: optional long options support for Debian users. By Roberto Gordo Saez &lt;roberto.gordo AT gmail.com&gt;</li>
	<li>run-parts: add --reverse</li>
	<li>script: correctly handle buffered "tail" of output</li>
	<li>sed: "n" command must reset "we had successful subst" flag. Closes bug 1214</li>
	<li>sort: -z outputs NUL terminated lines. Closes bug 1591</li>
	<li>stty: fix mishandling of control keywords (Ralf Friedl &lt;Ralf.Friedl AT online.de&gt;)</li>
	<li>switch_root: stop at first non-option. Closes bug 1425</li>
	<li>syslogd: avoid excessive time() system calls</li>
	<li>syslogd: don't die if remote host's IP cannot be resolved. Retry resolutions every two minutes instead</li>
	<li>syslogd: fix shmat error check</li>
	<li>syslogd: optional support for dropping dups. Closes bug 436</li>
	<li>syslogd: send "\n"-terminated messages over the network. Fully closes bug 1574</li>
	<li>syslogd: tighten up hostname handling</li>
	<li>tail: fix "tail -c 20 /dev/huge_disk" (was taking ages)</li>
	<li>tar: compat: handle tarballs with only one zero block at the end</li>
	<li>tar: autodetection of gz/bz2 compressed tarballs. Closes bug 992</li>
	<li>tar: real support for -p. By Natanael Copa &lt;natanael.copa at gmail.com&gt;</li>
	<li>tcpudp: narrow down time window where we have no wildcard socket</li>
	<li>telnetd: use login always, not "sometimes login, sometimes shell"</li>
	<li>test: fix mishandling of "test ! arg1 op arg2 more args"</li>
	<li>trylink: instead of build error, disable --gc-sections if GLIBC and STATIC are selected</li>
	<li>udhcp: make file paths configurable</li>
	<li>udhcp: optional support for non-standard DHCP ports</li>
	<li>udhcp: set correct op byte in the packet for DHCPDECLINE</li>
	<li>udhcpc: filter unwanted packets in kernel (Cristian Ionescu-Idbohrn &lt;cristian.ionescu-idbohrn AT axis.com&gt;)</li>
	<li>udhcpc: fix wrong options in decline and release packets (Jonas Danielsson &lt;jonas.danielsson AT axis.com&gt;)</li>
	<li>umount: do not complain several times about the same mountpoint</li>
	<li>umount: do not try to free loop device or erase mtab if remounted ro</li>
	<li>umount: instead of non-standard -D, use -d with opposite meaning. Closes bug 1604</li>
	<li>unlzma: shrink by Pascal Bellard &lt;pascal.bellard AT ads-lu.com&gt;</li>
	<li>unzip: do not try to read entire compressed stream at once (it can be huge)</li>
	<li>unzip: handle short reads correctly</li>
	<li>vi: many fixes</li>
	<li>zcip: don't chdir to root</li>
	<li>zcip: open ARP socket before openlog (else we can trash syslog socket)</li>
      </ul>
  </li>

  <li><b>21 March 2008 -- BusyBox old stable releases</b>
    <p>
    Bugfix-only releases for four past branches. Links to locations
    for future hot patches are in parentheses.
    <p>
    <a href="http://busybox.net/downloads/busybox-1.9.2.tar.bz2">1.9.2</a>
    (<a href="http://busybox.net/downloads/fixes-1.9.2/">patches</a>),
    <a href="http://busybox.net/downloads/busybox-1.8.3.tar.bz2">1.8.3</a>
    (<a href="http://busybox.net/downloads/fixes-1.8.3/">patches</a>),
    <a href="http://busybox.net/downloads/busybox-1.7.5.tar.bz2">1.7.5</a>
    (<a href="http://busybox.net/downloads/fixes-1.7.5/">patches</a>),
    <a href="http://busybox.net/downloads/busybox-1.5.2.tar.bz2">1.5.2</a>
    (<a href="http://busybox.net/downloads/fixes-1.5.2/">patches</a>).
    <p>
    <a href="http://busybox.net/fix.html">How to add a patch.</a>
    </p>


  <li><b>12 February 2008 -- BusyBox 1.9.1 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.9.1.tar.bz2">BusyBox 1.9.1</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_9_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.9.1/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>This is a bugfix-only release, with fixes to fsck,
    iproute, mdev, mkswap, msh, nameif, stty, test, zcip.</p>
    <p>hush has `command` expansion re-enabled for NOMMU, although it is
    inherently unsafe (by virtue of NOMMU's use of vfork instead of fork).
    The plan is to make this less likely to bite people in future versions.</p>
  </li>

  <li><b>24 December 2007 -- BusyBox 1.9.0 (unstable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.9.0.tar.bz2">BusyBox 1.9.0</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_9_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.9.0/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>Sizes of busybox-1.8.2 and busybox-1.9.0 (with almost full config, static uclibc build):<pre>
   text    data     bss     dec     hex filename
 792796     978    9724  803498   c42aa busybox-1.8.2
 783803     683    7508  791994   c15ba busybox-1.9.0
</pre>
    <p>Top 10 stack users:<pre>
busybox-1.8.2:               busybox-1.9.0:
input_tab             10428  echo_dg                4116
umount_main            8252  bb_full_fd_action      4112
rtnl_talk              8240  discard_dg             4096
xrtnl_dump_filter      8240  echo_stream            4096
sendMTFValues          5316  discard_stream         4096
mainSort               4700  find_list_entry2       4096
mkfs_minix_main        4288  readlink_main          4096
grave                  4260  ipaddr_list_or_flush   3900
unix_do_one            4156  iproute_list_or_flush  3680
parse_prompt           4132  insmod_main            3152
</pre>

    <p>lash is deleted from this release. hush can be configured down to almost
       the same size, but it is significantly less buggy. It even works
       on NOMMU machines (interactive mode and backticks are not working on NOMMU,
       though). "lash" applet is still available, but it runs hush.

    <p>init has some changes in this release, please report if it causes
       problems for you.

    <p>Changes since previous release:
      <ul>
	<li>Build system improvements
	<li>Testsuite additions
	<li>Stack size reductions, code size reductions, data/bss reductions
	<li>An option to prefer IPv4 address if host has both
	<li>New applets: hd, sestatus
	<li>Removed applets: lash
	<li>hush: fixed a few bugs, wired up echo and test to be builtins
	<li>init: simplify forking of children
	<li>getty: special handling of '#' and '@' is removed
	<li>[su]login: sanitize environment if called by non-root
	<li>udhcpc: support "bad" servers which send oversized packets
	  (Cristian Ionescu-Idbohrn &lt;cristian.ionescu-idbohrn at axis.com&gt;)
	<li>udhcpc: -O option allows to specify which options to ask for
	  (Stefan Hellermann &lt;stefan at the2masters.de&gt;)
	<li>udhcpc: optionally check whether given IP is really free (by ARP ping)
	  (Jonas Danielsson &lt;jonas.danielsson at axis.com&gt;)
	<li>vi: now handles files with unlimited line length
	<li>vi: speedup for huge line lengths
	<li>vi: Del key works
	<li>sed: support GNUism '\t'
	<li>cp/mv/install: optionally use bigger buffer for bulk copying
	<li>line editing: don't eat stack like crazy
	<li>passwd: follows symlinked /etc/passwd
	<li>renice: accepts priority with +N too
	<li>netstat: wide output mode
	<li>nameif: extended matching (Nico Erfurth &lt;masta at perlgolf.de&gt;)
	<li>test: become NOFORK applet
	<li>find: -iname (Alexander Griesser &lt;alexander.griesser at lkh-vil.or.at&gt;)
	<li>df: -i option (show inode info) (Pascal Bellard &lt;pascal.bellard at ads-lu.com&gt;)
	<li>hexdump: -R option (Pascal Bellard &lt;pascal.bellard at ads-lu.com&gt;)
      </ul>
  </li>

  <li><b>23 November 2007 -- BusyBox 1.8.2 (stable), BusyBox 1.7.4 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.8.2.tar.bz2">BusyBox 1.8.2</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_8_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.8.2/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
    <p><a href="http://busybox.net/downloads/busybox-1.7.4.tar.bz2">BusyBox 1.7.4</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_7_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.7.4/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>These are bugfix-only releases.
    1.8.2 contains fixes for inetd, lash, tar, tr, and build system.
    1.7.4 contains a fix for inetd.</p>
  </li>

  <li><b>9 November 2007 -- BusyBox 1.8.1 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.8.1.tar.bz2">BusyBox 1.8.1</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_8_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.8.1/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>This is a bugfix-only release, with fixes to login (PAM), modprobe, syslogd, telnetd, unzip.</p>
  </li>

  <li><b>4 November 2007 -- BusyBox 1.8.0 (unstable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.8.0.tar.bz2">BusyBox 1.8.0</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_8_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.8.0/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>Note: this is probably the very last release with lash. It will be dropped. Please migrate to hush.

    <p>Applets which had many changes since 1.7.x:
    <p>httpd:
      <ul>
	<li>does not clear environment, CGIs will see all environment variables which were set for httpd
	<li>fix bug where we were trying to read more POSTDATA than content-length
	<li>fix trivial bug (spotted by Alex Landau)
	<li>optional support for partial downloads
	<li>simplified CGI i/o loop (now it looks good to me)
	<li>small auth and IPv6 fixes (Kim B. Heino &lt;Kim.Heino at bluegiga.com>)
	<li>support for proxying connection to other http server (by Alex Landau &lt;landau_alex at yahoo.com>)
      </ul>

    <p>top:
      <ul>
	<li>TOPMEM feature - 's(how sizes)' command
	<li>don't wait before final bailout (try top -b -n1)
	<li>fix for command line wrapping
      </ul>

    <p>Build system improvements: libbusybox mode restored (it was lost in transition to new makefiles).

    <p>Code and data size in comparison with 1.7.3:<pre>
Equivalent .config, i386 uclibc static builds:
   text    data     bss     dec     hex filename
 768123	   1055	  10768	 779946	  be6aa	busybox-1.7.3/busybox
 759693	    974	   9420	 770087	  bc027	busybox-1.8.0/busybox</pre>

    <p>New applets:
      <ul>
	<li>microcom: new applet by Vladimir Dronnikov &lt;dronnikov at gmail.ru&gt;
	<li>kbd_mode: new applet by Loic Grenie &lt;loic.grenie at gmail.com&gt;
	<li>bzip2: port bzip2 1.0.4 to busybox, 9 kb of code
	<li>pgrep, pkill: new applets by Loic Grenie &lt;loic.grenie at gmail.com&gt;
	<li>setsebool: new applet (Yuichi Nakamura &lt;ynakam at hitachisoft.jp&gt;)
      </ul>

    <p>Other changes since previous release (abridged):
      <ul>
	<li>cp: -r and -R imply -d (coreutils compat)
	<li>cp: detect and prevent infinite recursion
	<li>cp: make it a bit closer to POSIX, but still refuse to open and overwrite symbolic link
	<li>hdparm: reduce possibility of numeric overflow in -T
	<li>hdparm: simplify timing measurement
	<li>wget: -O FILE is allowed to overwrite existing file (compat)
	<li>wget: allow dots in header field names
	<li>telnetd: add -K option to close sessions as soon as child exits
	<li>telnetd: don't SIGKILL child when closing the session, kernel will send SIGHUP for us
	<li>ed: large cleanup, add line editing
	<li>hush: feeble attempt at making it more NOMMU-friendly
	<li>hush: fix glob()
	<li>hush: stop doing manual accounting of open fd's, kernel can do it for us
	<li>adduser: implement -S and fix uid selection
	<li>ash: fix prompt expansion (Natanael Copa &lt;natanael.copa at gmail.com&gt;)
	<li>ash: revert "cat | jobs" fix, it causes more problems than good
	<li>find: fix -xdev behavior in the presence of two or more nested mount points
	<li>grep: fix grep -F -e str1 -e str2 (was matching str2 only)
	<li>grep: optimization: stop on first -e match
	<li>gunzip: support concatenated gz files
	<li>inetd: fix bug 1562 "inetd does not set argv[0] properly" (fix by Ilya Panfilov)
	<li>install: 'support' (by ignoring) -v and -b
	<li>install: fix bug in "install -c file dir" (tried to copy dir into dir too)
	<li>ip: tunnel parameter parsing fix by Jean Wolter &lt;jw5 at os.inf.tu-dresden.de&gt;
	<li>isrv: use monotonic_sec
	<li>less: make 'f' key page forward
	<li>libiproute: add missing break statements
	<li>load_policy: update (Yuichi Nakamura &lt;ynakam at hitachisoft.jp&gt;)
	<li>logger: fix a problem of losing all argv except first
	<li>login: do reject wrong passwords with PAM auth
	<li>losetup: support -f (Loic Grenie &lt;loic.grenie at gmail.com&gt;)
	<li>fdisk: make fdisk compile on libc without llseek64
	<li>libbb: by popular request allow PATH to be customized at build time
	<li>mkswap: selinux support by KaiGai Kohei &lt;kaigai at ak.jp.nec.com&gt;
	<li>mount: allow (and ignore) -i
	<li>mount: ignore NFS bg option on NOMMU machines
	<li>mount: mount helpers support (by Vladimir Dronnikov &lt;dronnikov at gmail.ru&gt;)
	<li>passwd: handle Ctrl-C, restore termios on Ctrl-C
	<li>passwd: SELinux support by KaiGai Kohei &lt;kaigai at ak.jp.nec.com&gt;
	<li>ping: make -I ethN work too (-I addr already worked)
	<li>ps: fix RSS parsing (rss field in /proc/PID/stat is in pages, not bytes)
	<li>read_line_input: fix it to not do any fancy editing if echoing is disabled
	<li>run_parts: make it sort executables by name (required by API)
	<li>runsv: do not use clock_gettime if !MONOTONIC_CLOCK
	<li>runsvdir: fix "linear wait time" bug
	<li>sulogin: remove alarm handling, it is redundant there
	<li>svlogd: compat: svlogd -tt should timestamp stderr too
	<li>syslogd: bail out if you see null read from Unix socket
	<li>syslogd: do not need to poll(), we can just block in read()
	<li>tail: work correctly on /proc files (Kazuo TAKADA &lt;kztakada at sm.sony.co.jp&gt;)
	<li>tar + gzip/bzip2/etc: support NOMMU machines (by Alex Landau &lt;landau_alex at yahoo.com&gt;)
	<li>tar: strip leading '/' BEFORE memorizing hardlink's name
	<li>tftp: fix infinite retry bug
	<li>umount: support (by ignoring) -i; style fixes
	<li>unzip: fix endianness bugs
	<li>vi: don't wait 50 ms before reading ESC sequences
	<li>watchdog: allow millisecond spec (-t 250ms)
	<li>zcip: fix unaligned trap on ARM
      </ul>
  </li>

  <li><b>4 November 2007 -- BusyBox 1.7.3 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.7.3.tar.bz2">BusyBox 1.7.3</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_7_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.7.3/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>This is a bugfix-only release, with fixes to ash, httpd, inetd, iptun, logger, login, tail.</p>
  </li>

  <li><b>30 September 2007 -- BusyBox 1.7.2 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.7.2.tar.bz2">BusyBox 1.7.2</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_7_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.7.2/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>This is a bugfix-only release, with fixes to install, find, login, httpd, runsvdir, chcon, setfiles, fdisk and line editing.</p>
  </li>

  <li><b>16 September 2007 -- BusyBox 1.7.1 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.7.1.tar.bz2">BusyBox 1.7.1</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_7_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.7.1/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>This is a bugfix-only release, with fixes to cp, runsv, tar, busybox --install and build system.</p>
  </li>

  <li><b>24 August 2007 -- BusyBox 1.7.0 (unstable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.7.0.tar.bz2">BusyBox 1.7.0</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_7_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.7.0/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>Applets which had many changes since 1.6.x:
    <p>httpd:
      <ul>
	<li>works in standalone mode on NOMMU machines now (partly by Alex Landau &lt;landau_alex at yahoo.com&gt;)
	<li>indexer example is rewritten in C
	<li>optional support for error pages (by Pierre Metras &lt;genepi at sympatico.ca&gt;)
	<li>stop reading headers using 1-byte reads
	<li>new option -v[v]: prints client addresses, HTTP codes returned, URLs
	<li>extended -p PORT to -p [IP[v6]:]PORT
	<li>sendfile support (by Pierre Metras &lt;genepi at sympatico.ca&gt;)
	<li>add support for Status: CGI header
	<li>fix CGI handling bug (we were closing wrong fd)
	<li>CGI I/O loop still doesn't look 100% ok to me...
      </ul>

    <p>udhcp[cd]:
      <ul>
	<li>add -f "foreground" and -S "syslog" options
	<li>fixed "ifupdown + udhcpc_without_pidfile_creation" bug
	<li>new config option "Rewrite the lease file at every new acknowledge" (Mats Erik Andersson &lt;mats at blue2net.com&gt; (Blue2Net AB))
	<li>consistently treat server_config.start/end IPs as host-order
	<li>fix IP parsing for 64bit machines
	<li>fix unsafe hton macro usage in read_opt()
	<li>do not chdir to / when daemonizing
      </ul>

    <p>top, ps, killall, pidof:
      <ul>
	<li>simpler loadavg processing
	<li>truncate usernames to 8 chars
	<li>fix non-CONFIG_DESKTOP ps -ww (by rockeychu)
	<li>improve /proc/PID/cmdinfo reading code
	<li>use cmdline, not comm field (fixes problems with re-execed applets showing as processes with name "exe", and not being found by pidof/killall by applet name)
	<li>reduce CPU usage in decimal conversion (optional) (corresponding speedup on kernel side is accepted in mainline Linux kernel, yay!)
	<li>make percentile (0.1%) calculations configurable
	<li>add config option and code for global CPU% display
	<li>reorder columns, so that [P]PIDs are together and VSZ/%MEM are together - makes more sense
      </ul>

    <p>Build system improvements: doesn't link against libraries we don't need,
	generates verbose link output and map file, allows for custom link
	scripts (useful for removing extra padding, among other things).

    <p>Code and data size in comparison with 1.6.1:<pre>
Equivalent .config, i386 glibc dynamic builds:
   text    data     bss     dec     hex filename
 672671    2768   16808  692247   a9017 busybox-1.6.1/busybox
 662948    2660   13528  679136   a5ce0 busybox-1.7.0/busybox
 662783    2631   13416  678830   a5bae busybox-1.7.0/busybox.customld

Same .config built against static uclibc:
 765021    1059   11020  777100   bdb8c busybox-1.7.0/busybox_uc</pre>

    <p>Code/data shrink done in applets: crond, hdparm, dd, cal, od, nc, expr, uuencode,
	test, slattach, diff, ping, tr, syslogd, hwclock, zcip, find, pidof, ash, uudecode,
	runit/*, in libbb.

    <p>New applets:
      <ul>
	<li>pscan, expand, unexpand (from Tito &lt;farmatito at tiscali.it&gt;)
	<li>setfiles, restorecon (by Yuichi Nakamura &lt;ynakam at hitachisoft.jp&gt;)
	<li>chpasswd (by Alexander Shishkin &lt;virtuoso at slind.org&gt;)
	<li>slattach, ttysize
      </ul>

    <p>Unfortunately, not much work is done on shells. This was mostly stalled
	by lack of time (read: laziness) on my part to learn how to adapt existing
	qemu-runnable image for a NOMMU architechture (available on qemu website)
	for local testing of cross-compiled busybox on my machine.

    <p>Other changes since previous release (abridged):
      <ul>
	<li>addgroup: disallow addgroup -g num user group; make -g 0 work (Tito &lt;farmatito at tiscali.it&gt;)
	<li>adduser: close /etc/{passwd,shadow} before calling passwd etc. Spotted by Natanael Copa &lt;natanael.copa at gmail.com&gt;
	<li>arping: -i should be -I, fixed
	<li>ash: make "jobs | cat" work like in bash (was giving empty output)
	<li>ash: recognize -l as --login equivalent; do not recognize +-login
	<li>ash: fix buglet in DEBUG code (Nguyen Thai Ngoc Duy &lt;pclouds at gmail.com&gt;)
	<li>ash: fix SEGV if type has zero parameters
	<li>awk: fix -F 'regex' bug (miscounted fields if last field is empty)
	<li>catv: catv without arguments was trying to use environ as argv (Alex Landau &lt;landau_alex at yahoo.com&gt;)
	<li>catv: don't die on open error (emit warning)
	<li>chown/chgrp: completely match coreutils 6.8 wrt symlink handling
	<li>correct_password: do not print "no shadow passwd..." message
	<li>crond: don't start sendmail with absolute path, don't report obsolete version (report true bbox version)
	<li>dd: fix bug where we assume count=INT_MAX when count is unspecified
	<li>devfsd: sanitization by Tito &lt;farmatito at tiscali.it&gt;
	<li>echo: fix non-fancy echo
	<li>fdisk: make it work with big disks (read: typical today's disks) even if CONFIG_LFS is unset
	<li>find: -context support for SELinux (KaiGai Kohei &lt;kaigai at kaigai.gr.jp&gt;)
	<li>find: add conditional support for -maxdepth and -regex, make -size match GNU find
	<li>find: fix build failure on certain configs (found by Cristian Ionescu-Idbohrn &lt;cristian.ionescu-idbohrn at axis.com&gt;)
	<li>fsck_minix: make it print bb version, not it's own (outdated/irrelevant) one
	<li>grep: implement -m MAX_MATCHES, fix buglets with context printing
	<li>grep: fix selection done by FEATURE_GREP_EGREP_ALIAS (Maxime Bizon &lt;mbizon at freebox.fr&gt; (Freebox))
	<li>hush: add missing dependencies (Maxime Bizon &lt;mbizon at freebox.fr&gt; (Freebox))
	<li>hush: fix read builtin to not read ahead past EOL and to not use insane amounts of stack
	<li>ifconfig: make it work with ifaces with interface no. &gt; 255
	<li>ifup/ifdown: make location of ifstate configurable
	<li>ifupdown: make netmask parsing smaller and more strict (was accepting 255.0.255.0, 255.1234.0.0 etc...)
	<li>install: fix -s (strip) option, fix install a b /a/link/to/dir
	<li>libbb: consolidate ARRAY_SIZE macro (Walter Harms &lt;wharms at bfs.de&gt;)
	<li>libbb: make /etc/network parsing configurable. -200 bytes when off
	<li>libbb: nuke BB_GETOPT_ERROR, always die if there are mutually exclusive options
	<li>libbb: xioctl and friends by Tito &lt;farmatito at tiscali.it&gt;
	<li>login: optional support for PAM
	<li>login: make /etc/nologin support configurable (-240 bytes)
	<li>login: ask passwords even for wrong usernames
	<li>md5_sha1_sum: fix mishandling when run as /bin/md5sum
	<li>mdev: add support for firmware loading
	<li>mdev: work even when CONFIG_SYSFS_DEPRECATED in kernel is off
	<li>modprobe: add scanning of /lib/modules/`uname -r`/modules.symbols (by Yann E. MORIN &lt;yann.morin.1998 at anciens.enib.fr&gt;)
	<li>more: fixes by Tristan Schmelcher &lt;tpkschme at engmail.uwaterloo.ca&gt;
	<li>nc: make connecting to IPv4 from IPv6-enabled hosts easier (was requiring -s local_addr)
	<li>passwd: fix bug "updating shadow even if user's record is in passwd"
	<li>patch: fix -p -1 handling
	<li>patch: fix bad line ending handling (Nguyen Thai Ngoc Duy &lt;pclouds at gmail.com&gt;)
	<li>ping: display roundtrip times with 1/1000th of ms, not 1/10 ms precision.
	<li>ping: fix incorrect handling of -I (Iouri Kharon &lt;bc-info at styx.cabel.net&gt;)
	<li>ping: fix non-fancy ping6
	<li>printenv: fix "printenv VAR1 VAR2" bug (spotted by Kalyanatejaswi Balabhadrapatruni &lt;kalyanatejaswi at yahoo.co.in&gt;)
	<li>ps: fix -Z (by Yuichi Nakamura &lt;ynakam at hitachisoft.jp&gt;)
	<li>rpm: add optional support for bz2 data. +50 bytes of code
	<li>rpm: fix bogus "package is not installed" case
	<li>sed: fix 'q' command handling (by Nguyen Thai Ngoc Duy &lt;pclouds at gmail.com&gt;)
	<li>start_stop_daemon: NOMMU fixes by Alex Landau &lt;landau_alex at yahoo.com&gt;
	<li>stat: fix option -Z SEGV
	<li>strings: strings a b was processing a twice, fix that
	<li>svlogd: fix timestamping, do not warn if config is missing
	<li>syslogd, logread: get rid of head pointer, fix logread bug in the process
	<li>syslogd: do not convert tabs to ^I, set syslog IPC buffer to mode 0644
	<li>tar: improve OLDGNU compat, make old SUN compat configurable
	<li>test: fix testing primary expressions like '"-u" = "-u"'
	<li>uudecode: fix to base64 decode by Jorgen Cederlof &lt;jcz at google.com&gt;
	<li>vi: multiple fixes by Natanael Copa &lt;natanael.copa at gmail.com&gt;
	<li>wget: fix bug in base64 encoding (bug 1404). +10 bytes
	<li>wget: lift 256 chars limitation on terminal width
	<li>wget, zcip: use monotonic_sec instead of gettimeofday
      </ul>
  </li>

  <li><b>30 June 2007 -- BusyBox 1.6.1 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.6.1.tar.bz2">BusyBox 1.6.1</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_6_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.6.1/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>This is a bugfix-only release, with fixes to echo, hush, and wget.</p>
  </li>

  <li><b>1 June 2007 -- BusyBox 1.6.0 (unstable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.6.0.tar.bz2">BusyBox 1.6.0</a>.
    (<a href="http://busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_6_stable/">svn</a>,
    <a href="http://busybox.net/downloads/fixes-1.6.0/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>Since this is a x.x.0 release, it probably does not deserve "stable"
    label. Please help making 1.6.1 stable by testing 1.6.0.</p>
    <p>Note that hush shell had many changes and (hopefully) is much improved now,
    but there is a possibility that it regressed in some obscure cases. Please
    report any such cases.</p>
    <p>lash users please note: lash is going to be deprecated in busybox 1.7.0
    and removed in the more distant future. Please migrate to hush.</p>
    <p><a href="http://busybox.net/~vda/mem_usage-1.6.0.txt">Memory usage has decreased, but we can do better still</a></p>
    <p>Other changes since previous release:
    <ul>
<li>NOFORK: audit small applets and mark some of them as NOFORK. Put big scary warnings in relevant places
<li>NOFORK: factor out NOFORK/NOEXEC code from find. Use NOFORK/NOEXEC in find and xargs
<li>NOFORK: remove potential xmalloc from NOFORK path in bb_full_fd_action
<li>NOMMU: random fixes; compressed --help now works for NOMMU
<li>SELinux: load_policy applet
<li>[u]mount: extend -t option (Roy Marples &lt;uberlord at gentoo.org&gt;)
<li>addgroup: clean up, fix adding users to existing groups and make it optional (Tito)
<li>adduser: don't bomb out if shadow password file doesn't exist (from Tito &lt;farmatito at tiscali.it&gt;)
<li>applet.c: do not even try to read config if run by real root; fix suid config handling
<li>ash: fix infinite loop on exit if tty is not there anymore
<li>ash: fix kill -l (by Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;)
<li>ash: implement type -p, costs less than 10 bytes (patch by Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;)
<li>awk: don't segfault on printf(%*s). Closes bug 1337
<li>awk: guard against empty environment
<li>awk: some 'lineno' vars were shorts, made them ints (code got smaller)
<li>cat: stop using stdio.h opens
<li>config system: clarify PREFER_APPLETS/SH_STANDALONE effects in help text
<li>cryptpw: new applet (by Thomas Lundquist &lt;lists at zelow.no&gt;)
<li>cttyhack: new applet
<li>dd: NOEXEC fix; fix skip= parse error (spotted by Dirk Clemens &lt;develop at cle-mens.de&gt;)
<li>deluser: add optional support for removing users from groups (by Tito &lt;farmatito at tiscali.it&gt;)
<li>diff: fix SEGV (NULL deref) in diff -N
<li>diff: fix segfault on empty dirs (Peter Korsgaard &lt;peter.korsgaard at barco.com&gt;)
<li>dnsd: fix several buglets, make smaller; openlog(), so that applet's name is logged
<li>dpkg: run_package_script() returns 0 if all ok and non-zero if failure. The result code was checked incorrectly in two places. (from Kim B. Heino &lt;Kim.Heino at bluegiga.com&gt;)
<li>dpkg: use bitfields which are a bit closer to typical short/char. Code size -800 bytes
<li>dumpleases: getopt32()-ization (from Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;)
<li>e2fsprogs: stop using statics in chattr. Minor code shrinkage (-130 bytes)
<li>ether-wake: close bug 1317. Reorder fuctions to avoid forward refs while at it
<li>ether-wake: save a few more bytes of code
<li>find: -group, -depth (Natanael Copa &lt;natanael.copa at gmail.com&gt;)
<li>find: add support for -delete, -path (by Natanael Copa)
<li>find: fix -prune. Add big comment about it
<li>find: improve usage text (Natanael Copa &lt;natanael.copa at gmail.com&gt;)
<li>find: missed 'static' on const data; size and prune were mixed up; use index_in_str_array
<li>find: un-DESKTOPize (Kai Schwenzfeier &lt;niteblade at gmx.net&gt;)
<li>find_root_device: teach to deal with /dev/ subdirs (by Kirill K. Smirnov &lt;lich at math.spbu.ru&gt;)
<li>find_root_device: use lstat - don't follow links
<li>getopt32: fix llist_t options ordering. llist_rev is now unused
<li>getopt: use getopt32 for option parsing - inspired by patch by Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;
<li>hdparm: fix multisector mode setting (from Toni Mirabete &lt;amirabete at catix.cat&gt;)
<li>hdparm: make -T -t code smaller (-194 bytes), and output prettier
<li>ifupdown: make it possible to use DHCP clients different from udhcp
<li>ifupdown: reread state file before rewriting it. Fixes "ifup started another ifup" state corruption bug. Patch by Natanael Copa &lt;natanael.copa at gmail.com&gt;
<li>ifupdown: small optimization (avoid doing useless work if we are not going to update state file)
<li>ip: fix compilation if FEATURE_TR_CLASSES is off
<li>ip: mv ip*_main into ip.c; use a dispatcher to save on needless duplication. Saves a minor 12b
<li>ip: rewrite the ip applet to be less bloaty. Convert to index_in_(sub)str_array()
<li>ip: set the scope properly. Thanks to Jean Wolter
<li>iplink: shrink iplink; sanitize libiproute a bit (-916 bytes)
<li>iproute: shrink a bit (-200 bytes)
<li>kill: know much more signals; make code smaller; use common code for kill applet and ash kill builtin
<li>klogd: remove dependency on syslogd
<li>lash: "forking" applets are actually can be treated the same way as "non-forked". Also save a bit of space on trailing NULL array elements.
<li>lash: fix kill buglet (didn't properly recognize ESRCH)
<li>lash: make -c work; crush buffer overrun and free of non-malloced ptr (from Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;)
<li>lash: recognize and use NOFORK applets
<li>less: fix case when regex search finds nothing; fix very obscure memory corruption bug; fix less &lt;HUGEFILE + [End] busy loop
<li>libbb: add xsendto, xunlink, xpipe
<li>libbb: fix segfault in reset_ino_dev_hashtable() when *hashtable was NULL
<li>libbb: make pidfile writing configurable
<li>libbb: make xsocket die with address family printed (if VERBOSE_RESOLUTION_ERRORS=y)
<li>libbb: rework NOMMU helper API so that it makes more sense and easier to use
<li>libiproute: audit callgraph, shortcut error paths into die() functions
<li>lineedit: do not try to open NULL history file
<li>lineedit: nuke two unused variables and code which sets them
<li>login: remove setpgrp call (makes it work from shell prompt again); sanitize stdio descriptors (we are suid, need to be careful!)
<li>login: shrink login and set_environment by ~100 bytes
<li>mount: fix incorrect usage of strtok (inadvertently used NULL sometimes)
<li>mount: fix mounting of symlinks (mount from util-linux allows that)
<li>msh: data/bss reduction (more than 9k of it); fix "underscore bug" (a_b=1111 didn't work); fix obscure case with backticks and closed fd 1
<li>nc: port nc 1.10 to busybox
<li>netstat: fix for bogus state value for raw sockets
<li>netstat: introduce -W: wide, ipv6-friendly output; shrink by ~500 bytes
<li>nmeter: should die if stdout doesn't like him anymore
<li>patch: do not try to delete same file twice
<li>ping: fix wrong sign extension of packet id (bug 1373)
<li>ps: add -o tty and -o rss support; make a bit smaller; work around libc bug: printf("%.*s\n", MAX_INT, buffer)
<li>run_parts: rewrite
<li>run_parts: do not check path portion of a name for "bad chars". Needed for ifupdown. Patch by Gabriel L. Somlo &lt;somlo at cmu.edu&gt;
<li>sed: fix escaped newlines in -f
<li>split: new applet
<li>stat: remove superfluous bss user (flags) and manually unswitch some areas
<li>stty: fix option parsing bug (spotted by Sascha Hauer &lt;s.hauer at pengutronix.de&gt;)
<li>svlogd: fix 'SEGV on uninitialized data' and make it honor TERM
<li>tail: fix SEGV on "tail -N"
<li>ipsvd: tcpsvd,udpsvd are new applets, GPL-ed 'clones' of Dan Bernstein's tcpserver. Author: Gerrit Pape &lt;pape at smarden.org&gt;, http://smarden.sunsite.dk/ipsvd/
<li>test: close bug 1371; plug a memory leak; code size reduction
<li>tftp: code diet, and I think retransmits were broken
<li>tr: fix bug where we did not reject invalid classes like '[[:alpha'. debloat while at it
<li>udhcp: MAC_BCAST_ADDR and blank_chaddr are in fact constant, move to rodata; use pipe instead of socketpair
<li>udhcp[cd]: stop using atexit magic fir pidfile removal; stop deleting our own pidfile if we daemonize
<li>xargs: shrink code, ~80 bytes; simplify word list management
<li>zcip: make it work on NOMMU (+ improve NOMMU support machinery)
    </ul>
  </li>

  <li><b>20 May 2007 -- BusyBox 1.5.1 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.5.1.tar.bz2">BusyBox 1.5.1</a>.
    (<a href="http://busybox.net/downloads/fixes-1.5.1/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>This is a bugfix-only release, with fixes to hdparm, hush, ifupdown, ps
    and sed.</p>
  </li>

  <li><b>23 March 2007 -- BusyBox 1.5.0 (unstable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.5.0.tar.bz2">BusyBox 1.5.0</a>.
    (<a href="http://busybox.net/downloads/fixes-1.5.0/">patches</a>,
    <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>

    <p>Since this is a x.x.0 release, it probably does not deserve "stable"
    label. Please help making 1.5.1 stable by testing 1.5.0.</p>
    <p>Notable changes since previous release:
    <ul>
    <li>find: added support for -user, -not, fixed -mtime, -mmin, -perm
    <li>[de]archivers: merge common logic into one module
    <li>ping[6]: unified code for both
    <li>less: regex search improved
    <li>ash: more readable code, testsuite added
    <li>sed: several very obscure bugs fixed
    <li>chown: -H, -L, -P support (required by POSIX)
    <li>tar: handle (broken) checksums a-la Sun; tar restores mode again
    <li>grep: implement -w, "implement" -a and -I by ignoring them
    <li>cp: more sane behavior when overwriting existing files
    <li>init: stop doing silly things with the console (-400 bytes)
    <li>httpd: make httpd usable for NOMMU CPUs; fix POSTDATA handling bugs
    <li>httpd: run interpreter for configured file extensions in any dir,
        not only in /cgi-bin/
    <li>chrt: new applet
    <li>SELinux: SELinux-related code and -Z option added to several applets,
        new SELinux-specific applets: chcon, runcon.
    <li>Build system: produces link map, uses -Wwrite-strings to catch
        improper usage of string constants.
    <li>Data and bss section usage audited and reduced - should help NOMMU
        targets.
    <li>Applets with bug fixes: gunzip, vi, syslogd, dpkg, ls, adjtimex, resize,
        sv, printf, diff, awk, sort, dpkg, diff, tftp
    <li>Applets with usability improvements: swapon, more, ifup/ifdown, hwclock,
        udhcpd, start_stop_daemon, cmp
    <li>Applets with code cleaned up: telnet, fdisk, fsck_minix, mkfs_minix,
        syslogd, swapon, runsv, svlogd, klogd
    </ul>
  </li>

  <li><b>18 March 2007 -- BusyBox 1.4.2 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.4.2.tar.bz2">BusyBox 1.4.2</a>.
    </p>

    <p>This release includes only trivial fixes accumulated since 1.4.1.
    </p>
  </li>

  <li><b>25 January 2007 -- BusyBox 1.4.1 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.4.1.tar.bz2">BusyBox 1.4.1</a>.
    (<a href="http://busybox.net/downloads/fixes-1.4.1/">patches</a>)</p>

    <p>This release includes only trivial fixes accumulated since 1.4.0.
    </p>
  </li>

  <li><b>20 January 2007 -- BusyBox 1.4.0 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.4.0.tar.bz2">BusyBox 1.4.0</a>.
    (<a href="http://busybox.net/downloads/fixes-1.4.0/">patches</a>)</p>

    <p>Since this is a x.x.0 release, it probably is a bit less "stable"
    than usual.</p>
    <p>Changes since previous release:
    <ul>
    <li>e2fsprogs are mostly removed from busybox. Some smaller parts remain,
    the rest of it sits disabled in e2fsprogs/old_e2fsprogs/*, because
    it's too bloated. Really. I'm afraid it's about the only way we can
    ever get e2fsprogs cleaned up.
    <li>less: many improvements. Now can display binary files
    (although I expect it to have trouble with displays where 8bit chars
    don't have 1-to-1 char/glyph relationship). Regexp search is not buggy
    anymore. Less does not read entire input up-front. Reads input
    as it appears (yay!). Works rather nice as man pager. I recommend it
    for general use now.
    <li>IPv6: generic support is in place, many networking applets are
    upgraded to be IPv6 capable. Probably some work remains, but it is
    already much better than what we had previously.
    <li>arp: new applet (thanks to Eric Spakman).
    <li>fakeidentd: non-forking standalone server part was taking ~90%
    of the applet. Factored it out (in fact, rewrote it).
    <li>syslogd: mostly rewritten.
    <li>decompress_unzip, gzip: sanitized a bit.
    <li>sed: better hadling of NULs
    <li>httpd: stop adding our own "Content-type:" to CGI output
    <li>chown: user.grp works again.
    <li>minor bugfixes to: passwd, date, tftp, start_stop_daemon, tar,
    ps, ifupdown, time, su, stty, awk, ping[6], sort,...
    </ul>
  </li>

  <li><b>20 January 2007 -- BusyBox 1.3.2 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.3.2.tar.bz2">BusyBox 1.3.2</a>.</p>

    <p>This release includes only one trivial fix accumulated since 1.3.1
    </p>
  </li>

  <li><b>27 December 2006 -- BusyBox 1.3.1 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.3.1.tar.bz2">BusyBox 1.3.1</a>.
    (<a href="http://busybox.net/downloads/fixes-1.3.1/">patches</a>)</p>

    <p>Closing 2006 with new release. It includes only trivial fixes accumulated since 1.3.0
    </p>
  </li>

  <li><b>14 December 2006 -- BusyBox 1.3.0 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.3.0.tar.bz2">BusyBox 1.3.0</a>.
    (<a href="http://busybox.net/downloads/fixes-1.3.0/">patches</a>)</p>

    <p>This release has CONFIG_DESKTOP option which enables features
    needed for busybox usage on desktop machine. For example, find, chmod
    and chown get several less frequently used options, od is significantly
    bigger but matches GNU coreutils, etc. Intended to eventually make
    busybox a viable alternative for "standard" utilities for slightly
    adventurous desktop users.
    <p>Changes since previous release:
    <ul>
    <li>find: taking many more of standard options
    <li>ps: POSIX-compliant -o implemented
    <li>cp: added -s, -l
    <li>grep: added -r, fixed -h
    <li>watch: make it exec child like standard one does (was totally
        incompatible)
    <li>tar: fix limitations which were preventing bbox tar usage
        on big directories: long names and linknames, pax headers
        (Linux kernel tarballs have that). Fixed a number of obscure bugs.
        Raised max file limit (now 64Gb). Security fixes (/../ attacks).
    <li>httpd: added -i (inetd), -f (foreground), support for
        directory indexer CGI (example is included), bugfixes.
    <li>telnetd: fixed/improved IPv6 support, inetd+standalone support,
        other fixes. Useful IPv6 stuff factored out into libbb.
    <li>runit/*: new applets adapted from http://smarden.sunsite.dk/runit/
        (these are my personal favorite small-and-beautiful toys)
    <li>minor bugfixes to: login, dd, mount, umount, chmod, chown, ln, udhcp,
        fdisk, ifconfig, sort, tee, mkswap, wget, insmod.
    </ul>
    <p>Note that GnuPG key used to sign this release is different.
    1.2.2.1 is also signed post-factum now. Sorry for the mess.
    </p>
  </li>

  <li><b>29 October 2006 -- BusyBox 1.2.2.1 (fix)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.2.2.1.tar.bz2">BusyBox 1.2.2.1</a>.</p>

    <p>Added compile-time warning that static linking against glibc
    produces buggy executables.
  </li>

  <li><b>24 October 2006 -- BusyBox 1.2.2 (stable)</b>
    <p>It's a bit overdue, but
    <a href="http://busybox.net/downloads/busybox-1.2.2.tar.bz2">here is
    BusyBox 1.2.2</a>.</p>

    <p>This release has dozens of fixes backported from the ongoing development
    branch.  There are a couple of bugfixes to sed, two fixes to documentation
    generation (BusyBox.html shouldn't have USE() macros in it anymore), fix
    umount to report the right errno on failure and to umount block devices by
    name with newer kernels, fix mount to handle symlinks properly, make mdev
    delete device nodes when called for hotplug remove, fix a segfault
    in traceroute, a minor portability fix to md5sum option parsing, a build
    fix for httpd with old gccs, an options parsing tweak to hdparm, make test
    fail gracefully when getgroups() returns -1, fix a race condition in
    modprobe when two instances run at once (hotplug does this), make "tar xf
    foo.tar dir/dir" extract all subdirectories, make our getty initialize the
    terminal more like mingetty, an selinux build fix, an endianness fix in
    ping6, fix for zcip defending addresses, clean up some global variables in
    gzip to save memory, fix sulogin -tNNN, a help text tweak, several warning
    fixes and build fixes, fixup dnsd a bit, and a partridge in a pear tree.</p>

    <p>As <a href="http://lwn.net/Articles/202106/">Linux Weekly News noted</a>,
    this is my (Rob's) last release of BusyBox.  The new maintainer is Denis
    Vlasenko, I'm off to do <a href="http://landley.net/code">other things</a>.
    </p>
  </li>

  <li><b>29 September 2006 -- New license email address.</b>
    <p>The email address gpl@busybox.net is now the recommended way to contact
    the Software Freedom Law Center to report BusyBox license violations.</p>

  <li><b>31 July 2006 -- BusyBox 1.2.1 (stable)</b>
    <p>Since nobody seems to have objected too loudly over the weekend, I
    might as well point you all at
    <a href="http://busybox.net/downloads/busybox-1.2.1.tar.bz2">Busybox
    1.2.1</a>, a bugfix-only release with no new features.</p>

    <p>It has three shell fixes (two to lash: going "var=value" without
    saying "export" should now work, plus a missing null pointer check, and
    one to ash when redirecting output to a file that fills up.)  Fix three
    embarassing thinkos in the new dmesg command.  Two build tweaks
    (dependencies for the compressed usage messages and running make in the
    libbb subdirectory).  One fix to tar so it can extract git-generated
    tarballs (rather than barfing on the pax extensions).  And a partridge
    in a pear...  Ahem.</p>

    <p>But wait, there's more!  A passwd changing fix so an empty
    gecos field doesn't trigger a false objection that the new passwd contains
    the gecos field.  Make all our setuid() and setgid() calls check the return
    value in case somebody's using per-process resource limits that prevent
    a user from having too many processes (and thus prevent a process from
    switching away from root, in which case the process will now _die_ rather
    than continue with root privileges).  A fix to adduser to make sure that
    /etc/group gets updated.  And a fix to modprobe to look for modules.conf
    in the right place on 2.6 kernels.</p>

  <li><b>30 June 2006 -- BusyBox 1.2.0</b>
    <p>The -devel branch has been stabilized and the result is
    <a href="http://busybox.net/downloads/busybox-1.2.0.tar.bz2">Busybox
    1.2.0</a>.  Lots of stuff changed, I need to work up a decent changelog
    over the weekend.</p>

    <p>I'm still experimenting with how long is best for the development
    cycle, and since we've got some largeish projects queued up I'm going to
    try a longer one.  Expect 1.3.0 in December.  (Expect 1.2.1 any time
    we fix enough bugs. :)</p>

    <p>Update: Here are <a href="http://busybox.net/downloads/busybox-1.2.0.fixes.patch">the first few bug fixes</a> that will go into 1.2.1.</p>

  <li><b>17 May 2006 -- BusyBox 1.1.3 (stable)</b>
    <p><a href="http://busybox.net/downloads/busybox-1.1.3.tar.bz2">BusyBox
    1.1.3</a> is another bugfix release.  It makes passwd use salt, fixes a
    memory freeing bug in ls, fixes "build all sources at once" mode, makes
    mount -a not abort on the first failure, fixes msh so ctrl-c doesn't kill
    background processes, makes patch work with patch hunks that don't have a
    timestamp, make less's text search a lot more robust (the old one could
    segfault), and fixes readlink -f when built against uClibc.</p>

    <p>Expect 1.2.0 sometime next month, which won't be a bugfix release.</p>

  <li><b>10 April 2006 -- BusyBox 1.1.2 (stable)</b>
    <p>You can now download <a href="http://busybox.net/downloads/busybox-1.1.2.tar.bz2">BusyBox 1.1.2</a>, a bug fix release consisting of 11 patches
    backported from the development branch: Some build fixes, several fixes
    for mount and nfsmount, a fix for insmod on big endian systems, a fix for
    find -xdev, and a fix for comm.  Check the file "changelog" in the tarball
    for more info.</p>

    <p>The next new development release (1.2.0) is slated for June.  A 1.1.3
    will be released before then if more bug fixes crop up.  (The new plan is
    to have a 1.x.0 new development release every 3 months, with 1.x.y stable
    bugfix only releases based on that as appropriate.)</p>

  <li><b>27 March 2006 -- Software Freedom Law Center representing BusyBox and uClibc</b>
    <p>One issue Erik Andersen wanted to resolve when handing off BusyBox
    maintainership to Rob Landley was license enforcement.  BusyBox and
    uClibc's existing license enforcement efforts (pro-bono representation
    by Erik's father's law firm, and the
    <a href="http://www.busybox.net/shame.html">Hall of Shame</a>), haven't
    scaled to match the popularity of the projects.  So we put our heads
    together and did the obvious thing: ask Pamela Jones of
    <a href="http://www.groklaw.net">Groklaw</a> for suggestions.  She
    referred us to the fine folks at softwarefreedom.org.</p>

    <p>As a result, we're pleased to announce that the
    <a href="http://www.softwarefreedom.org">Software Freedom Law Center</a>
    has agreed to represent BusyBox and uClibc.  We join a number of other
    free and open source software projects (such as
    <a href="http://lwn.net/Articles/141806/">X.org</a>,
    <a href="http://lwn.net/Articles/135413/">Wine</a>, and
    <a href="http://plone.org/foundation/newsitems/software-freedom-law-center-support/">Plone</a>
    in being represented by a fairly cool bunch of lawyers, which is not a
    phrase you get to use every day.</p>

  <li><b>22 March 2006 -- BusyBox 1.1.1</b>
    <p>The new maintainer is Rob Landley, and the new release is <a href="http://busybox.net/downloads/busybox-1.1.1.tar.bz2">BusyBox 1.1.1</a>.  Expect a "what's new" document in a few days.  (Also, Erik and I have have another announcement pending...)</p>
    <p>Update: Rather than put out an endless stream of 1.1.1.x releases,
    the various small fixes have been collected together into a
    <a href="http://busybox.net/downloads/busybox-1.1.1.fixes.patch">patch</a>,
    and new fixes will be appended to that as needed.  Expect 1.1.2 around
    June.</p>
  </li>
  <li><b>11 January 2006 -- 1.1.0 is out</b>
    <p>The new stable release is
    <a href="http://www.busybox.net/downloads/busybox-1.1.0.tar.bz2">BusyBox
    1.1.0</a>.  It has a number of improvements, including several new applets.
    (It also has <a href="http://www.busybox.net/lists/busybox/2006-January/017733.html">a few rough spots</a>,
    but we're trying out a "release early, release often" strategy to see how
    that works.  Expect 1.1.1 sometime in March.)</p>

  <li><b>31 October 2005 -- 1.1.0-pre1</b>
    <p>The development branch of busybox is stable enough for wider testing, so
    you can now
    <a href="http://www.busybox.net/downloads/busybox-1.1.0-pre1.tar.bz2">download</a>,
    the first prerelease of 1.1.0.  This prerelease includes a lot of
    <a href="http://www.busybox.net/downloads/BusyBox.html">new
    functionality</a>: new applets, new features, and extensive rewrites of
    several existing applets.  This prerelease should be noticeably more
    <a href="http://www.opengroup.org/onlinepubs/009695399/">standards
    compliant</a> than earlier versions of busybox, although we're
    still working out the <a href="http://bugs.busybox.net">bugs</a>.</p>

  <li><b>16 August 2005 -- 1.01 is out</b>

    <p>A new stable release (<a href="http://www.busybox.net/downloads/busybox-1.01.tar.bz2">BusyBox
    1.01</a>) is now available for download, containing over a hundred
    <a href="http://www.busybox.net/lists/busybox/2005-August/015424.html">small
    fixes</a> that have cropped up since the 1.00 release.</p>

  <li><b>13 January 2005 -- Bug and Patch Tracking</b><p>

    Bug reports sometimes get lost when posted to the mailing list.  The
    developers of BusyBox are busy people, and have only so much they can keep
    in their brains at a time. In my case, I'm lucky if I can remember my own
    name, much less a bug report posted last week... To prevent your bug report
    from getting lost, if you find a bug in BusyBox, please use the
    <a href="http://bugs.busybox.net/">shiny new Bug and Patch Tracking System</a>
    to post all the gory details.

    <p>

    The same applies to patches... Regardless of whether your patch
    is a bug fix or adds spiffy new features, please post your patch
    to the Bug and Patch Tracking System to make certain it is
    properly considered.


  <p>
  <li><b>13 October 2004 -- BusyBox 1.00 released</b><p>

    When you take a careful look at nearly every embedded Linux device or
    software distribution shipping today, you will find a copy of BusyBox.
    With countless routers, set top boxes, wireless access points, PDAs, and
    who knows what else, the future for Linux and BusyBox on embedded devices
    is looking very bright.

    <p>

    It is therefore with great satisfaction that I declare each and every
    device already shipping with BusyBox is now officially out of date.
    The highly anticipated release of BusyBox 1.00 has arrived!

    <p>

    Over three years in development, BusyBox 1.00 represents a tremendous
    improvement over the old 0.60.x stable series.  Now featuring a Linux
    KernelConf based configuration system (as used by the Linux kernel),
    Linux 2.6 kernel support, many many new applets, and the development
    work and testing of thousands of people from around the world.

    <p>

    If you are already using BusyBox, you are strongly encouraged to upgrade to
    BusyBox 1.00.  If you are considering developing an embedded Linux device
    or software distribution, you may wish to investigate if using BusyBox is
    right for your application.  If you need help getting started using
    BusyBox, if you wish to donate to help cover expenses, or if you find a bug
    and need help reporting it, you are invited to visit the <a
    href="FAQ.html">BusyBox FAQ</a>.

    <p>

    As usual you can <a href="downloads">download busybox here</a>.

    <p>Have Fun!

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


  <li><b>16 August 2004 -- BusyBox 1.0.0-rc3 released</b><p>

    Here goes release candidate 3...
    <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>
  <li><b>26 July 2004 -- BusyBox 1.0.0-rc2 released</b><p>

    Here goes release candidate 2...
    <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>
  <li><b>20 July 2004 -- BusyBox 1.0.0-rc1 released</b><p>

    Here goes release candidate 1...  This fixes all (most?) of the problems
    that have turned up since -pre10.  In particular, loading and unloading of
    kernel modules with 2.6.x kernels should be working much better.
    <p>

    I <b>really</b> want to get BusyBox 1.0.0 released soon and I see no real
    reason why the 1.0.0 release shouldn't happen with things pretty much as
    is.  BusyBox is in good shape at the moment, and it works nicely for
    everything that I'm doing with it.  And from the reports I've been getting,
    it works nicely for what most everyone else is doing with it as well.
    There will eventually be a 1.0.1 anyway, so we might as well get on with
    it.  No, BusyBox is not perfect.  No piece of software ever is.  And while
    there is still plenty that can be done to improve things, most of that work
    is waiting till we can get a solid 1.0.0 release out the door....
    <p>

    Please do not bother to send in patches adding cool new features at this
    time.  Only bug-fix patches will be accepted.  If you have submitted a
    bug-fixing patch to the busybox mailing list and no one has emailed you
    explaining why your patch was rejected, it is safe to say that your patch
    has been lost or forgotten.  That happens sometimes.  Please re-submit your
    bug-fixing patch to the BusyBox mailing list, and be sure to put "[PATCH]"
    at the beginning of the email subject line!

    <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>
    On a less happy note, My 92 year old grandmother (my dad's mom) passed away
    yesterday (June 19th).  The funeral will be Thursday in a little town about
    2 hours south of my home.  I've checked and there is absolutely no way I
    could be back in time for the funeral if I attend <a
    href="http://www.linuxsymposium.org/2004/">OLS</a> and give my presentation
    as scheduled.
    <p>
    As such, it is with great reluctance and sadness that I have come
    to the conclusion I will have to make my appologies and skip OLS
    this year.
    <p>


  <p>
  <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 very soon.  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>


  <li><b>4 February 2004 -- BusyBox 1.0.0-pre7 released</b><p>

    There was a bug in -pre6 that broke argument parsing for a
    number of applets, since a variable was not being zeroed out
    properly.  This release is primarily intended to fix that one
    problem.  In addition, this release fixes several other
    problems, including a rewrite by mjn3 of the code for parsing
    the busybox.conf file used for suid handling, some shell updates
    from vodz, and a scattering of other small fixes.  We are still
    aiming to finish off the -pre series in February and move on to
    the final 1.0.0 release...  If you see any problems, of have
    suggestions to make, as always, please feel free to email 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>30 January 2004 -- BusyBox 1.0.0-pre6 released</b><p>

    Here goes the next pre-release for the new BusyBox stable
    series.  This release adds a number of size optimizations,
    updates udhcp, fixes up 2.6 modutils support, updates ash
    and the shell command line editing, and the usual pile of
    bug fixes both large and small.  Things appear to be
    settling down now, so with a bit of luck and some testing
    perhaps we can finish off the -pre series in February and
    move on to the final 1.0.0 release...  If you see any
    problems, of have suggestions to make, as always, please
    feel free to email the busybox mailing list.

    <p>

    People who rely on the <a href="downloads/snapshots/">daily BusyBox snapshots</a>
    should be aware that snapshots of the old busybox 0.60.x
    series are no longer available.  Daily snapshots are now
    only available for the BusyBox 1.0.0 series and now use
    the naming scheme "busybox-&lt;date&gt;.tar.bz2".  Please
    adjust any build scripts using the old naming scheme accordingly.

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



  <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>
  <li><b>12 Sept 2003 -- BusyBox 1.0.0-pre3 released</b><p>

    Here goes the third pre-release for the new BusyBox stable
    series.  The last prerelease has held up quite well under
    testing, but a number of problems have turned up as the number
    of people using it has increased.  Thanks everyone for all
    the testing, bug reports, and patches!

    <p>

    If you have submitted a patch or a bug report to the busybox
    mailing list and no one has emailed you explaining why your
    patch was rejected, it is safe to say that your patch has
    somehow gotten lost or forgotten.  That happens sometimes.
    Please re-submit your patch or bug report to the BusyBox
    mailing list!

    <p>

    The point of the "-preX" versions is to get a larger group of
    people and vendors testing, so any problems that turn up can be
    fixed prior to the final 1.0.0 release.  The main feature
    (besides additional testing) that is still still on the TODO
    list before the final BusyBox 1.0.0 release is sorting out the
    modutils issues.  For the new 2.6.x kernels, we already have
    patches adding insmod and rmmod support and those need to be
    integrated.  For 2.4.x kernels, for which busybox only supports
    a limited number of architectures, we may want to invest a bit
    more work before we cut 1.0.0.  Or we may just leave 2.4.x
    module loading alone.

    <p>

    I had hoped this release would be out a month ago.  And of
    course, it wasn't since Erik became busy getting a release of
    <a href="http://www.uclibc.org/">uClibc</a>
    out the door.  Many thanks to Glenn McGrath (bug1) for
    stepping in and helping get a bunch of patches merged!  I am
    not even going to state a date for releasing BusyBox 1.0.0
    -pre4 (or the final 1.0.0).  We're aiming for late September...
    But if this release proves as to be exceptionally stable (or
    exceptionally unstable!), the next release may be very soon
    indeed.

    <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>
    <li><b>30 July 2003 -- BusyBox 1.0.0-pre2 released</b><p>

    Here goes another pre release for the new BusyBox stable
    series.  The last prerelease (pre1) was given quite a lot of
    testing (thanks everyone!) which has helped turn up a number of
    bugs, and these problems have now been fixed.

    <p>

    Highlights of -pre2 include updating the 'ash' shell to sync up
    with the Debian 'dash' shell, a new 'hdparm' applet was added,
    init again supports pivot_root,  The 'reboot' 'halt' and
    'poweroff' applets can now be used without using busybox init.
    an ifconfig buffer overflow was fixed, losetup now allows
    read-write loop devices, uClinux daemon support was added, the
    'watchdog', 'fdisk', and 'kill' applets were rewritten, there were
    tons of doc updates, and there were many other bugs fixed.
    <p>

    If you have submitted a patch and it is not included in this
    release and Erik has not emailed you explaining why your patch
    was rejected, it is safe to say that he has lost your patch.
    That happens sometimes.   Please re-submit your patch to the
    BusyBox mailing list.
    <p>

    The point of the "-preX" versions is to get a larger group of
    people and vendors testing, so any problems that turn up can be
    fixed prior to the final 1.0.0 release.  The main feature that
    is still still on the TODO list before the final BusyBox 1.0.0
    release is adding module support for the new 2.6.x kernels.  If
    necessary, a -pre3 BusyBox release will happen on August 6th.
    Hopefully (i.e.  unless some horrible catastrophic problem
	    turns up) the final BusyBox 1.0.0 release will be ready by
    then...
    <p>

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

    <p>Have Fun!
    <p>

    <p>
  <li><b>15 July 2003 -- BusyBox 1.0.0-pre1 released</b><p>

    The busybox development series has been under construction for
    nearly two years now.  Which is just entirely too long...  So
    it is with great pleasure that I announce the imminent release
    of a new stable series.  Due to the huge number of changes
    since the last stable release (and the usual mindless version
    number inflation) I am branding this new stable series verison
    1.0.x...
    <p>

    The point of "-preX" versions is to get a larger group of
    people and vendors testing, so any problems that turn up can be
    fixed prior to the magic 1.0.0 release (which should happen
    later this month)...  I plan to release BusyBox 1.0.0-pre2 next
    Monday (July 21st), and, if necessary, -pre3 on July 28th.
    Hopefully (i.e. unless some horrible catastrophic problem turns
    up) the final BusyBox 1.0.0 release should be ready by the end
    of July.
    <p>

    If you have submitted patches, and they are not in this release
    and I have not emailed you explaining why your patch was
    rejected, it is safe to say that I have lost your patch.  That
    happens sometimes.  Please do <b>NOT</b> send all your patches,
    support questions, etc, directly to Erik.  I get hundreds of
    emails every day (which is why I end up losing patches
    sometimes in the flood)...  The busybox mailing list is the
    right place to send your patches, support questions, etc.
    <p>

    I would like to especially thank Vladimir Oleynik (vodz), Glenn
    McGrath (bug1), Robert Griebl (sandman), and Manuel Novoa III
    (mjn3) for their significant efforts and contributions that
    have made this release possible.
    <p>

    As usual you can <a href="downloads">download busybox here</a>.
    You don't really need to bother with the
    <a href="downloads/Changelog">changelog</a>, as the changes
    vs the stable version are way too extensive to easily enumerate.
    But you can take a look if you really want too.

    <p>Have Fun!
    <p>



  <p>
  <li><b>26 October 2002 -- BusyBox 0.60.5 released</b><p>

    I am very pleased to announce that the BusyBox 0.60.5 (stable)
    is now available for download.  This is a bugfix release for
    the stable series to address all the problems that have turned
    up since the last release.  Unfortunately, the previous release
    had a few nasty bugs (i.e. init could deadlock, gunzip -c tried
    to delete source files, cp -a wouldn't copy symlinks, and init
    was not always providing controlling ttys when it should have).
    I know I said that the previous release would be the end of the
    0.60.x series.  Well, it turns out I'm a liar.  But this time I
    mean it (just like last time ;-).  This will be the last
    release for the 0.60.x series --  all further development work
    will be done for the development busybox tree.  Expect the development
    version to have its first real release very very soon now...

    <p>
    The <a href="downloads/Changelog.full">changelog</a> has all
    the details.  As usual you can <a href="downloads">download busybox here</a>.
    <p>Have Fun!
    <p>

  <p>
  <li><b>18 September 2002 -- BusyBox 0.60.4 released</b><p>

    I am very pleased to announce that the BusyBox 0.60.4
    (stable) is now available for download.  This is primarily
    a bugfix release for the stable series to address all
    the problems that have turned up since the last
    release.  This will be the last release for the 0.60.x series.
    I mean it this time --  all further development work will be done
    on the development busybox tree, which is quite solid now and
    should soon be getting its first real release.

    <p>
    The <a href="downloads/Changelog.full">changelog</a> has all
    the details.  As usual you can <a href="downloads">download busybox here</a>.
    <p>Have Fun!
    <p>


  <p>
  <li><b>27 April 2002 -- BusyBox 0.60.3 released</b><p>

    I am very pleased to announce that the BusyBox 0.60.3 (stable) is
    now available for download.  This is primarily a bugfix release
    for the stable series.  A number of problems have turned up since
    the last release, and this should address most of those problems.
    This should be the last release for the 0.60.x series.  The
    development busybox tree has been progressing nicely, and will
    hopefully be ready to become the next stable release.

    <p>
    The <a href="downloads/Changelog">changelog</a> has all
    the details.  As usual you can <a href="downloads">download busybox here</a>.
    <p>Have Fun!
    <p>


  <p>
  <li><b>6 March 2002 -- busybox.net now has mirrors!</b><p>

    Busybox.net is now much more available, thanks to
    the fine folks at <a href="http://i-netinnovations.com/">http://i-netinnovations.com/</a>
    who are providing hosting for busybox.net and
    uclibc.org.  In addition, we now have two mirrors:
    <a href="http://busybox.linuxmagic.com/">http://busybox.linuxmagic.com/</a>
    in Canada and
    <a href="http://busybox.csservers.de/">http://busybox.csservers.de/</a>
    in Germany.  I hope this makes things much more
    accessible for everyone!


<li>
<b>3 January 2002 -- Welcome to busybox.net!</b>

<p>Thanks to the generosity of a number of busybox
users, we have been able to purchase busybox.net
(which is where you are probably reading this).
Right now, busybox.net and uclibc.org are both
living on my home system (at the end of my DSL
line). I apologize for the abrupt move off of
busybox.lineo.com. Unfortunately, I no longer have
the access needed to keep that system updated (for
example, you might notice the daily snapshots there
stopped some time ago).</p>

<p>Busybox.net is currently hosted on my home
server, at the end of a DSL line. Unfortunately,
the load on them is quite heavy. To address this,
I'm trying to make arrangements to get busybox.net
co-located directly at an ISP. To assist in the
co-location effort, <a href=
"http://www.codepoet.org/~markw">Mark Whitley</a>
(author of busybox sed, cut, and grep) has donated
his <a href=
"http://www.netwinder.org/">NetWinder</a> computer
for hosting busybox.net and uclibc.org. Once this
system is co-located, the current speed problems
should be completely eliminated. Hopefully, too,
some of you will volunteer to set up some mirror
sites, to help to distribute the load a bit.</p>

<p><!--
    <center>
    Click here to help support busybox.net!
    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="andersen@codepoet.org">
    <input type="hidden" name="item_name" value="Support Busybox">
    <input type="hidden" name="image_url" value="https://codepoet-consulting.com/images/busybox2.jpg">
    <input type="hidden" name="no_shipping" value="1">
    <input type="image" src="images/donate.png" border="0" name="submit" alt="Make donation using PayPal">
    </form>
    </center>
    -->
 Since some people expressed concern over BusyBox
donations, let me assure you that no one is getting
rich here. All BusyBox and uClibc donations will be
spent paying for bandwidth and needed hardware
upgrades. For example, Mark's NetWinder currently
has just 64Meg of memory. As demonstrated when
google spidered the site the other day, 64 Megs in
not enough, so I'm going to be ordering 256Megs of
ram and a larger hard drive for the box today. So
far, donations received have been sufficient to
cover almost all expenses. In the future, we may
have co-location fees to worry about, but for now
we are ok. A <b>HUGE thank-you</b> goes out to
everyone that has contributed!<br>
 -Erik</p>
</li>

<li>
<b>20 November 2001 -- BusyBox 0.60.2 released</b>

<p>We am very pleased to announce that the BusyBox
0.60.2 (stable) is now released to the world. This
one is primarily a bugfix release for the stable
series, and it should take care of most everyone's
needs till we can get the nice new stuff we have
been working on in CVS ready to release (with the
wonderful new buildsystem). The biggest change in
this release (beyond bugfixes) is the fact that msh
(the minix shell) has been re-worked by Vladimir N.
Oleynik (vodz) and so it no longer crashes when
told to do complex things with backticks.</p>

<p>This release has been tested on x86, ARM, and
powerpc using glibc 2.2.4, libc5, and uClibc, so it
should work with just about any Linux system you
throw it at. See the <a href=
"downloads/Changelog">changelog</a> for <small>most
of</small> the details. The last release was
<em>very</em> solid for people, and this one should
be even better.</p>

<p>As usual BusyBox 0.60.2 can be downloaded from
<a href=
"downloads">http://www.busybox.net/downloads</a>.</p>

<p>Have Fun.<br>
 -Erik</p>
</li>

<li> <b>18 November 2001 -- Help us buy busybox.net!</b>

<!-- Begin PayPal Logo -->
<center>
Click here to help buy busybox.net!
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="andersen@codepoet.org">
<input type="hidden" name="item_name" value="Support Busybox">
<input type="hidden" name="image_url" value="https://busybox.net/images/busybox2.jpg">
<input type="hidden" name="no_shipping" value="1">
<input type="image" src="images/donate.png" name="submit" alt="Make donation using PayPal">
</form>
</center>
<!-- End PayPal Logo -->

I've contacted the current owner of busybox.net and he is willing
to sell the domain name -- for $250.  He also owns busybox.org but
will not part with it...  I will then need to pay the registry fee
for a couple of years and start paying for bandwidth, so this will
initially cost about $300.  I would like to host busybox.net on my
home machine (codepoet.org) so I have full control over the system,
but to do that would require that I increase the level of bandwidth
I am paying for.  Did you know that so far this month, there
have been over 1.4 Gigabytes of busybox ftp downloads?  I don't
even <em>know</em> how much CVS bandwidth it requires.  For the
time being, Lineo has continued to graciously provide this
bandwidth, despite the fact that I no longer work for them.  If I
start running this all on my home machine, paying for the needed bandwidth
will start costing some money.
<p>

I was going to pay it all myself, but my wife didn't like that
idea at all (big surprise).   It turns out &lt;insert argument
where she wins and I don't&gt; she has better ideas
about what we should spend our money on that don't involve
busybox.  She suggested I should ask for contributions on the
mailing list and web page.  So...
<p>

I am hoping that if everyone could contribute a bit, we could pick
up the busybox.net domain name and cover the bandwidth costs.  I
know that busybox is being used by a lot of companies as well as
individuals -- hopefully people and companies that are willing to
contribute back a bit.  So if everyone could please help out, that
would be wonderful!
<p>


<li> <b>23 August 2001 -- BusyBox 0.60.1 released</b>
<br>

     This is a relatively minor bug fixing release that fixes
     up the bugs that have shown up in the stable release in
     the last few weeks.  Fortunately, nothing <em>too</em>
     serious has shown up.  This release only fixes bugs -- no
     new features, no new applets.  So without further ado,
     here it is.  Come and get it.
     <p>
     The
     <a href="downloads/Changelog">changelog</a> has all
     the details.  As usual BusyBox 0.60.1 can be downloaded from
     <a href="downloads">http://busybox.net/downloads</a>.
     <p>Have Fun!
     <p>


<li> <b>2 August 2001 -- BusyBox 0.60.0 released</b>
<br>
     I am very pleased to announce the immediate availability of
     BusyBox 0.60.0.  I have personally tested this release with libc5, glibc,
     and <a href="http://uclibc.org/">uClibc</a> on
     x86, ARM, and powerpc using linux 2.2 and 2.4, and I know a number
     of people using it on everything from ia64 to m68k with great success.
     Everything seems to be working very nicely now, so getting a nice
     stable bug-free(tm) release out seems to be in order.   This releases fixes
     a memory leak in syslogd, a number of bugs in the ash and msh shells, and
     cleans up a number of things.

     <p>

     Those wanting an easy way to test the 0.60.0 release with uClibc can
     use <a href="http://user-mode-linux.sourceforge.net/">User-Mode Linux</a>
     to give it a try by downloading and compiling
     <a href="ftp://busybox.net/buildroot.tar.gz">buildroot.tar.gz</a>.
     You don't have to be root or reboot your machine to run test this way.
     Preconfigured User-Mode Linux kernel source is also on busybox.net.
     <p>
     Another cool thing is the nifty <a href="downloads/tutorial/index.html">
     BusyBox Tutorial</a> contributed by K Computing.  This requires
     a ShockWave plugin (or standalone viewer), so you may want to grab the
     the GPLed shockwave viewer from <a href="http://www.swift-tools.com/Flash/flash-0.4.10.tgz">here</a>
     to view the tutorial.
     <p>

     Finally, In case you didn't notice anything odd about the
     version number of this release, let me point out that this release
     is <em>not</em> 0.53, because I bumped the version number up a
     bit.  This reflects the fact that this release is intended to form
     a new stable BusyBox release series.  If you need to rely on a
     stable version of BusyBox, you should plan on using the stable
     0.60.x series.  If bugs show up then I will release 0.60.1, then
     0.60.2, etc...  This is also intended to deal with the fact that
     the BusyBox build system will be getting a major overhaul for the
     next release and I don't want that to break products that people
     are shipping.  To avoid that, the new build system will be
     released as part of a new BusyBox development series that will
     have some not-yet-decided-on odd version number.  Once things
     stabilize and the new build system is working for everyone, then
     I will release that as a new stable release series.

     <p>
     The
     <a href="downloads/Changelog">changelog</a> has all
     the details.  As usual BusyBox 0.60.0 can be downloaded from
     <a href="downloads">http://busybox.net/downloads</a>.
     <p>Have Fun!
     <p>


<li> <b>7 July 2001 -- BusyBox 0.52 released</b>
<br>

     I am very pleased to announce the immediate availability of
     BusyBox 0.52 (the "new-and-improved rock-solid release").  This
     release is the result of <em>many</em> hours of work and has tons
     of bugfixes, optimizations, and cleanups.  This release adds
     several new applets, including several new shells (such as hush, msh,
     and ash).

     <p>
     The
     <a href="downloads/Changelog">changelog</a> covers
     some of the more obvious details, but there are many many things that
     are not mentioned, but have been improved in subtle ways.  As usual,
     BusyBox 0.52 can be downloaded from
     <a href="downloads">http://busybox.net/downloads</a>.
     <p>Have Fun!
     <p>


<li> <b>10 April 2001 - Graph of Busybox Growth </b>
<br>
The illustrious Larry Doolittle has made a PostScript chart of the growth
of the Busybox tarball size over time. It is available for downloading /
viewing <a href="busybox-growth.ps"> right here</a>.

<p> (Note that while the number of applets in Busybox has increased, you
can still configure Busybox to be as small as you want by selectively
turning off whichever applets you don't need.)
<p>


<li> <b>10 April 2001 -- BusyBox 0.51 released</b>
<br>

     BusyBox 0.51 (the "rock-solid release") is now out there.  This
     release adds only 2 new applets: env and vi.  The vi applet,
     contributed by Sterling Huxley, is very functional, and is only
     22k.  This release fixes 3 critical bugs in the 0.50 release.
     There were 2 potential segfaults in lash (the busybox shell) in
     the 0.50 release which are now fixed.  Another critical bug in
     0.50 which is now fixed: syslogd from 0.50 could potentially
     deadlock the init process and thereby break your entire system.
     <p>

     There are a number of improvements in this release as well.  For
     one thing, the wget applet is greatly improved.  Dmitry Zakharov
     added FTP support, and Laurence Anderson make wget fully RFC
     compliant for HTTP 1.1.  The mechanism for including utility
     functions in previous releases was clumsy and error prone.  Now
     all utility functions are part of a new libbb library, which makes
     maintaining utility functions much simpler.  And BusyBox now
     compiles on itanium systems (thanks to the Debian itanium porters
     for letting me use their system!).
     <p>
     You can read the
     <a href="downloads/Changelog">changelog</a> for
     complete details.  BusyBox 0.51 can be downloaded from
     <a href="downloads">http://busybox.net/downloads</a>.
     <p>Have Fun!
     <p>

<li> <b>Busybox Boot-Floppy Image</b>

<p>Because you asked for it, we have made available a <a href=
"downloads/busybox.floppy.img"> Busybox boot floppy
image</a>. Here's how you use it:

<ol>

    <li> <a href="downloads/busybox.floppy.img">
    Download the image</a>

    <li> dd it onto a floppy like so: <tt> dd if=busybox.floppy.img
    of=/dev/fd0 ; sync </tt>

    <li> Pop it in a machine and boot up.

</ol>

<p> If you want to look at the contents of the initrd image, do this:

<pre>
    mount ./busybox.floppy.img /mnt -o loop -t msdos
    cp /mnt/initrd.gz /tmp
    umount /mnt
    gunzip /tmp/initrd.gz
    mount /tmp/initrd /mnt -o loop -t minix
</pre>


<li> <b>15 March 2001 -- BusyBox 0.50 released</b>
<br>

     This release adds several new applets including ifconfig, route, pivot_root, stty,
     and tftp, and also fixes tons of bugs.  Tab completion in the
     shell is now working very well, and the shell's environment variable
     expansion was fixed.   Tons of other things were fixed or made
     smaller.  For a fairly complete overview, see the
     <a href="downloads/Changelog">changelog</a>.
     <p>
     lash (the busybox shell) is still with us, fixed up a bit so it
     now behaves itself quite nicely.  It really is quite usable as
     long as you don't expect it to provide Bourne shell grammer.
     Standard things like pipes, redirects, command line editing, and
     environment variable expansion work great.  But we have found that
     this shell, while very usable, does not provide an extensible
     framework for adding in full Bourne shell behavior.  So the first order of
     business as we begin working on the next BusyBox release will be to merge in the new shell
     currently in progress at
     <a href="http://doolittle.faludi.com/~larry/parser.html">Larry Doolittle's website</a>.
     <p>


<li> <b>27 January 2001 -- BusyBox 0.49 released</b>
<br>

     Several new applets, lots of bug fixes, cleanups, and many smaller
     things made nicer.  Several cleanups and improvements to the shell.
     For a list of the most interesting changes
     you might want to look at the <a href="downloads/Changelog">changelog</a>.
     <p>
     Special thanks go out to Matt Kraai and Larry Doolittle for all their
     work on this release, and for keeping on top of things while I've been
     out of town.
     <p>
     <em>Special Note</em><br>

     BusyBox 0.49 was supposed to have replaced lash, the BusyBox
     shell, with a new shell that understands full Bourne shell/Posix shell grammer.
     Well, that simply didn't happen in time for this release.  A new
     shell that will eventually replace lash is already under
     construction.  This new shell is being developed by Larry
     Doolittle, and could use all of our help.  Please see the work in
     progress on <a href="http://doolittle.faludi.com/~larry/parser.html">Larry's website</a>
     and help out if you can.  This shell will be included in the next
     release of BusyBox.
     <p>

<li> <b>13 December 2000 -- BusyBox 0.48 released</b>
<br>

     This release fixes lots and lots of bugs.  This has had some very
     rigorous testing, and looks very, very clean.  The usual tar
     update of course: tar no longer breaks hardlinks, tar -xzf is
     optionally supported, and the LRP folks will be pleased to know
     that 'tar -X' and 'tar --exclude' are both now in.  Applets are
     now looked up using a binary search making lash (the busybox
     shell) much faster.  For the new debian-installer (for Debian
     woody) a .udeb can now be generated.
     <p>
     The curious can get a list of some of the more interesting changes by reading
     the <a href="downloads/Changelog">changelog</a>.
     <p>
     Many thanks go out to the many many people that have contributed to
     this release, especially Matt Kraai, Larry Doolittle, and Kent Robotti.
     <p>
<p> <li> <b>26 September 2000 -- BusyBox 0.47 released</b>
<br>

     This release fixes lots of bugs (including an ugly bug in 0.46
     syslogd that could fork-bomb your system).  Added several new
     apps: rdate, wget, getopt, dos2unix, unix2dos, reset, unrpm,
     renice, xargs, and expr.  syslogd now supports network logging.
     There are the usual tar updates.  Most apps now use getopt for
     more correct option parsing.
     See the <a href="downloads/Changelog">changelog</a>
     for complete details.


<p> <li> <b>11 July 2000 -- BusyBox 0.46 released</b>
<br>

     This release fixes several bugs (including a ugly bug in tar,
     and fixes for NFSv3 mount support).  Added a dumpkmap to allow
     people to dump a binary keymaps for use with 'loadkmap', and a
     completely reworked 'grep' and 'sed' which should behave better.
     BusyBox shell can now also be used as a login shell.
     See the <a href="downloads/Changelog">changelog</a>
     for complete details.


<p> <li> <b>21 June 2000 -- BusyBox 0.45 released</b>
<br>

     This release has been slow in coming, but is very solid at this
     point.  BusyBox now supports libc5 as well as GNU libc.  This
     release provides the following new apps: cut, tr, insmod, ar,
     mktemp, setkeycodes, md5sum, uuencode, uudecode, which, and
     telnet.  There are bug fixes for just about every app as well (see
     the <a href="downloads/Changelog">changelog</a> for
     details).
     <p>
     Also, some exciting infrastructure news!  Busybox now has its own
     <a href="lists/busybox/">mailing list</a>,
     publically browsable
     <a href="/cgi-bin/viewcvs.cgi/trunk/busybox/">CVS tree</a>,
     anonymous
     <a href="cvs_anon.html">CVS access</a>, and
     for those that are actively contributing there is even
     <a href="cvs_write.html">CVS write access</a>.
     I think this will be a huge help to the ongoing development of BusyBox.
     <p>
     Also, for the curious, there is no 0.44 release.  Somehow 0.44 got announced
     a few weeks ago prior to its actually being released.  To avoid any confusion
     we are just skipping 0.44.
     <p>
     Many thanks go out to the many people that have contributed to this release
     of BusyBox (esp. Pavel Roskin)!


<p> <li> <b>19 April 2000 -- syslogd bugfix</b>
<br>
Turns out that there was still a bug in busybox syslogd.
For example, with the following test app:
<pre>
#include &lt;syslog.h&gt;

int do_log(char* msg, int delay)
{
    openlog("testlog", LOG_PID, LOG_DAEMON);
    while(1) {
	syslog(LOG_ERR, "%s: testing one, two, three\n", msg);
	sleep(delay);
    }
    closelog();
    return(0);
};

int main(void)
{
    if (fork()==0)
	do_log("A", 2);
    do_log("B", 3);
}
</pre>
it should be logging stuff from both "A" and "B".  As released in 0.43 only stuff
from "A" would have been logged.  This means that if init tries to log something
while say ppp has the syslog open, init would block (which is bad, bad, bad).
<p>
Karl M. Hegbloom has created a fix for the problem.
Thanks Karl!


<p> <li> <b>18 April 2000 -- BusyBox 0.43 released (finally!)</b>
<br>
I have finally gotten everything into a state where I feel pretty
good about things.  This is definitely the most stable, solid release
so far.  A lot of bugs have been fixed, and the following new apps
have been added: sh, basename, dirname, killall, uptime,
freeramdisk, tr, echo, test, and usleep.  Tar has been completely
rewritten from scratch.  Bss size has also been greatly reduced.
More details are available in the
<a href="downloads/Changelog">changelog</a>.
Oh, and as a special bonus, I wrote some fairly comprehensive
<em>documentation</em>, complete with examples and full usage information.

<p>
Many thanks go out to the fine people that have helped by submitting patches
and bug reports; particularly instrumental in helping for this release were
Karl Hegbloom, Pavel Roskin, Friedrich Vedder, Emanuele Caratti,
Bob Tinsley, Nicolas Pitre, Avery Pennarun, Arne Bernin, John Beppu, and Jim Gleason.
There were others so if I somehow forgot to mention you, I'm very sorry.
<p>

You can grab BusyBox 0.43 tarballs <a href="downloads">here</a>.

<p> <li> <b>9 April 2000 -- BusyBox 0.43 pre release</b>
<br>
Unfortunately, I have not yet finished all the things I want to
do for BusyBox 0.43, so I am posting this pre-release for people
to poke at.  This contains my complete rewrite of tar, which now weighs in at
5k (7k with all options turned on) and works for reading and writing
tarballs (which it does correctly for everything I have been able to throw
at it).  Tar also (optionally) supports the "--exclude" option (mainly because
the Linux Router Project folks asked for it).  This also has a pre-release
of the micro shell I have been writing.  This pre-release should be stable
enough for production use -- it just isn't a release since I have some structural
changes I still want to make.
<p>
The pre-release can be found <a href="downloads">here</a>.
Please let me know ASAP if you find <em>any</em> bugs.

<p> <li> <b>28 March 2000 -- Andersen Baby Boy release</b>
<br>
I am pleased to announce that on Tuesday March 28th at 5:48pm, weighing in at 7
lbs. 12 oz, Micah Erik Andersen was born at LDS Hospital here in Salt Lake City.
He was born in the emergency room less then 5 minutes after we arrived -- and
it was such a relief that we even made it to the hospital at all.  Despite the
fact that I was driving at an amazingly unlawful speed and honking at everybody
and thinking decidedly unkind thoughts about the people in our way, my wife
(inconsiderate of my feelings and complete lack of medical training) was lying
down in the back seat saying things like "I think I need to start pushing now"
(which she then proceeded to do despite my best encouraging statements to the
contrary).
<p>
Anyway, I'm glad to note that despite the much-faster-than-we-were-expecting
labor, both Shaunalei and our new baby boy are doing wonderfully.
<p>
So now that I am done with my excuse for the slow release cycle...
Progress on the next release of BusyBox has been slow but steady.  I expect
to have a release sometime during the first week of April.  This release will
include a number of important changes, including the addition of a shell, a
re-write of tar (to accommodate the Linux Router Project), and syslogd can now
accept multiple concurrent connections, fixing lots of unexpected blocking
problems.


<p> <li> <b>11 February 2000 -- BusyBox 0.42 released</b>
<br>

     This is the most solid BusyBox release so far.  Many, many
	bugs have been fixed.   See the
	<a href="downloads/Changelog">changelog</a> for details.

	Of particular interest, init will now cleanly unmount
	filesystems on reboot, cp and mv have been rewritten and
	behave much better, and mount and umount no longer leak
	loop devices.  Many thanks go out to Randolph Chung,
	Karl M. Hegbloom, Taketoshi Sano, and Pavel Roskin for
	their hard work on this release of BusyBox.  Please pound
	on it and let me know if you find any bugs.

<p> <li> <b>19 January 2000 -- BusyBox 0.41 released</b>
<br>

     This release includes bugfixes to cp, mv, logger, true, false,
	mkdir, syslogd, and init.  New apps include wc, hostid,
	logname, tty, whoami, and yes.  New features include loop device
	support in mount and umount, and better TERM handling by init.
	The changelog can be found <a href="downloads/Changelog">here</a>.

<p> <li> <b>7 January 2000 -- BusyBox 0.40 released</b>
<br>

     This release includes bugfixes to init (now includes inittab support),
     syslogd, head, logger, du, grep, cp, mv, sed, dmesg, ls, kill, gunzip, and mknod.
     New apps include sort, uniq, lsmod, rmmod, fbset, and loadacm.
     In particular, this release fixes an important bug in tar which
     in some cases produced serious security problems.
     As always, the changelog can be found <a href="downloads/Changelog">here</a>.

<p> <li> <b>11 December 1999 -- BusyBox Website</b>
<br>
     I have received permission from Bruce Perens (the original author of BusyBox)
	to set up this site as the new primary website for BusyBox.  This website
	will always contain pointers to the latest and greatest, and will also
	contain the latest documentation on how to use BusyBox, what it can do,
	what arguments its apps support, etc.

<p> <li> <b>10 December 1999 -- BusyBox 0.39 released</b>
<br>
     This release includes fixes to init, reboot, halt, kill, and ls, and contains
     the new apps ping, hostname, mkfifo, free, tail, du, tee, and head.  A full
     changelog can be found <a href="downloads/Changelog">here</a>.
<p> <li> <b>5 December 1999 -- BusyBox 0.38 released</b>
<br>
     This release includes fixes to tar, cat, ls, dd, rm, umount, find, df,
	and make install, and includes new apps syslogd/klogd and logger.


</ul>


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

