[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

coreutils-9.0 released [stable]

From: Pádraig Brady
Subject: coreutils-9.0 released [stable]
Date: Fri, 24 Sep 2021 15:01:38 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Thunderbird/84.0

This is to announce coreutils-9.0, a stable release.

This is a new major release, with these significant changes:
  - cp has changed how it handles data
    - enables CoW by default (through FICLONE ioctl),
    - uses copy offload where available (through copy_file_range),
    - detects holes differently (though SEEK_HOLE)
    - This also applies to mv and install.

  - utilities are more tuned to the hardware available
    - wc uses avx2 instructions to count lines
    - cksum uses pclmul instructions for --algorithm=crc
      - Other digest tunings remain delegated to libcrypto

  - More amalgamation of utilities
    - cksum now supports the -a option to select any digest.
    - This is the preferred interface, rather than sha*sum etc.
    - This is similar to the amalgamation of encoding utilities
      introduced in the basenc command in v8.31.
See the NEWS below for more details.

Thanks to everyone who has contributed!
There have been 257 commits by 25 people in the 81 weeks since 8.32
  Andreas Schwab (1)              KOBAYASHI Takashi (2)
  Arman Absalan (1)               Kamil Dudka (4)
  Assaf Gordon (1)                Kristoffer Brånemyr (3)
  Ben Pfaff (1)                   Nikolay Nechaev (1)
  Benno Schulenberg (1)           Nishant Nayan (1)
  Bernhard Voelker (17)           Paul Eggert (97)
  Carl Edquist (2)                Pádraig Brady (110)
  Emanuele Giacomelli (1)         Tianjia Zhang (1)
  Erik Auerswald (1)              Tim Gates (1)
  Grigorii Sokolik (2)            Tobias Stoeckmann (1)
  Jason Kim (1)                   Zorro Lang (1)
  Jim Meyering (7)                nl6720 (1)
  Justin Tracey (1)

Pádraig [on behalf of the coreutils maintainers]


Here is the GNU coreutils home page:

For a summary of changes and contributors, see:;a=shortlog;h=v9.0
or run this command from a git-cloned coreutils directory:
   git shortlog v8.32..v9.0

To summarize the 1615 gnulib-related changes, run these commands
from a git-cloned coreutils directory:
   git checkout v9.0
   git submodule summary v8.32


Here are the compressed sources:   (14MB)   (5.4MB)

Here are the GPG detached signatures[*]:

Use a mirror for higher download bandwidth:

Here are the SHA1 and SHA256 checksums:

027a318930f295cb5bbc0dd06fb47a3b8552fc80  coreutils-9.0.tar.gz
b9TriKUVAEl3/HLX9HtAYgQJzEHfrwBBn90b4XZjxDQ  coreutils-9.0.tar.gz
e2623469f37259d4a89ced5f91af5eaf0ab8792d  coreutils-9.0.tar.xz
zjCs30pBvFuzDdlV6eqnX6IWtOPesIiJ7TJDPHs7l84  coreutils-9.0.tar.xz

The SHA256 checksum is base64 encoded, instead of the
hexadecimal encoding that most checksum tools default to.

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify coreutils-9.0.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver --recv-keys DF6FD971306037D9

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:
  Autoconf 2.71
  Automake 1.16.4
  Gnulib v0.1-4937-g9aca7b673
  Bison 3.7.4



* Noteworthy changes in release 9.0 (2021-09-24) [stable]

** Bug fixes

  chmod -v no longer misreports modes of dangling symlinks.
  [bug introduced in coreutils-5.3.0]

  cp -a --attributes-only now never removes destination files,
  even if the destination files are hardlinked, or the source
  is a non regular file.
  [bug introduced in coreutils-8.6]

  csplit --suppress-matched now elides the last matched line
  when a specific number of pattern matches are performed.
  [bug introduced with the --suppress-matched feature in coreutils-8.22]

  df no longer outputs duplicate remote mounts in the presence of bind mounts.
  [bug introduced in coreutils-8.26]

  df no longer mishandles command-line args that it pre-mounts
  [bug introduced in coreutils-8.29]

  du no longer crashes on XFS file systems when the directory hierarchy is
  heavily changed during the run.
  [bug introduced in coreutils-8.25]

  env -S no longer crashes when given unusual whitespace characters
  [bug introduced in coreutils-8.30]

  expr no longer mishandles unmatched \(...\) in regular expressions.
  [bug introduced in coreutils-6.0]

  ls no longer crashes when printing the SELinux context for unstatable files.
  [bug introduced in coreutils-6.9.91]

  mkdir -m no longer mishandles modes more generous than the umask.
  [bug introduced in coreutils-8.22]

  nl now handles single character --section-delimiter arguments,
  by assuming a second ':' character has been specified, as specified by POSIX.
  [This bug was present in "the beginning".]

  pr again adjusts tabs in input, to maintain alignment in multi column output.
  [bug introduced in coreutils-6.9]

  rm no longer skips an extra file when the removal of an empty directory fails.
  [bug introduced by the rewrite to use fts in coreutils-8.0]

  split --number=K/N will again correctly split chunk K of N to stdout.
  Previously a chunk starting after 128KiB, output the wrong part of the file.
  [bug introduced in coreutils-8.26]

  tail -f no longer overruns a stack buffer when given too many files
  to follow and ulimit -n exceeds 1024.
  [bug introduced in coreutils-7.5]

  tr no longer crashes when using --complement with certain
  invalid combinations of case character classes.
  [bug introduced in coreutils-8.6]

  basenc --base64 --decode no longer silently discards decoded characters
  on (1024*5) buffer boundaries
  [bug introduced in coreutils-8.31]

** Changes in behavior

  cp and install now default to copy-on-write (COW) if available.

  cp, install and mv now use the copy_file_range syscall if available.
  Also, they use lseek+SEEK_HOLE rather than ioctl+FS_IOC_FIEMAP on sparse
  files, as lseek is simpler and more portable.

  On GNU/Linux systems, ls no longer issues an error message on a
  directory merely because it was removed.  This reverts a change
  that was made in release 8.32.

  ptx -T no longer attempts to substitute old-fashioned TeX escapes
  for 8-bit non-ASCII alphabetic characters.  TeX indexes should
  instead use '\usepackage[latin1]{inputenc}' or equivalent.

  stat will use decomposed (major,minor) device numbers in its default format.
  This is less ambiguous, and more consistent with ls.

  sum [-r] will output a file name, even if only a single name is passed.
  This is consistent with sum -s, cksum, and other sum(1) implementations.

** New Features

  cksum now supports the -a (--algorithm) option to select any
  of the existing sum, md5sum, b2sum, sha*sum implementations etc.
  cksum now subsumes all of these programs, and coreutils
  will introduce no future standalone checksum utility.

  cksum -a now supports the 'sm3' argument, to use the SM3 digest algorithm.

  cksum --check now supports auto detecting the digest type to use,
  when verifying tagged format checksums.

  expr and factor now support bignums on all platforms.

  ls --classify now supports the "always", "auto", or "never" flags,
  to support only outputting classifier characters if connected to a tty.

  ls now accepts the --sort=width option, to sort by file name width.
  This is useful to more compactly organize the default vertical column output.

  ls now accepts the --zero option, to terminate each output line with
  NUL instead of newline.

  nl --line-increment can now take a negative number to decrement the count.

  stat supports more formats for representing decomposed device numbers.
  %Hd,%Ld and %Hr,%Lr will output major,minor device numbers and device types
  respectively.  %d corresponds to st_dev and %r to std_rdev.

** Improvements

  cat --show-ends will now show \r\n as ^M$.  Previously the \r was taken
  literally, thus overwriting the first character in the line with '$'.

  cksum [-a crc] is now up to 4 times faster by using a slice by 8 algorithm,
  and at least 8 times faster where pclmul instructions are supported.
  A new --debug option will indicate if pclmul is being used.

  md5sum --check now supports checksum files with CRLF line endings.
  This also applies to cksum, sha*sum, and b2sum.

  df now recognizes these file systems as remote:
  acfs, coda, fhgfs, gpfs, ibrix, ocfs2, and vxfs.

  rmdir now clarifies the error if a symlink_to_dir/ has not been traversed.
  This is the case on GNU/Linux systems, where the trailing slash is ignored.

  stat and tail now know about the "devmem", "exfat", "secretmem", "vboxsf",
  and "zonefs" file system types.  stat -f -c%T now reports the file system
  type, and tail -f uses polling for "vboxsf" and inotify for the others.

  timeout now supports sub-second timeouts on macOS.

  wc is up to 5 times faster when counting only new line characters,
  where avx2 instructions are supported.
  A new --debug option will indicate if avx2 is being used.

Also posted at

reply via email to

[Prev in Thread] Current Thread [Next in Thread]