* Noteworthy changes in release 8.14 (2011-10-12) [stable] ** Bug fixes ls --dereference no longer outputs erroneous "argetm" strings for dangling symlinks when an 'ln=target' entry is in $LS_COLORS. [bug introduced in fileutils-4.0] ls -lL symlink once again properly prints "+" when the referent has an ACL. [bug introduced in coreutils-8.13] sort -g no longer infloops for certain inputs containing NaNs [bug introduced in coreutils-8.5] ** Improvements md5sum --check now supports the -r format from the corresponding BSD tool. This also affects sha1sum, sha224sum, sha384sum and sha512sum. pwd now works also on systems without openat. On such systems, pwd would fail when run from a directory whose absolute name contained more than PATH_MAX / 3 components. The df, stat and readlink programs are also affected due to their use of the canonicalize_* functions. ** Changes in behavior timeout now only processes the first signal received from the set it is handling (SIGTERM, SIGINT, ...). This is to support systems that implicitly create threads for some timer functions (like GNU/kFreeBSD). ** Build-related "make dist" no longer builds .tar.gz files. xz is portable enough and in wide-enough use that distributing only .tar.xz files is enough. * Noteworthy changes in release 8.13 (2011-09-08) [stable] ** Bug fixes chown and chgrp with the -v --from= options, now output the correct owner. I.E. for skipped files, the original ownership is output, not the new one. [bug introduced in sh-utils-2.0g] cp -r could mistakenly change the permissions of an existing destination directory. [bug introduced in coreutils-6.8] cp -u -p would fail to preserve one hard link for each up-to-date copy of a src-hard-linked name in the destination tree. I.e., if s/a and s/b are hard-linked and dst/s/a is up to date, "cp -up s dst" would copy s/b to dst/s/b rather than simply linking dst/s/b to dst/s/a. [This bug appears to have been present in "the beginning".] fts-using tools (rm, du, chmod, chgrp, chown, chcon) no longer use memory proportional to the number of entries in each directory they process. Before, rm -rf 4-million-entry-directory would consume about 1GiB of memory. Now, it uses less than 30MB, no matter how many entries there are. [this bug was inherent in the use of fts: thus, for rm the bug was introduced in coreutils-8.0. The prior implementation of rm did not use as much memory. du, chmod, chgrp and chown started using fts in 6.0. chcon was added in coreutils-6.9.91 with fts support. ] pr -T no longer ignores a specified LAST_PAGE to stop at. [bug introduced in textutils-1.19q] printf '%d' '"' no longer accesses out-of-bounds memory in the diagnostic. [bug introduced in sh-utils-1.16] split --number l/... no longer creates extraneous files in certain cases. [bug introduced in coreutils-8.8] timeout now sends signals to commands that create their own process group. timeout is no longer confused when starting off with a child process. [bugs introduced in coreutils-7.0] unexpand -a now aligns correctly when there are spaces spanning a tabstop, followed by a tab. In that case a space was dropped, causing misalignment. We also now ensure that a space never precedes a tab. [bug introduced in coreutils-5.3.0] ** Changes in behavior chmod, chown and chgrp now output the original attributes in messages, when -v or -c specified. cp -au (where --preserve=links is implicit) may now replace newer files in the destination, to mirror hard links from the source. ** New features date now accepts ISO 8601 date-time strings with "T" as the separator. It has long parsed dates like "2004-02-29 16:21:42" with a space between the date and time strings. Now it also parses "2004-02-29T16:21:42" and fractional-second and time-zone-annotated variants like "2004-02-29T16:21:42.333-07:00" md5sum accepts the new --strict option. With --check, it makes the tool exit non-zero for any invalid input line, rather than just warning. This also affects sha1sum, sha224sum, sha384sum and sha512sum. split accepts a new --filter=CMD option. With it, split filters output through CMD. CMD may use the $FILE environment variable, which is set to the nominal output file name for each invocation of CMD. For example, to split a file into 3 approximately equal parts, which are then compressed: split -n3 --filter='xz > $FILE.xz' big Note the use of single quotes, not double quotes. That creates files named xaa.xz, xab.xz and xac.xz. timeout accepts a new --foreground option, to support commands not started directly from a shell prompt, where the command is interactive or needs to receive signals initiated from the terminal. ** Improvements cp -p now copies trivial NSFv4 ACLs on Solaris 10. Before, it would mistakenly apply a non-trivial ACL to the destination file. cp and ls now support HP-UX 11.11's ACLs, thanks to improved support in gnulib. df now supports disk partitions larger than 4 TiB on MacOS X 10.5 or newer and on AIX 5.2 or newer. join --check-order now prints "join: FILE:LINE_NUMBER: bad_line" for an unsorted input, rather than e.g., "join: file 1 is not in sorted order". shuf outputs small subsets of large permutations much more efficiently. For example `shuf -i1-$((2**32-1)) -n2` no longer exhausts memory. stat -f now recognizes the GPFS, MQUEUE and PSTOREFS file system types. timeout now supports sub-second timeouts. ** Build-related Changes inherited from gnulib address a build failure on HP-UX 11.11 when using /opt/ansic/bin/cc. Numerous portability and build improvements inherited via gnulib. * Noteworthy changes in release 8.12 (2011-04-26) [stable] ** Bug fixes tail's --follow=name option no longer implies --retry on systems with inotify support. [bug introduced in coreutils-7.5] ** Changes in behavior cp's extent-based (FIEMAP) copying code is more reliable in the face of varying and undocumented file system semantics: - it no longer treats unwritten extents specially - a FIEMAP-based extent copy always uses the FIEMAP_FLAG_SYNC flag. Before, it would incur the performance penalty of that sync only for 2.6.38 and older kernels. We thought all problems would be resolved for 2.6.39. - it now attempts a FIEMAP copy only on a file that appears sparse. Sparse files are relatively unusual, and the copying code incurs the performance penalty of the now-mandatory sync only for them. ** Portability dd once again compiles on AIX 5.1 and 5.2 * Noteworthy changes in release 8.11 (2011-04-13) [stable] ** Bug fixes cp -a --link would not create a hardlink to a symlink, instead copying the symlink and then not preserving its timestamp. [bug introduced in coreutils-8.0] cp now avoids FIEMAP issues with BTRFS before Linux 2.6.38, which could result in corrupt copies of sparse files. [bug introduced in coreutils-8.10] cut could segfault when invoked with a user-specified output delimiter and an unbounded range like "-f1234567890-". [bug introduced in coreutils-5.3.0] du would infloop when given --files0-from=DIR [bug introduced in coreutils-7.1] sort no longer spawns 7 worker threads to sort 16 lines [bug introduced in coreutils-8.6] touch built on Solaris 9 would segfault when run on Solaris 10 [bug introduced in coreutils-8.8] wc would dereference a NULL pointer upon an early out-of-memory error [bug introduced in coreutils-7.1] ** New features dd now accepts the 'nocache' flag to the iflag and oflag options, which will discard any cache associated with the files, or processed portion thereof. dd now warns that 'iflag=fullblock' should be used, in various cases where partial reads can cause issues. ** Changes in behavior cp now avoids syncing files when possible, when doing a FIEMAP copy. The sync is only needed on Linux kernels before 2.6.39. [The sync was introduced in coreutils-8.10] cp now copies empty extents efficiently, when doing a FIEMAP copy. It no longer reads the zero bytes from the input, and also can efficiently create a hole in the output file when --sparse=always is specified. df now aligns columns consistently, and no longer wraps entries with longer device identifiers, over two lines. install now rejects its long-deprecated --preserve_context option. Use --preserve-context instead. test now accepts "==" as a synonym for "="