Release Notes
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
(release notes).
- 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:
.POSIX:
.PRAGMA: posix_202x
- The applet has been given the alias
pdpmake
.
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
shell:
export BB_OVERRIDE_APPLETS="make"
- 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
feature.
- 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
problematic.
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 --binary
option to disable this conversion. This is similar to the behaviour of
GNU diff
. sed
in busybox-w32 already had such
an option.
vi
now has a -b
command line option
and binary
(abbreviation: bin
) option. These
force the use of binary mode for input and output. vim
has
a similar feature.
- The
fileformat
(abbreviation: ff
)
option in 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 -n
option.
(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
sort
about twice as fast, grep
four or five times faster.
(GitHub issue #278)
- Random numbers generated by the
rand()
function
in 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
HOME
variable,
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
example, vi
is able to find its ~/.exrc
file.
- 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.