busybox-w32 version FRP-4882-g6e0a6b7e5 was released on 2023-02-15. It is
the current release. For other release notes see:
- make applet
- The experimental
make applet has been updated to match
upstream version 1.4.1
- Compliance with the current POSIX standard has been improved.
- Pragmas allow some of the requirements of the standard to be
relaxed when running in POSIX mode. They also allow the user to control
which version of the standard is enforced at runtime. By default this is
the current (2017) version. To switch to the forthcoming ("202X") version
use command line flags:
make --posix -x posix_202x ...
or add the following at the start of the makefile:
- The applet has been given the alias
This makes it possible to disable
make at build time while
retaining access to the applet under its alternative name.
make can also be disabled at runtime with this setting in the
- File metadata
- The never-ending quest to make file ownership and permissions
seem more like Unix continues.
- A regression in the FRP-4264-gc79f13025 release resulted in
incorrect write permissions being reported for directories. This has been
fixed. (GitHub issue #280)
- Using only file ownership information to determine write
permissions proved insufficient. In some cases it's also necessary to
check if access is allowed by an access control list (ACL). A particular
case in point is the user's home directory. On Windows it belongs to a
system user, with the actual owner granted permission via an ACL.
(GitHub issue #280)
- Providing an accurate value of the number of links to a
directory requires a potentially time-consuming count of its subdirectories.
Avoid doing this unless the information is actually needed.
- Determining if a file is executable could result in its
access time being updated. This is no longer the case.
Recent versions of Windows don't update access times by default so
this only makes a difference if the user has chosen to enable this
- Line terminators
- Unix and Microsoft Windows use different line terminators: line feed (LF)
in Unix and carriage return plus line feed (CRLF) in Windows. Upstream BusyBox
mostly targets Linux so it assumes the Unix convention. busybox-w32
targets Windows so it has to allow for native files and utilities using
CRLF line terminators. This requires changes to the code and can be
Some recent developments in this area:
- Normally the
diff applet reads input in text
mode, where CRLFs are converted to LFs. It now has a
option to disable this conversion. This is similar to the behaviour of
sed in busybox-w32 already had such
vi now has a
-b command line option
bin) option. These
force the use of binary mode for input and output.
a similar feature.
vi is no longer read-only. This allows the user to
override the format used when the current editing buffer is written to
a file. The
binary option takes precedence, though.
- In a number of places the code incorrectly removed CRs
from input even though they weren't part of a CRLF line ending. These
cases have been fixed.
- Bug fixes and enhancements
- When reporting errors
getopt respects the
name provided by the
(GitHub issue #274)
- Reading input files has been speeded up in a number of
cases. The exact speed-up depends on the applet: tests show
about twice as fast,
grep four or five times faster.
(GitHub issue #278)
- Random numbers generated by the
awk were found to be correlated between runs separated by
a small time interval. Some improvements have been made which are probably
sufficient for less-demanding requirements. As ever, anyone making serious
use of random numbers should make their own arrangements.
(GitHub issue #279)
- The (non-default)
vi line editing mode
in the shell could result in unexpected termination of the shell when certain
commands were invoked in certain circumstances. (GitHub issue #283)
- The shell in busybox-w32 sets the
as it's commonly used by other applets to find the user's home directory.
If these other applets are run outside the context of the shell
HOME may not be set. Provide a default value so that, for
vi is able to find its
- Changes imported from upstream
- busybox-w32 has been synchronised with upstream BusyBox.
Most changes this time don't affect busybox-w32. One that might be useful
to somebody is that
pkill -e displays the name and PID of the
process being killed.