The GNU project has announced the release of coreutils 9.10, a new stable version of the essential collection of basic file, shell, and text manipulation utilities that form the backbone of nearly every Linux and Unix-like system.
The release addresses several regressions introduced in version 9.9, affecting cp, install, and mv when copying sparse files using SEEK_HOLE. This issue could surface on filesystems such as ext4 when sparse files were actively updated, and copy offload was unavailable.
Signal handling also seen improvements. The timeout command now reliably propagates all terminating signals to the monitored process, preventing cases where the parent process exits while leaving the child running.
At the same time, ignored signals are now correctly respected, improving behavior in backgrounded shell jobs. Related fixes ensure tail -f --pid no longer exits unexpectedly on non-terminating signals.
Several other utilities also received correctness fixes. The date command no longer fails when format directives produce empty output, while dd avoids overwriting existing files if truncation fails. Long-standing portability issues were corrected in du and ls, which no longer modify strings returned by getenv.
Moreover, tools such as fmt, numfmt, md5sum, and the sha*sum family also received fixes covering error handling, suffix parsing, and line-ending translation.
In addition to the aforementioned fixes, Coreutils 9.10 introduces some functional enhancements. The paste command is now fully multi-byte character aware, including support for multi-byte delimiters. A new -A short option was added to du for --apparent-size, improving compatibility with FreeBSD.
The stat and tail utilities gained awareness of the guest-memfd filesystem type, and tail now offers a --debug option to report how follow mode is implemented.
Finally, documentation and usability were refined, with all commands now rendering option names in bold within --help output and man pages, with hyperlinks pointing directly to the corresponding online documentation.
For a deeper technical dive into all the changes in Coreutils 9.10, see the announcement.
