From 7eaddbdb9c1712801ddf131ed79ead0c981ffcb1 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sat, 18 Jan 2025 14:20:33 -0600 Subject: [PATCH] Release 8.12 --- toys.h | 2 +- www/header.html | 3 +- www/news.html | 222 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 224 insertions(+), 3 deletions(-) diff --git a/toys.h b/toys.h index 94d0c4b5..5ec71ce9 100644 --- a/toys.h +++ b/toys.h @@ -141,5 +141,5 @@ extern char **environ, *toybox_version, toybuf[4096], libbuf[4096]; #ifndef TOYBOX_VENDOR #define TOYBOX_VENDOR "" #endif -#define TOYBOX_VERSION "0.8.11"TOYBOX_VENDOR +#define TOYBOX_VERSION "0.8.12"TOYBOX_VENDOR #endif diff --git a/www/header.html b/www/header.html index ec0d2969..76dd2d88 100644 --- a/www/header.html +++ b/www/header.html @@ -15,7 +15,6 @@ - Help
- FAQ
- News
- - Youtube
  • Why is it?
    @@ -55,5 +54,5 @@ -

    Current release 0.8.11 (April 8, 2024)

    +

    Current release 0.8.12 (January 18, 2025)


    diff --git a/www/news.html b/www/news.html index 313f9323..65f31e1d 100644 --- a/www/news.html +++ b/www/news.html @@ -37,6 +37,228 @@ bootable under QEMU (built using a Build: --> +

    Jan 18, 2025

    +
    +

    The regular early morning yell of horror was the sound of Arthur Dent waking +up and suddenly remembering where he was.

    +

    - The Hitchhiker's Guide to the Galaxy

    +
    + +

    Toybox 0.8.12 +(git commit) +is out, with prebuilt static binaries and +mkroot images +bootable under QEMU 9.2.0 (built using a lightly patched linux-6.12).

    + +

    Posix-2024 (SUSv5, issue 8) finally came out, and a few things +have been tweaked, but as with Posix-2008 (SUSv4, issue 7, released +16 years ago) it was mostly codifying what the Linux man pages +already said.

    + +

    Toybox is now only the fifth most starred repository of the +~60k 0BSD licensed projects on github, which means +Zero Clause BSD has +outgrown its roots.

    + +

    Features: added netcat -o -O (hex output, the first +preserving original input groups and the latter continuous), and +tar now handles another obsolete sparse format you get in old tarballs sometimes (with test). +Elliott added NPROCESSORS_CONF and NPROCESSORS_ONLN to getconf, +added -f FILE and --no-sync to devmem, and +taught tar to call out to zstd. +Oliver Webb added test -ef -ot -nt, +Brian Norris added dmesg -W. +Karthikeyan Ramasubramanian added devmen --no-mmap. +Kana Steimle added mount LABEL=. +Firas Khalil Khana made lsusb and lspci also check +/usr/share/hwdata (since the Linux Foundation killed the Linux Standard +Base system packagers can't quite agree where stuff should live). +

    + +

    Bugfixes: +grep -r now opens files with O_NOBLOCK|O_NOCTTY to avoid getting hung +up on FIFOs or attaching the console to dev/tty nodes, +patch -F0 disables fuzz support, +find -size implies -type f, +host detects truncated replies and doesn't output the length byte at +the start of TXT replies, +more complicated relative file permission parsing like chmod g+rX-ws +is now handled properly, +tar honors umask unless -p supplied (with tests), +test -nt and -ot now only check nanoseconds when the seconds match, +and a weird corner case in ps was because the make.sh plumbing +wasn't switching FLAG_x to "long long" quite fast enough (when 1<<31 +is negative, using it in nontrivial bitmask checks can go strange).

    + +

    Elliott fixed a crash when file tried to parse corrupted ELF files, +fixed cp -i -v verbose notifications (showing source when they should +show destination, etc), and fixed +a sendfile_len() bounds check. Ray Gardner found a unicode bug in lib.c's +strlower() (which is now checked for in find.test). +Yi-Yo Chiang fixed netcat -f and two bugs in microcom's +"paste" command. +Xiuhong Wang fixed ionice's output when checking the IO priority of a +process you don't have permission to access. +Dima Buzdyk taught lsusb to handle multiple PCIe controllers, including printing +the controller domain id when there's more than one. +Peter Collingbourne noticed that ps/top etc were setting the stdout buffer +twice (which glibc doesn't support). +Kana Steimle fixed blkid to match util-linux behavior more closely.

    + +

    Library: +Added cfspeed2bps() and bsp2cfspeed() functions (converting bits per second +values to/from the cfsetspeed() argument bitmask), and make xsetspeed() +use them. Moved anystart() and anystr() to lib.c.

    + +

    Mkroot: +New riscv32 and riscv64 targets, and or1k switched to the +-M virt board emulation so it can exit now. The armv5l -M versatilepb +board no longer micromanages the network card selection (which was working +around a bug from 2007 long since fixed upstream). +All shipped targets fully +pass mkroot/testroot.sh except or1k +(no default -hda bus in qemu's +board emulation), microblaze (no -hda +available even with -drive, and the board emulation doesn't know how to exit +without being killed), and sh4eb (an endianess disagreement between +the ethernet driver and device emulation, little endian works fine with the +same config).

    + +

    VMLINUX= no longer needs a path to a zimage file, it looks under +arch/$KARCH/boot when it's not at the top level. QEMU_M= +is now a short way to say "qemu-system-$CROSS -M $QEMU_M". +In mkroot/packages, updated the dropbear and zlib +versions, and added an initial script to convert the Linux From Scratch +12.1 sources into a squashfs +(just a start, several of the shipped patches are in the obsolete diff -c +"copied context" format because gnu, and I haven't taught patch to apply +the old format yet. Maye a new LFS release will stop doing that?) +setupfor now handles tarballs that don't extract to a directory with +the same name. +Fixed mkroot running in a container where /dev/tty was never associated +(where writing to it produces an error). The airlock build is skippable +so don't rely on it to set mkroot $VERSION.

    + +

    mkroot/record-commands can now be run from an arbitrary directory, +to more easily log command line usage in other projects' builds. Running +it with no arguments now sets up a persistent wrapper and outputs +an "export" line needed to update the $PATH and such to use it. +(Running a command under it the way chroot or sh -c work still sets up +the wrapper, runs the command, then tears down the wrapper again leaving +the log.) Also, make it work on a busybox-based host (where "find -type" +didn't understand commas).

    + +

    Pending: +New awk.c from Ray Gadner, which is 4500 lines long and counting +(46 commits so far). +Eric Roshan-Eisner fixed several issues in vi and its tests. +Elliott fixed /etc/issue in getty. +Daniel Rosenberg added diff --no-dereference and fixed comparisons +between symlinks and fifos (with test). +Kana Steimle fixed several things in crond.

    + +

    Use DRAIN instead of FLUSH in stty, +Consistently indent the help text blocks (in syslogd.c, dhcp6, diff.c...), +and the partial mke2fs.c was removed because gcc 14 breaks trying to build it +(due to a design change in gcc, which used to be able to compile it but +can't anymore, if I get around to finishing it I can check in one that +actually performs its intended function but bug reports about code that +doesn't work = remove it).

    + +

    More toysh work, most notably a +design change +that allows "trap" to asynchronlysly call functions from an interrupt handler +(by removing the recursive do_source() function, moving the read/parse/run +loop to sh_main(), and giving each sh_fcall stack entry a FILE *source +it can read data from when the parsed sh_pipeline is empty, and then pop +the sh_fcall on EOF and continue in the calling context.) +The tests that are currently expected to fail are now +annotated with $BROKEN (use "BROKEN= make test_sh" to try them), and +TEST_HOST now passes on bash 5.2. Implement return, move break +and continue to normal builtin commands (instead of special case +inline processing in run_lines()), make the xexit() longjmp() back to the shell +from builtins nest multiple levels deep if necessary (in case builtins call +builtins, which is less likely under the new design), bump script filehandle +to high fd and CLOEXEC it (instead of leaking into children). +Another one line fix had +several paragraphs +of explanation, but boils down to "kernels with static initramfs have no +stdin/stdout/stderr so toysh needs to cope when redirect opens one +of those as a temporary filehandle". Fixed backslash parsing in $'' so \' +doesn't end the quoting context.

    + +

    Cleanup: +Although klogd is cleaned up most of the way to being promotable, +since it just passes stuff along to syslogd (which isn't) it's not much +use on its own. Switched most remaining toys.optflags&FLAG_x checks to +FLAG(x). Minor cleanup on cp -r. +Elliott added input buffering to xxd, made find.c use S_ISREG() instead +of inlining it. Brian Norris added line buffering to dmesg stdout. +klogd is cleaned up most of the way to being promotable, but +since it just passes stuff along to syslogd (which isn't) it's not much +use on its own.

    + +

    Portability: +Fixed hwclock when settimeofday() syscall isn't available (which +musl and glibc broke in +different ways), +endianness checking now uses the compiler's built-in __BYTE_ORDER__ macro +instead of needing to #include headers. The nommu-friendly xvdaemon() +will now chdir("/") so background processes don't pin mount points, and +find.test now skips a test that triggered a macos bug. +Elliott dropped ps.c's dependency on android libprocessgroup (it now +reads /proc/$PID/cgroup directly). Vidar Karlsen had some freebsd updates. +Kana Steimle worked around closedir(NULL) segfaulting on musl (which doesn't +consider that a NOP).

    + +Documentation: +sysctl now accepts -A as an alias for -a but +doesn't try to explain it. +More FAQ entries. and added some links to the end of license.html. +Old entries in this news page no longer drive vi's html syntax highlighting nuts. +Elliott clarified the relationship between ls -s and --block-size. +Ivan Mirić fixed some typos in mkroot's README.

    + +

    Plumbing: +Added TOYFLAG_NOBUF, used by microcom to disable stdio buffering. +The "lie to autoconf" help pluming moved into main.c as TOYFLAG_AUTOCONF +because grep needs it too now.

    + +

    Test suite: +lots of tests updated to pass with TEST_HOST on Devuan Daedalus (I.E. +Debian Bookworm). Various .1 second timeouts were expanded to give loaded +servers time to schedule processes. (An unloaded raspberry pi should have no +trouble, and a swap-thrashing system may not finish even with a 5 second wait +to flush asynchronous activity, but it's at least a better guess.) +For some reason, ASAN on Debian's current gcc/glibc turns glibc's crypt() +function into a null pointer dereference. This seems to be a host toolchain bug, +and there's work underway to replace the host crypt() with a lib/lib.c +implementation using the builtin hashes in a future release, but for now +you have to switch off "mkpasswd" in menuconfig to pass "make tests" on +Debian. It worked fine on the old debian version, works fine built under +musl-libc, works fine without ASAN enabled, is not failing IN +crypt (it's never reaching it, the dynamic linker is turning the call into +a jump to NULL). The shipped binaries are built against musl where crypt() +(and thus mkpasswd) still works.

    + +

    Build: +Setting $TOOLCHAIN for scripts/install.sh (and thus +make airlock_install) now symlinks the listed additional commands from +the host $PATH into the new airlock directory. +Fixed ASAN to mostly work with newer gcc/glibc (from Debian 12) except for +the crypt() thing. Most files like generated/tags.h are now generated with sed and bash instead +of building a native C program to emit them. +Added --start-group and --end-group around the "extra" libraries when static +linking (because probing them in parallel doesn't preserve the magic order). +Sadly -f does not reliably shut up gnu/chmod, despite its longopt aliases +being "--silent" and "--quiet" (the aristocrats FSF!) +so redirect the noise to /dev/null. +Added "ar" to the airlock install's PENDING list because the dropbear build +grew a dependency on it. (You'd think that would use the cross compiler's +prefixed-ar, but no.) +Squelched more spurious clang warnings +about nothing.

    +

    April 8, 2024

    Another thing that got forgotten was the fact that against all probability a -- 2.39.5