diff options
authorGravatar Denys Vlasenko <>2018-07-02 14:48:40 +0200
committerGravatar Denys Vlasenko <>2018-07-02 14:54:30 +0200
commit3c3332982148e905e2b430fd6878258216c3c2e5 (patch)
parent40f901214c9b90796a66bbc3c40e49728ceefec4 (diff)
Announce 1.29.0
Signed-off-by: Denys Vlasenko <>
1 files changed, 352 insertions, 1 deletions
diff --git a/news.html b/news.html
index 2c966e4..7cb27f5 100644
--- a/news.html
+++ b/news.html
@@ -34,6 +34,358 @@
+ <li><b>1 July 2018 -- BusyBox 1.29.0 (unstable)</b>
+ <p><a href="">BusyBox 1.29.0</a>.
+ (<a href="">git</a>,
+ <a href="">patches</a>,
+ <a href="">how to add a patch</a>)</p>
+ <p>Changes since previous release:
+<pre>Aaro Koskinen:
+ cp: implement -T
+ less: implement -F
+Andy Shevchenko:
+ libbb: Use return value from is_prefixed_with()
+Codarren Velvindron:
+ ntpd: deprecate IPTOS_LOWDELAY in favor of IPTOS_DSCP_AF21
+David Decotigny:
+ udhcpc6: ignore invalid OPTION_IAADDR
+ udhcpc6: carry along length of packet when parsing it
+Denys Vlasenko:
+ libarchive: move bbunpack constants to bb_archive.h
+ libbb.h: always include sys/resource.h
+ libbb: commonalize a bit of little-endian CRC32 table generation code
+ libbb: compile capability code only if FEATURE_SETPRIV_CAPABILITIES or RUN_INIT
+ libbb: compile obscure() only if FEATURE_PASSWD_WEAK_CHECK=y
+ libbb: crypt() in newer glibc requires include &lt;crypt.h&gt;
+ libbb: introduce and use bb_getsockname()
+ libbb: new function bb_die_memory_exhausted()
+ libbb: new option FEATURE_ETC_SERVICES: if off, /etc/services reads often avoided
+ libbb: rename bb_ask -&gt; bb_ask_noecho, bb_ask_confirmation -&gt; bb_ask_y_confirmation
+ libbb: shrink wget/tftp progress indicator code
+ libbb: switch bb_ask_noecho() to "mallocing" string return API
+ libbb: use BUILD_BUG_ON in utoa_to_buf()
+ networking/interface.c: get rid of global data
+ i386: make stack size optimization selectable, and allow i486 insns (bswap)
+ a script to find "interesting" applets
+ fix a bug which mishandles e.g. "udhcpc6" name
+ config: add size estimations for a few applets
+ use gmtime_r() instead of gmtime()
+ ioctl(SIOCGIFINDEX) does not require clearing of entire ifr
+ fix install with hardlinks and a custom PREFIX. Closes 10801
+ examples/shutdown-1.0: an example of reboot which does not signal init
+ examples: update /var/service/getty for Unicode ttys
+ examples/var_service: new example: dnsmasq service
+ cal: make it NOEXEC
+ mv: make it NOEXEC
+ ash: add LINENO support
+ ash: parser: fix backquote support in here-document EOF mark
+ ash: a bit of NOFORK code should only be active if FEATURE_SH_STANDALONE=y
+ ash: ALWAYS_INLINE grabstackblock()
+ ash: expand: Fix buffer overflow in expandmeta
+ ash: expand: Fix bugs with words connected to the right of $@
+ ash: fix "char == CTLfoo" comparison signedness bug
+ ash: fix double-quoted "\z" handling
+ ash: fix var_bash5.tests - ${VAR/pattern/repl} construct
+ ash,hush: fix "saved" redirected fds still visible in children
+ ash,hush: handle a few more bkslash-newline cases
+ ash: if "[[" bashism is not supported, do not handle it anywhere
+ ash: introduce a config option to search current directory for sourced files
+ ash: make it possible to disable "const global ptr" optimization
+ ash: make ${v:N:M} more robust for very large M by clamping to MIN/MAX_INT
+ ash: parser: Add syntax stack for recursive parsing
+ ash: parser: Allow newlines within parameter substitution
+ ash: parser: Fix parameter expansion inside inner double quotes
+ ash: parser: Fix single-quoted patterns in here-documents
+ ash: redir: Fix typo in noclobber code
+ ash: use pgetc_eatbnl() in more places
+ hush: implement $LINENO bashism
+ hush: add HUSH_BASH_SOURCE_CURDIR config option, to be on par with ash
+ hush: consolidate handling of setting/unsetting of PSn, LINENO, OPTIND
+ hush: do not drop backslash from eval 'echo ok\'
+ hush: fix a='a\\'; echo "${a%\\\\}"
+ hush: fix a backslash-removal bug in case
+ hush: fix a bug where we don't properly handle f() { a=A; b=B; }; a= f
+ hush: fix a case where EXIT trap may modify its code mid-flight
+ hush: fix a few more corner cases with empty-expanding `cmds`
+ hush: fix a signedness bug
+ hush: fix build if !BASH_LINENO_VAR
+ hush: fix compile problem found by randomconfig
+ hush: fix corner cases with exec in empty expansions
+ hush: fix dot builtin to not search current directory
+ hush: fix dup_CLOEXEC() call without "avoid_fd" parameter
+ hush: fix eval 'echo ok\'
+ hush: fix for !ENABLE_HUSH_MODE_X configuration
+ hush: fix for readonly vars in "ro=A ro=B cmd" case
+ hush: fix func_return2.tests on NOMMU
+ hush: fix handling of ^C in eval
+ hush: fix handling of \&lt;eof&gt; in double-quoted strings
+ hush: fix handling of raw ^C in scripts: "echo ^C"
+ hush: fix handling of $_ (so far it's an ordinary variable, no special meaning)
+ hush: fix heredoc_bkslash_newline1.tests failure
+ hush: fix IFS handling in read
+ hush: fix mishandling of "true | f() { echo QWE; }"
+ hush: fix prompt in multi-line $(())
+ hush: fix raw ^C handlisg in single-quoted strings
+ hush: fix recent breakage from parse_stream() changes
+ hush: fix "set -e; false || x=1; echo OK"
+ hush: fix two corner cases in ${v/pattern/repl}. Closes 10686
+ hush: fix "unset PS1/PS2", and put them into initial variable set
+ hush: fix var_leaks.tests and var_preserved.tests on NOMMU
+ hush: fix "$v" expansion in case patterns when v='[a]'
+ hush: IFS fixes
+ hush: if we did match "LINENO" or "OPTIND", stop further comparisons
+ hush: implement "command" builtin (no options are supported yet)
+ hush: implement "command -v -V"
+ hush: implement "hush -s"
+ hush: less mind-bending set_vars_and_save_old()
+ hush: make var nesting code independent of "local" support
+ hush: one-word, no-globbing handling of local/export/readonly args
+ hush: optimize parse_stream()
+ hush: protect against self-modifying trap code
+ hush: put "current word" structure into parsing context
+ hush: simplify \&lt;newline&gt; code
+ hush: simplify process_command_subs()
+ hush: support "f() (cmd)" functions
+ shell: add 6856 $IFS tests to testsuites
+ shell: echo ${?:0} was fixed sometime ago, enable it in tests
+ shell: handle $((NUM++...) like bash does. Closes 10706
+ ar: hopefully fix out-of-bounds read in get_header_ar()
+ arping: change a few message strings to be closer to iputils arping
+ arping: fix the case when inherited signal mask masks out ALRM
+ arping: move packet buffer, sigset and struct ifreq to malloced "globals"
+ ar: stop using static data
+ awk: do not allow $(-1)
+ awk: fix 'delete array[var--]' decrementing var twice
+ bgip2: fewer specifically-sized [u]int32_t's locals in sendMTFValues
+ bzip2: ~1% speedup by special-casing "store 1 bit" function
+ bzip2: a few more locals converted to generic types
+ bzip2: code shrink, stop using global data variable
+ bzip2: convert some locals to unsigned's
+ bzip2: delete write-only fave[] array
+ bzip2: eliminate write-only local numQSorted
+ bzip2: eliminate one parameter to mainQSort3()
+ bzip2: expose tuning knob for faster/smaller code
+ bzip2: fix two crashes on corrupted archives
+ bzip2: have two separate "store bit 0" and "store bit 1" functions
+ bzip2: make locals in mainSort() saner, convert one of them from uint16 to unsigned
+ bzip2: move -&gt;origPtr out of struct EState, make a few members smaller
+ bzip2: move runningOrder[] back to stack - 256 bytes is not much
+ bzip2: optimize zPend variable code
+ bzip2: pass sorting params through EState* pointer
+ bzip2: remove redundant clearing of an alredy unset bit
+ bzip2: remove redundant loop termination check in mainSort()
+ bzip2: reuse zPend processing code
+ bzip2: rewrite bit of code which depends on integer overflow
+ bzip2: runningOrder[] values are always 0..255, make it uint8
+ bzip2: small simplification in mainSimpleSort()
+ bzip2: shrink makeMaps_e()
+ bzip2: work around bad compiler optimization
+ cat: fix cat -e and cat -v erroneously numbering 1st line
+ chrt: use correct min/max priorities
+ cp: fix option handling in non-longopt config
+ dd: exit with 1 if last write was incomplete
+ dd: fixed partial count logic
+ df: 4TB+ support on 32 bits arch
+ df: do "rootfs" check sooner
+ dpkg: fix symlink creation, closes 10941
+ fdisk: remove "Partition N does not end on cylinder boundary" message
+ fsck: fix incorrect handling of child exit
+ fstrim: do not check that specified file is on a block device
+ ftpd: add -A option to disable all authentication, closes 10921
+ ftpd: handle restarts past 2147483647 bytes. closes 10741
+ ftpd: switch to mallaced "globals"
+ ftpgetput: add EPSV support (PASV-like thing for IPv6)
+ ftpgetput: preparations for ESPV support, no code changes
+ grep: fix echo "aa" | busybox grep -F -w "a" (should not match)
+ gunzip: fix from gzip-1.3.12 for gzip file with all zero length codes
+ gzip: "compressed_len" is unused, stop wasting code and time calculating it
+ gzip: fix debug code. Closes 10681
+ gzip: flush output buffer after stored blocks, they are not 32-bit aligned
+ gzip: optionally faster put_32bit()
+ gzip: speed up send_bits()
+ gzip: use unsigned type for bit fields and bit counts
+ gzip: use wider (32-bit, not 16) bi_buf
+ httpd: do not default to Content-type: application/octet-stream
+ ifplugd: close signal race
+ ifplugd service example: always run up/down script on startup
+ inetd,mount: add comment with example of flags to build with libtirpc
+ init: stop using static data
+ install: fix "-D -t DIR1/DIR2/DIR3" creating only DIR1/DIR2, closes 11106
+ ip: fix crash in "ip neigh show"
+ ip: fix "ip -oneline a"
+ less,microcom,lineedit: use common routine to set raw termios
+ less: accept -R option. Closes 10816
+ less: fix help text conditional for -R
+ less: optional support of -R
+ less: remove unnecessary message
+ lzop: buffer several 32-bit writes when we start a new compressed block
+ lzop: checksum reads do not need to be checksummed
+ lzop: code shrink by using header_t matching on-disk layout
+ lzop: don't support ancient versions &lt; 0.94 (15 Oct 1997)
+ lzop: remove method checks which are always true/false
+ md5sum: use config help text similar to other "sum" tools
+ mkfs_ext2,mkfs_vfat: fix warnings in STORE_LE on big-endian platforms
+ mknod: better --help, much clearer code
+ nandwrite: cope with old headers which have no MTD_FILE_MODE_RAW
+ nc: fix the !NC_SERVER configuration
+ nslookup: add openwrt / lede version
+ ntpd: suppress in-kernel frequency correction in first 8+n adjtimex calls
+ od: move address_fmt[] from data to globals. 8 less bytes in data section
+ patch: implement --dry-run
+ ping: don't call monotonic_us twice per sending the ping
+ ping: implement -A "adaptive ping"
+ poweroff: add a config option for people needing VERY early poweroff
+ realpath,readlink -f: coreutils compat, closes 11021
+ renice: add comment about getpwnam/NOFORK interaction
+ renice: use BUILD_BUG_ON()
+ setlogcons: open /dev/ttyN for "setlogcons N", not /dev/tty1
+ sort: fix potentially buggy use of OPT_STR
+ sort: fix -s. Closes 10671
+ sort: in -s handling, return 1/-1, not 1/0 compare result
+ start_stop_daemon: fix normally disabled OLDER_VERSION_OF_X code
+ stat: fix a typo: s/romfs/ramfs/, closes 10876
+ svok: new applet (daemontools compat)
+ tar: accomodate non-terminated tar.chksum fields as seen from
+ tar: add -k and -o to --help
+ tar: add -o and -k to short --help too
+ tart_stop_daemon: another fix to disabled OLDER_VERSION_OF_X code
+ tar,unzip: postpone creation of symlinks with "suspicious" targets
+ tc: enable this applet
+ tcpsvd: fix fallout from opt_complementary removal
+ tcpudp: shrink per-host rate-limiting code
+ telnet: move winsize detection closer to I/O loop, delete non-functioning debug code
+ tls: fix hash calculations if client cert is requested and sent
+ tls: remove redundant floor prevention
+ top: do unsigned rather than signed division in do_stats()
+ top: fix "warning: unused variable new_mask"
+ top: handle much larger VSZ values
+ top: much faster cursor key navigation by avoiding process rescan
+ udhcpc6: additional fix for ppp interface type
+ udhcpc6: add support of prefix delegation
+ udhcpc6: fix for ppp interface type
+ udhcpc6: fix ipv6prefix[_lease] envvar value in script invocation
+ udhcpc6: fix lease time staying very small because -d was not specified
+ udhcpc6: set -x options in request
+ udhcpc[6]: remove overzealous timeout clamping code
+ udhcpc: remove code which requires server ID to be on local network
+ udhcpd: clamp down huge auto_times to ~2M seconds, better EINTR poll handling
+ udhcpd: fix "not dying on SIGTERM"
+ udhcpd: use ptr_to_globals for its lone global data (g_leases)
+ udhcp: do not setlinebuf(stdout), we don't print to stdout anymore
+ udhcp: support string user options, closes 10946
+ umount: fix "umount -t FSTYPE MNTPOINT" acting as if -a is specified
+ unlzma: do emit the error message on bad input, when we exit with 1
+ unlzma: fix three SEGV cases
+ unlzop: fix --help: it has -U instead of -k
+ unzip: do not set directory mode to 0777
+ wget,ftpd: shorten and reuse strings
+ wget: add EPSV support
+ wget: check chunk length for overflowing off_t
+ wget: emit a message that certificate verification is not implemented
+ wget: handle URLs with @ or hash differently
+ wget: support for ftps://
+ wget: more thorough sanitization of other side's data
+ which: fix TODO with NOFORK+malloc_failure misbehaving
+ xargs: use bb_ask_y_confirmation_FILE() instead of homegrown copy
+Eli Schwartz:
+ Update release script to generate detached signatures and checksum files
+Euan Harris:
+ nsenter: Rename --network option to --net
+ nsenter: fix parsing of -t, -S and -G options
+Harald van Dijk:
+ tar: fix interaction of delayed symlink and hardlink creation
+Ingo van Lil:
+ ash: fail if 'shift' operand is out of range
+Ivan Abrea:
+ tls: fix to handle X.509 v1 certificates correctly
+Jan Luebbe:
+ ip link: support "add TYPE vrf", improve --help
+ iplink: implement support for selecting a master interface
+Kaarle Ritvanen:
+ ifupdown: do not fail if interface disappears during ifdown
+Kartik Agaram:
+ restore documentation on the build config language
+Mark Marshall:
+ netstat: produce numeric-ip output for non-resolved names
+Martijn Dekker:
+ ash: 'nolog' and 'debug' options cause "$-" to wreak havoc
+Michael Olbrich:
+ build system: fix parallel building issue
+Natanael Copa:
+ cpio: extract "unsafe" symlinks the same way tar/unzip does
+Nicholas Clark:
+ dd: add 'fullblock' iflag
+Peter Korsgaard:
+ fbsplash: support configurable image position
+Peter Lloyd:
+ wget: fix fetching of https URLs with http proxy
+Povilas Kanapickas:
+ chrt: add support for SCHED_BATCH
+ chrt: add support for SCHED_IDLE
+Quentin Rameau:
+ libbb: remove unnecessary variable in xmalloc_fgets
+ sed: prevent overflow of length from bb_get_chunk_from_file
+Ron Yorston:
+ testsuite: update busybox and bzcat tests
+ lineedit: allow window size tracking to be disabled
+ ssl_client: fix option parsing
+ testsuite: allow tests to work in paths containing spaces
+Samuel Mendoza-Jonas:
+ udhcp: fix use of trim() in udhcp_str2optset()
+ udhcpc6: add DHCPv6 env helper
+ udhcpc6: add DHCPv6 boot options
+ udhcpc6: add PXELINUX options
+Sean MacLennan:
+ make busybox more portable
+Shawn Landden:
+ umount: ignore -c
+Stefan Agner:
+ ifplugd: if SIOCSIFFLAGS fails with EADDRNOTAVAIL, don't die
+Sven-Göran Bergh:
+ volume_id: add LittleFS detection
+William Pitcock:
+ ash: add support for command_not_found_handle hook function (bashism)
+Yann E. MORIN:
+ applets/install: respect noclobber for script wrappers too
+ applets/install: accept more than one install option
+ build system: add rule to install without cloberring existing utilities
+ applets/install: don't try to install nothing
+ </p>
+ </li>
<li><b>22 May 2018 -- BusyBox 1.28.4 (stable)</b>
<p><a href="">BusyBox 1.28.4</a>.
(<a href="">git</a>,
@@ -298,7 +650,6 @@ Denys Vlasenko:
kbd_mode: try harder to find console device if -C TTY is not given
klibc-utils: add ipconfig.c work-in-progress
klibc-utils: new applets: resume, nuke, minips
- less,microcom,lineedit: use common routine to set raw termios
makedevs: allow much longer filenames
microcom: require exactly one non-option
netcat: net applet (alias to nc)