The Launch of GNU Coreutils 9.5 and its Rust Edition

Published stable version of a set of basic system utilities GNU Coreutils 9.5which includes programs such as sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, ls, etc.

Key innovations:

Advertisement

  • The cp, mv, install, cat and split utilities have been optimized for write and read operations. The minimum readable or writable block size has been increased from 128KiB to 256KiB, resulting in a 10-20% increase in throughput when reading cached files.
  • Support for unnamed signals has been added to the env, kill and timeout utilities.
  • The efficiency of copy operations when used in a SELinux system has been improved by eliminating the translation of unnecessary MCS/MLS labels.
  • Reduced startup time of the sort utility by stopping dynamic linking with the libcrypto library in situations where the “-R” option is not specified.
  • The work of the wc utility has been significantly accelerated in environments with single-byte locales and slightly accelerated on systems with multi-byte locales.
  • Added support for the “–from=OWNER:GROUP” option to the chgrp utility to apply changes only to files with the specified owner and group.
  • The chmod utility, similar to the chown and chmod utilities, implements the “-h”, “-H”, “-L”, “-P” and “–dereference” options, which provide additional options for processing symbolic links.
  • Added “–keep-directory-symlink” option to cp utility to save and follow existing symlinks to directories.
  • The “–update=none-fail” option has been added to the cp and mv utilities, which is similar to the “–no-clobber” option, except that execution fails if the files already exist.
  • The -a (–argv0) option has been added to the env utility to override the command line null parameter (the path to the executable file).
  • The “–exchange” option has been added to the mv utility to exchange the contents of the source and destination (for example, when executing “mv –exchange AB”, the contents of A and B will be swapped, i.e. A will move to B, and B to A) .
  • The tail utility has added support for tracking output from multiple processes by repeatedly specifying multiple “–pid” options.

A few days ago there was also published project release uutils coreutils 0.0.25, which develops an analogue of the GNU Coreutils package, rewritten in the Rust language. Coreutils comes with over a hundred utilities, including sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, and ls. The goal of the project is to create a cross-platform alternative implementation of Coreutils, capable of running on Windows, Redox and Fuchsia platforms, among others. Unlike GNU Coreutils implementation in Rust distributed by under the permissive MIT license, instead of the GPL copyleft license.

The new version of uutils uses the GNU Coreutils 9.4 release as a reference. Improved compatibility with the GNU Coreutils reference test suite, which passed 437 tests (previously 422), failed 117 (132) tests, and skipped 50 (50) tests. Provides full compatibility with GNU Coreutils for utilities base64, basename, cat, chgrp, chmod, chown, dirname, expand, fold, groups, join, ln, mktemp, nice, nl, nproc, paste, pathchk, printenv, realpath, shuf, sleep, split, sync, unexpand, uniq, wc and yes.

Expanded capabilities, improved compatibility and added missing options for utilities base32, base64, basenc, basename, cat, chcon, chmod, cksum, cp, csplit, cut, dd, df, du, echo, env, expand, factor, fmt, hashsum , install, ln, ls, more, numfmt, odd, printf, pr, seq, shuf, sort, split, stat, tsort, tty, truncate, uname and uniq.

Advertisement

Thanks for reading:

Advertisement