From vda.linux at googlemail.com Sat May 2 10:05:32 2026
From: vda.linux at googlemail.com (Denys Vlasenko)
Date: Sat, 2 May 2026 12:05:32 +0200
Subject: [git commit] Optimize !ENABLE_SHOW_USAGE config
Message-ID: <20260502100654.2F0BE7FB78@busybox.osuosl.org>
commit: https://git.busybox.net/busybox/commit/?id=ead17e7808236be80614d0a8755f4ddad63ab56c
branch: https://git.busybox.net/busybox/log/?h=master
function old new delta
bb_show_usage 6 - -6
Signed-off-by: Denys Vlasenko
BusyBox 1.38.0. + (git, + patches, + how to add a patch)
+ +Sizes of busybox-1.37.0 and busybox-1.38.0 (with equivalent config, static musl build):
+ text data bss dec hex filename +1031155 559 4988 1036702 fd19e busybox-1.37.0/busybox +1037438 555 4832 1042825 fe989 busybox-1.38.0/busybox ++ + +
Changes since previous release: +
Achill Gilgenast:
+ adduser: remove preconfigured GECOS full name field
+
+Ahmad Fatoum:
+ lineedit: fix printing lines during tab completion
+ lineedit: fix left-over print to stdout
+
+Alyssa Ross via busybox:
+ volume_id: volume_id_get_buffer with small FSes
+
+Andy Knowles:
+ sha384sum: new applet
+
+Bin Meng:
+ libbb: Prevent clang from reading the G pointer before it is assigned
+
+Christian Franke:
+ chpst: fix error check of nice(2) call
+
+Christian Stewart:
+ trylink: detect linker flag support for non-GNU linkers
+
+Colin McAllister:
+ cut: fix "-s" flag to omit blank lines
+
+David Leonard:
+ procps: new applet: vmstat
+
+Denys Vlasenko:
+ *: code shrink using sigprocmask2() where appropriate
+ *: don't use getservbyname, it links in a static buffer
+ *: placate warnings where strchr/strstr returns constant pointer
+ *: use is_prefixed_with() where appropriate
+ *: use safe_waitpid() or wait_any_nohang() where approppriate
+ *: use xasprintf_inplace() and concat_path_file() where appropriate
+ Makefile: fix passing of EXTRA_LDLIBS
+ libbb: add generic "fd polling and I/O" loop, use it in telnetd
+ libbb: add yescrypt password hashing support
+ libbb: change define names in SHA-NI code to match kernel source more closely
+ libbb: factor out HMAC code from TLS
+ libbb: fix too-narrow variable in procps_read_smaps() causing incorrect sizes
+ libbb: in DES crypt, error out on invalid salt chars
+ libbb: introduce and use block-XOR functions
+ libbb: introduce and use xasprintf_inplace()
+ libbb: make read_cmdline() replace chars 1..31 with '?', not space
+ libbb: modify find_executable() to not temporarily write to PATH
+ libbb: move is_in_supplementary_groups() from test to libbb
+ libbb: simplify parameter passing in is_in_supplementary_groups()
+ libbb: much faster concat_path_file()
+ libbb: shuffle ascii64 code around, shrink i2a64()
+ libbb: use narrow isqrt() when 64-bit one is not needed (only "factor" uses it)
+ libbb/dump: much faster formatting of %_u on x86
+ libbb/archival: make setup_unzip_on_fd() return bytes read if not compressed
+ archival/libarchive: sanitize filenames on output (prevent control sequence attacks)
+ archival: disallow path traversals (CVE-2023-39810)
+ lineedit: fix PS1='\W' for root directory
+ tls: better error message when TLS record is truncated
+ tls: document PSTM_64BIT + PSTM_X86_64 optimizations better
+ tls: eliminate unnecessary ENCRYPT_ON_WRITE, merge tls_get_zeroed_outbuf() with fill_handshake_record_hdr()
+ tls: implement server code
+ tls: make ECDHE_RSA work against our client (openssl s_client not yet)
+ busybox: optional --version support
+ ssl_server: new applet
+ ash,hush: allow 0x in arith (bash supports it for 0x$v case when v='')
+ ash,hush: fix corner cases with backslash-newlines in heredocs
+ ash,hush: fix race between signal handlers setting bb_got_signal and poll()
+ ash,hush: empty HISTFILE disables history saving, just as unset one did
+ ash,hush: update HISTFILESIZE code to be actually useful
+ ash: JOBSTOPPED can only be set if job control is compiled in - conditionalize code which depends on it
+ ash: cache more of uid/gid syscalls
+ ash: change procargs() to match recent dash change
+ ash: command -v CMD must skip (go to next path) when CMD exists, but is not executable
+ ash: eval: Add vfork support
+ ash: eval: Always set exitstatus in evaltree
+ ash: eval: Reset handler when entering a subshell
+ ash: fix \ooo octal printout in DEBUG code
+ ash: fix cmdputs - was showing some variable forms incorrectly
+ ash: fix fallout of no-more-set commandname
+ ash: get rid of a static in cmdlookup()/delete_cmd_entry()
+ ash: implement <<<here_string syntax
+ ash: jobs: drop unused node parameter in makejob()
+ ash: jobs: Block signals during tcsetpgrp
+ ash: make "test -x" use cached groupinfo
+ ash: move 100 bytes off global .data / .bss, no logic changes
+ ash: move applet handling out of tryexec() - making it similar to dash
+ ash: options: Do not set commandname in procargs
+ ash: parser: Invalid redirections are run-time, not syntax errors
+ ash: redir: Retry open on EINTR
+ ash: remove non-standard chdir builtin
+ ash: rename got_sigchld, doing_jobctl, and INT_ON/OFF to match dash
+ ash: reuse vstype_suffix[] in debug code, shrink it
+ ash: unset traps before entering NOEXEC programs after [v]fork
+ hush: optional alias support
+ hush: allow nested negation "! ! ! CMD" - bash 5.2.15 allows it
+ hush: create a macro IS_NULL_WORD to test for null shell word
+ hush: disentangle interactiveness/job_control setup code
+ hush: disentangle keyword detection, no logic changes
+ hush: do not SEGV on if { echo foo; } then { echo bar; } fi
+ hush: do not save history on xfunc error, it's unsafe
+ hush: do not segfault on "for </dev/null v in..."
+ hush: don't save history in subshells; on NOMMU, don't be interactive on reexec
+ hush: drop ctx_inverted, use pipe->pi_inverted
+ hush: explain "empty quoted str marker" trick
+ hush: fix "type ./cat" and "command -v ./cat" to not scan PATH
+ hush: fix SEGV on "echo << >" and such
+ hush: fix a corner case in "case" stmt, ctx_dsemicolon is in fact unused
+ hush: fix memory leak caused by compiler optimizing out a store
+ hush: fix several syntax corner cases with function definitions
+ hush: if !JOBS, skip tests which wouldn't work
+ hush: implement <<<here_string syntax
+ hush: recognize "function FUNC { cmd; }" syntax
+ hush: make "test -x" use cached groupinfo
+ hush: optimization in set_local_var()
+ hush: optimization: do not glob words "[" and "[["
+ hush: optimize decoding of $'str' - avoid extra function call if we can
+ hush: remove always-true conditional
+ hush: remove the is_blank dance
+ hush: remove two strchr's from the hottest parsing loop
+ hush: rename hush_exit to save_history_run_exit_trap_and_exit, sigexit to restore_ttypgrp_and_killsig_or__exit
+ hush: shrink i_getch, rename two functions
+ hush: shrink syntax error handling
+ hush: test for, and disallow several invalid syntaxes
+ hush: with --login, errors in /etc/profile must not exit shell
+ hush: ~5% faster parsing of typical shell scripts
+ awk: use more understandable form of "split-globals" trick
+ bootchartd: check the result of opendir("/proc")
+ chrt: support passing `-p 0` to operate on self
+ cmp: fix -n causing all diffs to be output, implement size suffixes for SKIP
+ coreutils: fixes for coreutils/id_test.sh script
+ cp: fix `cp -aT` overwriting symlink to directories
+ cpio: error out if the file to be achived is >=4GB
+ cpio: fix a bug (wrong free() address) in !FEATURE_TAR_LONG_OPTIONS config
+ cryptpw: -m sha512crypt must also be accepted
+ cryptpw: fix detection of crypt algo from salt (was broken if default isn't DES)
+ cut: "it's legal to pass an empty list" seems to be untrue
+ cut: "orig_line" is redundant, remove it
+ cut: allocate "printed" only if OPT_CHAR or OPT_BYTE
+ cut: comment out code which seems to be not needed
+ cut: disallow -f '' and -f '-'
+ cut: fix "echo 1.2 | cut -d. -f1,3" (print "1", not "1.")
+ cut: fix -F n-m to match toybox
+ cut: fix -d$'\n' --output-delimiter=@@ behavior
+ cut: fix handling of -d ''
+ cut: fix up -D/-s behavior with -F
+ cut: implement --output-delimiter
+ cut: localize 'spos' variable, convert !NUMVAR to NUMVAR == 0
+ cut: prevent infinite loop if -F REGEX matches empty delimiter
+ cut: remove unnecessary initialization of regmatch_t
+ cut: rename "cut_lists" to "cut_list"
+ cut: shorten error messages on bad syntax
+ cut: simplify OPT_ names, eliminate one variable
+ cut: simplify getopt32 code
+ cut: terminate cut_list[] so that we don't need "size of the array" variable
+ cut: we can't get empty cut_list[], remove the check for that
+ cut: with -F, do not regcomp() pattern for every file
+ dd: fix overflow for very large count/seek/skip values
+ df: -k overrides block size to 1k even if $POSIXLY_CORRECT
+ fdisk: comment out "not a multiple of 512 bytes" warning
+ fdisk: eliminate static variables, fix GPT disk size (32x32->32 overflow)
+ fdisk: fix spurious warning about zero unused sectors
+ fdisk: implement -t PARTTYPE
+ fdisk: several fixes for 4K sector size
+ fdisk: simplify start/len calculations for Sun labels
+ fdisk: uncomment -s support
+ hexdump: accept hex numbers in -n, closes 16195
+ httpd: add -M MAXCONN - do not accept unlimited number of connections
+ httpd: allow http2 requests if proxying, tighten METHOD checks
+ httpd: allow static files in /cgi-bin/, do not search for interpreter twice
+ httpd: do not force clean connection termination on write errors and timeouts
+ httpd: expand logging: now can see what CGIs are started
+ httpd: fix compilation script of httpd_ratelimit_cgi.c
+ httpd: handle bare "Location: URL" redirects from CGIs
+ httpd: implement POSTDATA read timeout, and -K KILLSECS CGI lifetime control
+ httpd: make timeout messages less confusing
+ httpd: optimize header reading timeout code
+ httpd: reject request line and headers with control chars
+ httpd: remove one close() from main loop
+ httpd: stop disabling/enabling SIGHUP in every child
+ httpd: simplify CGI code a bit, add a bunch of TODOs and FIXMEs
+ httpd: simplify CGI headers handling, check "HTTP/1.1" prefix, not just "HTTP"
+ httpd: smarter handling of CGI's "Status: " header
+ httpd: time out data writes after 60 seconds of no progress
+ httpd: when reading headers, abort if they are too long
+ httpd: optimize example CGIs
+ httpd: do not use a global variable in index.cgi
+ networking/httpd_indexcgi.c: non-mallocing version
+ networking/httpd_ratelimit_cgi.c: new example CGI handler
+ ip route: make cache printing a bit more similar to upstream
+ last: fix ignoring the first login entry
+ less: do not retry reads of stdin if got EAGAIN
+ less: fix ":d" command
+ less: improve O_NONBLOCK manipulations on stdin
+ less: make read error reporting actually visible
+ ls: don't do unnecessary tty operations when called from ftpd
+ ls: fix -Q to match GNU
+ ls: implement -q, fix -w0, reduce startup time
+ ls: lack of -q should not suppress -Q
+ ls: restore functionality of --color
+ man: fix following links if run inside manpage dir
+ netstat,pscan: don't use getservbyport(), it links in a static buffer
+ nsenter,unshare: don't use xvfork_parent_waits_and_exits(), it SEGVs on ppc64le
+ ntpd: replace two bb_info_msg's with bb_error_msg
+ ntpd: set tmx.maxerror properly - avoid STA_UNSYNC
+ pgrep/pkill: fix -x to also match comm field
+ pmap: increase max handled command line length to 4k
+ rpm2cpio: extract cpio even if compression is not known
+ runsv: fix open error check (fd < -1 should be fd < 0)
+ sestatus: fix potential segfault
+ sha3sum: add -aBITS tests
+ showkey: make -a, -k, -s mutually exclusive
+ sulogin: set ^C to SIG_DFL before execing the shell
+ tar: strip unsafe hardlink components - GNU tar does the same
+ tar: unicode fix
+ telnet: rewrite to use ioloop()
+ telnetd: correct handling of screen sizes with any dimension equal to 255
+ telnetd: do close pty when network read returns EOF; try to cause EOF-on-read
+ telnetd: do not send stray \r\n before /etc/issue.net
+ telnetd: do not wait for more input after 10-byte NAWS is received
+ telnetd: fix handshake: had one wrong, but harmless element
+ telnetd: if vfork in make_new_session() fails, do close socket
+ test: -x can return 0/1 early if all X bits are the same
+ test: Invert return value of test_eaccess and rename it to test_st_mode
+ tftp: use bb_error_msg instead of info_msg for a debug message
+ top,pmap: do not use common code for reading /proc/PID/smaps
+ top,pmap: speed up /smaps parsing
+ top: consistently NOT use the last column of the display
+ top: disentangle printing logic
+ top: do not rescan processes on second 's'
+ top: fix display of very large VSZ
+ top: improve response time to keyboard input
+ top: make uppercase 'S' walk topmem in opposite direction
+ top: reduce flicker: redraw screen with "clear to EOL" commands, not one "clear screen"
+ top: show RSS instead of VIRT, virtual mapped size is often meaningless
+ top: simplify command line reading
+ udhcpc6: check the size of D6_OPT_IAPREFIX option
+ udhcpc6: fix buffer overflow
+ udhcpd: send DHCPOFFERs as unicast (unless clients specifically asks for bcast)
+ uuidgen: move UUID formatting to libbb
+ vi: code shrink, optimize: do not call count_lines() unless needed
+ vi: fix ":list" command
+ vi: fix "s /find/repl" with whitespace before /
+ vi: warn about range in ':!' command
+ volume_id: improve handling of too-small (usually zero-byte or erroring) blockdevs
+ watch: implement -x
+ xxd: fix -pANYTHING handling (-pc50 does not mean -p -c50)
+
+Giorgi Tchankvetadze:
+ networking/udhcp: fix typo in comment
+ cmp: stop skipping bytes if EOF is reached
+
+Grant Erickson:
+ syslogd: Fix 'OPT_locallog' check regression in 'syslogd_main'
+
+Hajime Tazaki:
+ hush: fix G.argv0_for_re_execing to avoid endless loop
+
+J. Neusch??fer:
+ runit: fix setuidgid help text
+
+Ladislav Michl:
+ date: return failure exit code on clock_settime error
+
+Laurent Bercot:
+ udhcpc6: improvements
+
+Martin Storsj??:
+ md5/sha1sum: Honor the -b flag in the output
+
+Michael Glembotzki:
+ ntpd: Raise MAXDIST to 3s for better tolerance and consistency with chrony
+
+Natanael Copa:
+ hexdump: fix regression with -n4 -e '"%u"'
+
+Noelle Leigh:
+ docs: Add links to cmd description from cmd list
+
+Osama Abdelkader:
+ lsblk: new applet
+
+Osama Abdelkader via busybox:
+ util-linux: add minimal uuidgen implementation
+
+Radoslav Kolev:
+ hexdump: fix regression for uint16 on big endian systems
+ od: make -B test little endian only, add variant for big endian
+ hexdump: add tests for %x, handle little/big endian properly
+ tar: only strip unsafe components from hardlinks, not symlinks
+
+Ron Yorston:
+ libbb: use full_write1_str() to shrink busybox_main()
+ libbb: send usage messages to correct stream
+ ed: fix line insertion before current line. Closes 15081
+ lineedit: use stdout for shell history builtin
+ ash: reject unknown long options
+ libbb: tidy argument checks in getopt32()
+ cut: improve detection of invalid ranges
+ shell: improve bash compatibility of read built-in
+ paste: fix output when file lengths differ
+ ash: fix here strings causing segfault in function invocation
+ ash: fix help builtin and tab completion of builtins
+
+Rudi Heitbaum:
+ libbb: fix sha1 on !x86 if CONFIG_SHA1_HWACCEL=y
+
+Sam James:
+ fixdep: add fstat error handling
+
+Sertonix:
+ cpio: map -F to --file long option
+
+S??bastien Parisot:
+ init: improve log message when a process exits: show exit code
+
+Thomas Devoogdt:
+ networking/libiproute/iplink.c: fix support for older kernels
+
+Valentin Lab:
+ crond: reap orphaned grandchildren to prevent zombie buildup
+
+Wouter Franken:
+ libbb/loop: fix existence check for LOOP_CONFIGURE ioctl
+
+Zhou Siqi:
+ udhcpc6: generate a consistent IAID
+
+
+ BusyBox 1.37.0.
(git,
From vda.linux at googlemail.com Wed May 13 02:20:15 2026
From: vda.linux at googlemail.com (Denys Vlasenko)
Date: Wed, 13 May 2026 04:20:15 +0200
Subject: [git commit] Bump version to 1.38.0
Message-ID: <20260513032448.D8FE686033@busybox.osuosl.org>
commit: https://git.busybox.net/busybox/commit/?id=fc71374dfccd46448c62947269a35f1420d7ee28
branch: https://git.busybox.net/busybox/log/?h=master
Signed-off-by: Denys Vlasenko