* Noteworthy changes in release ?.? (????-??-??) [?]
+** New features
+
+ df now accepts the --output[=FIELD_LIST] option to define the list of columns
+ to include in the output, or all available columns if the FIELD_LIST is
+ omitted. Note this enables df to output both block and inode fields together.
+
+** Bug fixes
+
+ cp --no-preserve=mode now no longer exits non-zero.
+ [bug introduced in coreutils-8.20]
+
+ cut with a range like "N-" no longer allocates N/8 bytes. That buffer
+ would never be used, and allocation failure could cause cut to fail.
+ [bug introduced in coreutils-8.10]
+
+ cut no longer accepts the invalid range 0-, which made it print empty lines.
+ Instead, cut now fails and emits an appropriate diagnostic.
+ [This bug was present in "the beginning".]
+
+ cut now handles overlapping to-EOL ranges properly. Before, it would
+ interpret "-b2-,3-" like "-b3-". Now it's treated like "-b2-".
+ [This bug was present in "the beginning".]
+
+ cut no longer prints extraneous delimiters when a to-EOL range subsumes
+ another range. Before, "echo 123|cut --output-delim=: -b2-,3" would print
+ "2:3". Now it prints "23". [bug introduced in 5.3.0]
+
+ factor no longer loops infinitely on 32 bit powerpc systems.
+ [bug introduced in coreutils-8.20]
+
+ install -m M SOURCE DEST no longer has a race condition where DEST's
+ permissions are temporarily derived from SOURCE instead of from M.
+
+ pr -n no longer crashes when passed values >= 32. Also line numbers are
+ consistently padded with spaces, rather than with zeros for certain widths.
+ [bug introduced in TEXTUTILS-1_22i]
+
+ seq -w ensures that for numbers input in scientific notation,
+ the output numbers are properly aligned and of the correct width.
+ [This bug was present in "the beginning".]
+
+** Changes in behavior
+
+ df --total now prints '-' into the target column (mount point) of the
+ summary line, accommodating to the --output option where the target
+ field can be in any column. If there is no source column, then df
+ prints 'total' into the target column.
+
+ df now properly outputs file system information with bind mounts present on
+ the system by skipping duplicate entries (identified by the device number).
+
+ df now skips the early-boot pseudo file system type "rootfs" unless either
+ the -a option or "-t rootfs" is specified.
+
+ nl no longer supports the --page-increment option which was deprecated
+ since coreutils-7.5. Use --line-increment instead.
+
+** Improvements
+
+ stat and tail now know about CEPH. stat -f --format=%T now reports the file
+ system type, and tail -f uses polling for files on CEPH file systems.
+
+
+** Build-related
+
+ Perl is now more of a prerequisite. It has long been required in order
+ to run (not skip) a significant percentage of the tests. Now, it is
+ also required in order to generate proper man pages, via help2man. The
+ generated man/*.1 man pages are no longer distributed. Building without
+ perl, you would create stub man pages. Thus, while perl is not an
+ official prerequisite (build and "make check" will still succeed), any
+ resulting man pages would be inferior. In addition, this fixes a bug
+ in distributed (not from clone) Makefile.in that could cause parallel
+ build failure when building from modified sources, as is common practice
+ for a patched distribution package.
+
+ The check in the root-only tests to test whether our dummy user,
+ $NON_ROOT_USERNAME, is able to run binaries from the build directory
+ failed. As a result, these tests have been skipped unnecessarily.
+ [bug introduced in coreutils-8.20]
+
+
+* Noteworthy changes in release 8.20 (2012-10-23) [stable]
+
+** New features
+
+ dd now accepts 'status=none' to suppress all informational output.
+
+ md5sum now accepts the --tag option to print BSD-style output with GNU
+ file name escaping. This also affects sha1sum, sha224sum, sha256sum,
+ sha384sum and sha512sum.
+
+** Bug fixes
+
+ cp could read from freed memory and could even make corrupt copies.
+ This could happen with a very fragmented and sparse input file,
+ on GNU/Linux file systems supporting fiemap extent scanning.
+ This bug also affects mv when it resorts to copying, and install.
+ [bug introduced in coreutils-8.11]
+
+ cp --no-preserve=mode now no longer preserves the original file's
+ permissions but correctly sets mode specified by 0666 & ~umask
+
+ du no longer emits a "disk-corrupted"-style diagnostic when it detects
+ a directory cycle that is due to a bind-mounted directory. Instead,
+ it detects this precise type of cycle, diagnoses it as such and
+ eventually exits nonzero.
+
+ factor (when using gmp) would mistakenly declare some composite numbers
+ to be prime, e.g., 465658903, 2242724851, 6635692801 and many more.
+ The fix makes factor somewhat slower (~25%) for ranges of consecutive
+ numbers, and up to 8 times slower for some worst-case individual numbers.
+ [bug introduced in coreutils-7.0, with GNU MP support]
+
+ ls now correctly colors dangling symlinks when listing their containing
+ directories, with orphaned symlink coloring disabled in LS_COLORS.
+ [bug introduced in coreutils-8.14]
+
+ rm -i -d now prompts the user then removes an empty directory, rather
+ than ignoring the -d option and failing with an 'Is a directory' error.
+ [bug introduced in coreutils-8.19, with the addition of --dir (-d)]
+
+ rm -r S/ (where S is a symlink-to-directory) no longer gives the invalid
+ "Too many levels of symbolic links" diagnostic.
+ [bug introduced in coreutils-8.6]
+
+ seq now handles arbitrarily long non-negative whole numbers when the
+ increment is 1 and when no format-changing option is specified.
+ Before, this would infloop:
+ b=100000000000000000000; seq $b $b
+ [the bug dates back to the initial implementation]
+
+** Changes in behavior
+
+ nproc now diagnoses with an error, non option command line parameters.
+
+** Improvements
+
+ factor's core has been rewritten for speed and increased range.
+ It can now factor numbers up to 2^128, even without GMP support.
+ Its speed is from a few times better (for small numbers) to over
+ 10,000 times better (just below 2^64). The new code also runs a
+ deterministic primality test for each prime factor, not just a
+ probabilistic test.
+
+ seq is now up to 70 times faster than it was in coreutils-8.19 and prior,
+ but only with non-negative whole numbers, an increment of 1, and no
+ format-changing options.
+
+ stat and tail know about ZFS, VZFS and VMHGFS. stat -f --format=%T now
+ reports the file system type, and tail -f now uses inotify for files on
+ ZFS and VZFS file systems, rather than the default (for unknown file
+ system types) of issuing a warning and reverting to polling. tail -f
+ still uses polling for files on VMHGFS file systems.
+
+** Build-related
+
+ root-only tests now check for permissions of our dummy user,
+ $NON_ROOT_USERNAME, before trying to run binaries from the build directory.
+ Before, we would get hard-to-diagnose reports of failing root-only tests.
+ Now, those tests are skipped with a useful diagnostic when the root tests
+ are run without following the instructions in README.
+
+ We now build most directories using non-recursive make rules. I.e.,
+ rather than running make in man/, lib/, src/, tests/, instead, the top
+ level Makefile.am includes a $dir/local.mk that describes how to build
+ the targets in the corresponding directory. Two directories remain
+ unconverted: po/, gnulib-tests/. One nice side-effect is that the more
+ accurate dependencies have eliminated a nagging occasional failure that
+ was seen when running parallel "make syntax-check".
+
+
+* Noteworthy changes in release 8.19 (2012-08-20) [stable]
+
** Bug fixes
+ df now fails when the list of mounted file systems (/etc/mtab) cannot
+ be read, yet the file system type information is needed to process
+ certain options like -a, -l, -t and -x.
+ [This bug was present in "the beginning".]
+
+ sort -u could fail to output one or more result lines.
+ For example, this command would fail to print "1":
+ (yes 7 | head -11; echo 1) | sort --p=1 -S32b -u
+ [bug introduced in coreutils-8.6]
+
+ sort -u could read freed memory.
+ For example, this evokes a read from freed memory:
+ perl -le 'print "a\n"."0"x900'|valgrind sort --p=1 -S32b -u>/dev/null
+ [bug introduced in coreutils-8.6]
+
+** New features
+
+ rm now accepts the --dir (-d) option which makes it remove empty directories.
+ Since removing empty directories is relatively safe, this option can be
+ used as a part of the alias rm='rm --dir'. This improves compatibility
+ with Mac OS X and BSD systems which also honor the -d option.
+
+
+* Noteworthy changes in release 8.18 (2012-08-12) [stable]
+
+** Bug fixes
+
+ cksum now prints checksums atomically so that concurrent
+ processes will not intersperse their output.
+ [the bug dates back to the initial implementation]
+
+ date -d "$(printf '\xb0')" would print 00:00:00 with today's date
+ rather than diagnosing the invalid input. Now it reports this:
+ date: invalid date '\260'
+ [This bug was present in "the beginning".]
+
+ df no longer outputs control characters present in the mount point name.
+ Such characters are replaced with '?', so for example, scripts consuming
+ lines output by df, can work reliably.
+ [This bug was present in "the beginning".]
+
+ df --total now exits with an appropriate diagnostic and error code, when
+ file system --type options do not lead to a processed file system.
+ [This bug dates back to when --total was added in coreutils-7.0]
+
+ head --lines=-N (-n-N) now resets the read pointer of a seekable input file.
+ This means that "head -n-3" no longer consumes all of its input, and lines
+ not output by head may be processed by other programs. For example, this
+ command now prints the final line, 2, while before it would print nothing:
+ seq 2 > k; (head -n-1 > /dev/null; cat) < k
+ [This bug was present in "the beginning".]
+
+ ls --color would mis-color relative-named symlinks in /
+ [bug introduced in coreutils-8.17]
+
+ split now ensures it doesn't overwrite the input file with generated output.
+ [the bug dates back to the initial implementation]
+
+ stat and df now report the correct file system usage,
+ in all situations on GNU/Linux, by correctly determining the block size.
+ [df bug since coreutils-5.0.91, stat bug since the initial implementation]
+
+ tail -f no longer tries to use inotify on AUFS or PanFS file systems
+ [you might say this was introduced in coreutils-7.5, along with inotify
+ support, but even now, its magic number isn't in the usual place.]
+
+** New features
+
+ stat -f recognizes the new remote file system types: aufs, panfs.
+
+** Changes in behavior
+
+ su: this program has been removed. We stopped installing "su" by
+ default with the release of coreutils-6.9.90 on 2007-12-01. Now,
+ that the util-linux package has the union of the Suse and Fedora
+ patches as well as enough support to build on the Hurd, we no longer
+ have any reason to include it here.
+
+** Improvements
+
+ sort avoids redundant processing in the presence of inaccessible inputs,
+ or unwritable output. Sort now diagnoses certain errors at start-up,
+ rather than after potentially expensive processing.
+
+ sort now allocates no more than 75% of physical memory by default,
+ to better share system resources, and thus operate more efficiently.
+ [The default max memory usage changed from 50% to 100% in coreutils-8.16]
+
+
+* Noteworthy changes in release 8.17 (2012-05-10) [stable]
+
+** Bug fixes
+
+ id and groups, when invoked with no user name argument, would print
+ the default group ID listed in the password database, and sometimes
+ that ID would be neither real nor effective. For example, when run
+ set-GID, or in a session for which the default group has just been
+ changed, the new group ID would be listed, even though it is not
+ yet effective. [bug introduced in coreutils-8.1]
+
+ cp S D is no longer subject to a race: if an existing D were removed
+ between the initial stat and subsequent open-without-O_CREATE, cp would
+ fail with a confusing diagnostic saying that the destination, D, was not
+ found. Now, in this unusual case, it retries the open (but with O_CREATE),
+ and hence usually succeeds. With NFS attribute caching, the condition
+ was particularly easy to trigger, since there, the removal of D could
+ precede the initial stat. [This bug was present in "the beginning".]
+
+ split --number=C /dev/null no longer appears to infloop on GNU/Hurd
+ [bug introduced in coreutils-8.8]
+
+ stat no longer reports a negative file size as a huge positive number.
+ [bug present since 'stat' was introduced in fileutils-4.1.9]
+
+** New features
+
+ split and truncate now allow any seekable files in situations where
+ the file size is needed, instead of insisting on regular files.
+
+ fmt now accepts the --goal=WIDTH (-g) option.
+
+ stat -f recognizes new file system types: bdevfs, inodefs, qnx6
+
+** Changes in behavior
+
+ cp,mv,install,cat,split: now read and write a minimum of 64KiB at a time.
+ This was previously 32KiB and increasing to 64KiB was seen to increase
+ throughput by about 10% when reading cached files on 64 bit GNU/Linux.
+
+ cp --attributes-only no longer truncates any existing destination file,
+ allowing for more general copying of attributes from one file to another.
+
+
+* Noteworthy changes in release 8.16 (2012-03-26) [stable]
+
+** New features
+
+ As a GNU extension, 'chmod', 'mkdir', and 'install' now accept operators
+ '-', '+', '=' followed by octal modes; for example, 'chmod +40 FOO' enables
+ and 'chmod -40 FOO' disables FOO's group-read permissions. Operator
+ numeric modes can be combined with symbolic modes by separating them with
+ commas; for example, =0,u+r clears all permissions except for enabling
+ user-read permissions. Unlike ordinary numeric modes, operator numeric
+ modes do not preserve directory setuid and setgid bits; for example,
+ 'chmod =0 FOO' clears all of FOO's permissions, including setuid and setgid.
+
+ Also, ordinary numeric modes with five or more digits no longer preserve
+ setuid and setgid bits, so that 'chmod 00755 FOO' now clears FOO's setuid
+ and setgid bits. This allows scripts to be portable to other systems which
+ lack the GNU extension mentioned previously, and where ordinary numeric
+ modes do not preserve directory setuid and setgid bits.
+
+ dd now accepts the count_bytes, skip_bytes iflags and the seek_bytes
+ oflag, to more easily allow processing portions of a file.
+
+ dd now accepts the conv=sparse flag to attempt to create sparse
+ output, by seeking rather than writing to the output file.
+
+ ln now accepts the --relative option, to generate a relative
+ symbolic link to a target, irrespective of how the target is specified.
+
+ split now accepts an optional "from" argument to --numeric-suffixes,
+ which changes the start number from the default of 0.
+
+ split now accepts the --additional-suffix option, to append an
+ additional static suffix to output file names.
+
+ basename now supports the -a and -s options, which allow processing
+ of more than one argument at a time. Also the complementary
+ -z option was added to delimit output items with the NUL character.
+
+ dirname now supports more than one argument. Also the complementary
+ -z option was added to delimit output items with the NUL character.
+
+** Bug fixes
+
+ du --one-file-system (-x) would ignore any non-directory specified on
+ the command line. For example, "touch f; du -x f" would print nothing.
+ [bug introduced in coreutils-8.15]
+
mv now lets you move a symlink onto a same-inode destination file that
has two or more hard links. Before, it would reject that, saying that
they are the same, implicitly warning you that the move would result in
surprising rename no-op behavior). Now, mv handles this case by skipping
the usually-useless rename and simply unlinking A.
+ realpath no longer mishandles a root directory. This was most
+ noticeable on platforms where // is a different directory than /,
+ but could also be observed with --relative-base=/ or
+ --relative-to=/. [bug since the beginning, in 8.15]
+
+** Improvements
+
+ ls can be much more efficient, especially with large directories on file
+ systems for which getfilecon-, ACL-check- and XATTR-check-induced syscalls
+ fail with ENOTSUP or similar.
+
+ 'realpath --relative-base=dir' in isolation now implies '--relative-to=dir'
+ instead of causing a usage failure.
+
+ split now supports an unlimited number of split files as default behavior.
+
* Noteworthy changes in release 8.15 (2012-01-06) [stable]
join --header now skips the ordering check for the first line
even if the other file is empty. [bug introduced in coreutils-8.5]
+ join -v2 now ensures the default output format prints the match field
+ at the start of the line when it is different to the match field for
+ the first file. [bug present in "the beginning".]
+
rm -f no longer fails for EINVAL or EILSEQ on file systems that
reject file names invalid for that file system.
On Solaris 9, many commands would mistakenly treat file/ the same as
file. Now, even on such a system, path resolution obeys the POSIX
- rules that a trailing slash ensures that the preceeding name is a
+ rules that a trailing slash ensures that the preceding name is a
directory or a symlink to a directory.
** Changes in behavior
** Changes in behavior
shred, sort, shuf: now use an internal pseudorandom generator by default.
- This is mainly noticable in shred where the 3 random passes it does by
+ This is mainly noticeable in shred where the 3 random passes it does by
default should proceed at the speed of the disk. Previously /dev/urandom
was used if available, which is relatively slow on GNU/Linux systems.
* Any time style can be preceded by "posix-"; this causes "ls" to
use traditional timestamp format when in the POSIX locale.
* The default time style is now posix-long-iso instead of posix-iso.
- Set TIME_STYLE="posix-iso" to revert to the behavior of 4.1.1 thru 4.1.9.
+ Set TIME_STYLE="posix-iso" to revert to the behavior of 4.1.1 through 4.1.9.
* 'rm dangling-symlink' doesn't prompt [introduced in 4.1.9]
* stat: remove support for --secure/-s option and related %S and %C format specs
* stat: rename --link/-l to --dereference/-L.