Updated [experimental]: coreutils-8.23-1

Eric Blake (cygwin) ebb9@byu.net
Sat Aug 2 19:31:00 GMT 2014


A new release of coreutils, 8.23-1, is available for download for
testing purposes, leaving 8.15-1 (32-bit) or 8.15-3 (64-bit) as current
for another week until I am sure there are no major regressions.

NEWS:
=====
This is a new upstream release, with upstream details listed below.  It
is also my first time building coreutils for 64-bit cygwin in the
capacity as maintainer (thanks to others that helped in the initial
transition to 64-bit).

Of note, there is no longer an 'su' program in coreutils; this is an
upstream decision (many Linux distros are getting su from other
packages, and even though cygwin's su had come from coreutils, it was
heavily patched and doesn't work as smoothly as on Linux).  I'm debating
whether it is worth trying to capture the last release of coreutils' su,
as patched to work on cygwin, for distribution as an independent
package; if anyone was relying on that program, now is your chance to
speak up.

In building this version of coreutils, the testsuite complained about
ACL detection on directories not working as expected; if you notice 'ls
-l' output looking strange on a directory when compared to 8.15, please
report the details, so I can investigate if this is a regression or
something I need to patch.

If you encounter a regression, please report it here rather than
upstream.  See also the upstream documentation in /usr/share/doc/coreutils/.

Help in porting the stdbuf utility to cygwin would be appreciated.

Yes, I'm aware that it has been more than 2 years since I last built
coreutils, and that there has been some question on the mailing list of
whether I'm being responsive enough as a maintainer.  I apologize for
the delays in getting this release made, but I'd still like to hang on
to this package a bit longer, particularly since I'm most familiar with
the set of cygwin-only downstream patches needed to make the package
play nicely with the Cygwin environment.

DESCRIPTION:
============
GNU coreutils provides a collection of commonly used utilities essential
to a standard POSIX environment.  It comprises the former textutils,
sh-utils, and fileutils packages.  The following executables are included:

[ arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
csplit cut date dd df dir dircolors dirname du echo env expand expr
factor false fmt fold gkill groups head hostid hostname id install join
link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup
nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink
realpath rm rmdir runcon seq sha1sum sha224sum sha256sum sha384sum
sha512sum shred shuf sleep sort split stat stty sum sync tac tail tee
test timeout touch tr true truncate tsort tty uname unexpand uniq unlink
users vdir wc who whoami yes

UPDATE:
=======
To update your installation, click on the "Install Cygwin now" link on
the http://cygwin.com/ web page. This downloads setup.exe to your
system. Save it and run setup, answer the questions and pick up
'coreutils' from the 'Base' category.

DOWNLOAD:
=========
Note that downloads from cygwin.com aren't allowed due to bandwidth
limitations.  This means that you will need to find a mirror which has
this update, please choose the one nearest to you:
http://cygwin.com/mirrors.html

QUESTIONS:
==========
If you want to make a point or ask a question the Cygwin mailing list is
the appropriate place.

-- 
Eric Blake
volunteer cygwin coreutils package maintainer

CYGWIN-ANNOUNCE UNSUBSCRIBE INFO:
=================================
To unsubscribe to the cygwin-announce mailing list, look at the
"List-Unsubscribe: " tag in the email header of this message.  Send
email to the address specified there.  It will be in the format:

cygwin-announce-unsubscribe-YOU=YOURDOMAIN.COM@cygwin.com

If you need more information on unsubscribing, start reading here:

http://sourceware.org/lists.html#unsubscribe-simple

Please read *all* of the information on unsubscribing that is available
starting at this URL.

-------------- next part --------------
* Noteworthy changes in release 8.23 (2014-07-18) [stable]

** Bug fixes

  chmod -Rc no longer issues erroneous warnings for files with special bits set.
  [bug introduced in coreutils-6.0]

  cp -a, mv, and install --preserve-context, once again set the correct SELinux
  context for existing directories in the destination.  Previously they set
  the context of an existing directory to that of its last copied descendent.
  [bug introduced in coreutils-8.22]

  cp -a, mv, and install --preserve-context, no longer seg fault when running
  with SELinux enabled, when copying from file systems that return an error
  when reading the SELinux context for a file.
  [bug introduced in coreutils-8.22]

  cp -a and mv now preserve xattrs of symlinks copied across file systems.
  [bug introduced with extended attribute preservation feature in coreutils-7.1]

  date could crash or go into an infinite loop when parsing a malformed TZ="".
  [bug introduced with the --date='TZ="" ..' parsing feature in coreutils-5.3.0]

  dd's ASCII and EBCDIC conversions were incompatible with common practice and
  with POSIX, and have been corrected as follows.  First, conv=ascii now
  implies conv=unblock, and conv=ebcdic and conv=ibm now imply conv=block.
  Second, the translation tables for dd conv=ascii and conv=ebcdic have been
  corrected as shown in the following table, where A is the ASCII value, W is
  the old, wrong EBCDIC value, and E is the new, corrected EBCDIC value; all
  values are in octal.

      A   W   E
     041 117 132
     133 112 255
     135 132 275
     136 137 232
     174 152 117
     176 241 137
     313 232 152
     325 255 112
     345 275 241

  [These dd bugs were present in "the beginning".]

  df has more fixes related to the newer dynamic representation of file systems:
  Duplicates are elided for virtual file systems like tmpfs.
  Details for the correct device are output for points mounted multiple times.
  Placeholder values are output for inaccessible file systems, rather than
  than error messages or values for the wrong file system.
  [These bugs were present in "the beginning".]

  df now outputs all appropriate entries in the presence of bind mounts.
  On some systems, entries would have been incorrectly elided due to
  them being considered "dummy" mounts.
  [bug introduced in coreutils-8.22]

  du now silently ignores directory cycles introduced with bind mounts.
  Previously it would issue a warning and exit with a failure status.
  [bug introduced in coreutils-8.1]

  head --bytes=-N and --lines=-N now handles devices more
  consistently, not ignoring data from virtual devices like /dev/zero,
  or on BSD systems data from tty devices.
  [bug introduced in coreutils-5.0.1]

  head --bytes=-N - no longer fails with a bogus diagnostic when stdin's
  seek pointer is not at the beginning.
  [bug introduced with the --bytes=-N feature in coreutils-5.0.1]

  head --lines=-0, when the input does not contain a trailing '\n',
  now copies all input to stdout.  Previously nothing was output in this case.
  [bug introduced with the --lines=-N feature in coreutils-5.0.1]

  id, when invoked with no user name argument, now prints the correct group ID.
  Previously, in the default output format, it would print the default group ID
  in the password database, which may be neither real nor effective.  For e.g.,
  when run set-GID, or when the database changes outside the current session.
  [bug introduced in coreutils-8.1]

  ln -sf now replaces symbolic links whose targets can't exist.  Previously
  it would display an error, requiring --no-dereference to avoid the issue.
  [bug introduced in coreutils-5.3.0]

  ln -sr '' F no longer segfaults.  Now works as expected.
  [bug introduced with the --relative feature in coreutils-8.16]

  numfmt now handles blanks correctly in all unibyte locales.  Previously
  in locales where character 0xA0 is a blank, numfmt would mishandle it.
  [bug introduced when numfmt was added in coreutils-8.21]

  ptx --format long option parsing no longer falls through into the --help case.
  [bug introduced in TEXTUTILS-1_22i]

  ptx now consistently trims whitespace when processing multiple files.
  [This bug was present in "the beginning".]

  seq again generates correct output with start or end values = -0.
  [bug introduced in coreutils-8.20.]

  shuf --repeat no longer dumps core if the input is empty.
  [bug introduced with the --repeat feature in coreutils-8.22]

  sort when using multiple threads now avoids undefined behavior with mutex
  destruction, which could cause deadlocks on some implementations.
  [bug introduced in coreutils-8.6]

  tail -f now uses polling mode for VXFS to cater for its clustered mode.
  [bug introduced with inotify support added in coreutils-7.5]

** New features

  od accepts a new option: --endian=TYPE to handle inputs with different byte
  orders, or to provide consistent output on systems with disparate endianness.

  configure accepts the new option --enable-single-binary to build all the
  selected programs in a single binary called "coreutils".  The selected
  programs can still be called directly using symlinks to "coreutils" or
  shebangs with the option --coreutils-prog= passed to this program.  The
  install behavior is determined by the option --enable-single-binary=symlinks
  or --enable-single-binary=shebangs (the default).  With the symlinks option,
  you can't make a second symlink to any program because that will change the
  name of the called program, which is used by coreutils to determine the
  desired program.  The shebangs option doesn't suffer from this problem, but
  the /proc/$pid/cmdline file might not be updated on all the platforms.  The
  functionality of each program is not affected but this single binary will
  depend on all the required dynamic libraries even to run simple programs.
  If you desire to build some tools outside the single binary file, you can
  pass the option --enable-single-binary-exceptions=PROG_LIST with the comma
  separated list of programs you want to build separately.  This flag
  considerably reduces the overall size of the installed binaries which makes
  it suitable for embedded system.

** Changes in behavior

  chroot with an argument of "/" no longer implicitly changes the current
  directory to "/", allowing changing only user credentials for a command.

  chroot --userspec will now unset supplemental groups associated with root,
  and instead use the supplemental groups of the specified user.

  cut -d$'\n' again outputs lines identified in the --fields list, having
  not done so in v8.21 and v8.22.  Note using this non portable functionality
  will result in the delayed output of lines.

  ls with none of LS_COLORS or COLORTERM environment variables set,
  will now honor an empty or unknown TERM environment variable,
  and not output colors even with --colors=always.

** Improvements

  chroot has better --userspec and --group look-ups, with numeric IDs never
  causing name look-up errors.  Also look-ups are first done outside the chroot,
  in case the look-up within the chroot fails due to library conflicts etc.

  install now allows the combination of the -D and -t options.

  numfmt supports zero padding of numbers using the standard printf
  syntax of a leading zero, for example --format="%010f".
  Also throughput was improved by up to 800% by avoiding redundant processing.

  shred now supports multiple passes on GNU/Linux tape devices by rewinding
  the tape before each pass, avoids redundant writes to empty files,
  uses direct I/O for all passes where possible, and attempts to clear
  inode storage used for small files on some file systems.

  split avoids unnecessary input buffering, immediately writing input to output
  which is significant with --filter or when writing to fifos or stdout etc.

  stat and tail work better with HFS+, HFSX, LogFS and ConfigFS.  stat -f
  --format=%T now reports the file system type, and tail -f now uses inotify,
  rather than the default of issuing a warning and reverting to polling.


* Noteworthy changes in release 8.22 (2013-12-13) [stable]

** Bug fixes

  df now processes the mount list correctly in the presence of unstatable
  mount points.  Previously it may have failed to output some mount points.
  [bug introduced in coreutils-8.21]

  df now processes symbolic links and relative paths to special files containing
  a mounted file system correctly.  Previously df displayed the statistics about
  the file system the file is stored on rather than the one inside.
  [This bug was present in "the beginning".]

  df now processes disk device nodes correctly in the presence of bind mounts.
  Now df shows the base mounted file system rather than the last one mounted.
  [This bug was present in "the beginning".]

  install now removes the target file if the strip program failed for any
  reason.  Before, that file was left behind, sometimes even with wrong
  permissions.
  [This bug was present in "the beginning".]

  ln --relative now updates existing symlinks correctly.  Previously it based
  the relative link on the dereferenced path of an existing link.
  [This bug was introduced when --relative was added in coreutils-8.16.]

  ls --recursive will no longer exit with "serious" exit code (2), if there
  is an error reading a directory not specified on the command line.
  [Bug introduced in coreutils-5.3.0]

  mkdir, mkfifo, and mknod now work better when creating a file in a directory
  with a default ACL whose umask disagrees with the process's umask, on a
  system such as GNU/Linux where directory ACL umasks override process umasks.
  [bug introduced in coreutils-6.0]

  mv will now replace empty directories in the destination with directories
  from the source, when copying across file systems.
  [This bug was present in "the beginning".]

  od -wN with N larger than 64K on a system with 32-bit size_t would
  print approximately 2*N bytes of extraneous padding.
  [Bug introduced in coreutils-7.0]

  rm -I now prompts for confirmation before removing a write protected file.
  [Bug introduced in coreutils-6.8]

  shred once again uses direct I/O on systems requiring aligned buffers.
  Also direct I/O failures for odd sized writes at end of file are now handled.
  [The "last write" bug was introduced in coreutils-5.3.0 but masked
   by the alignment bug introduced in coreutils-6.0]

  tail --retry -f now waits for the files specified to appear.  Before, tail
  would immediately exit when such a file is initially inaccessible.
  [This bug was introduced when inotify support was added in coreutils-7.5]

  tail -F has improved handling of symlinks.  Previously tail didn't respond
  to the symlink target (re)appearing after being (re)created.
  [This bug was introduced when inotify support was added in coreutils-7.5]

** New features

  cp, install, mkdir, mknod, mkfifo and mv now support "restorecon"
  functionality through the -Z option, to set the SELinux context
  appropriate for the new item location in the file system.

  csplit accepts a new option: --suppressed-matched, to elide the lines
  used to identify the split points.

  df --output now accepts a 'file' field, to propagate a specified
  command line argument through to the output.

  du accepts a new option: --inodes to show the number of inodes instead
  of the blocks used.

  id accepts a new option: --zero (-z) to delimit the output entries by
  a NUL instead of a white space character.

  id and ls with -Z report the SMACK security context where available.
  mkdir, mkfifo and mknod with --context set the SMACK context where available.

  id can now lookup by user ID, in addition to the existing name lookup.

  join accepts a new option: --zero-terminated (-z). As with the sort,uniq
  option of the same name, this makes join consume and produce NUL-terminated
  lines rather than newline-terminated lines.

  uniq accepts a new option: --group to print all items, while separating
  unique groups with empty lines.

  shred accepts new parameters to the --remove option to give greater
  control over that operation, which can greatly reduce sync overhead.

  shuf accepts a new option: --repeat (-r), which can repeat items in
  the output.

** Changes in behavior

  cp --link now dereferences a symbolic link as source before creating the
  hard link in the destination unless the -P,--no-deref option is specified.
  Previously, it would create a hard link of the symbolic link, even when
  the dereferencing options -L or -H were specified.

  cp, install, mkdir, mknod and mkfifo no longer accept an argument to the
  short -Z option.  The --context equivalent still takes an optional argument.

  dd status=none now suppresses all non fatal diagnostic messages,
  not just the transfer counts.

  df no longer accepts the long-obsolescent --megabytes option.

  stdbuf now requires at least one buffering mode option to be specified,
  as per the documented interface.

** Improvements

  base64 encoding throughput for bulk data is increased by about 60%.

  md5sum can use libcrypto hash routines where allowed to potentially
  get better performance through using more system specific logic.
  sha1sum for example has improved throughput by 40% on an i3-2310M.
  This also affects sha1sum, sha224sum, sha256sum, sha384sum and sha512sum.

  stat and tail work better with EFIVARFS, EXOFS, F2FS, HOSTFS, SMACKFS, SNFS
  and UBIFS.  stat -f --format=%T now reports the file system type, and tail -f
  now uses inotify for files on all those except SNFS, rather than the default
  (for unknown file system types) of issuing a warning and reverting to polling.

  shuf outputs subsets of large inputs much more efficiently.
  Reservoir sampling is used to limit memory usage based on the number of
  outputs, rather than the number of inputs.

  shred increases the default write block size from 12KiB to 64KiB
  to align with other utilities and reduce the system call overhead.

  split --line-bytes=SIZE, now only allocates memory as needed rather
  than allocating SIZE bytes at program start.

  stty now supports configuring "stick" (mark/space) parity where available.

** Build-related

  factor now builds on aarch64 based systems [bug introduced in coreutils-8.20]


* Noteworthy changes in release 8.21 (2013-02-14) [stable]

** New programs

  numfmt: reformat numbers

** 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.

  du now accepts the --threshold=SIZE option to restrict the output to entries
  with such a minimum SIZE (or a maximum SIZE if it is negative).
  du recognizes -t SIZE as equivalent, for compatibility with FreeBSD.

  timeout now accepts the --preserve-status option to always propagate the exit
  status, useful for commands that can run for an indeterminite amount of time.

** 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]

  cut -f no longer inspects input line N+1 before fully outputting line N,
  which avoids delayed output for intermittent input.
  [bug introduced in TEXTUTILS-1_8b]

  factor no longer loops infinitely on 32 bit powerpc or sparc 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".]

  seq -w ensures correct alignment when the step value includes a precision
  while the start value does not, and the number sequence narrows.
  [This bug was present in "the beginning".]

  seq -s no longer prints an erroneous newline after the first number, and
  outputs a newline after the last number rather than a trailing separator.
  Also seq no longer ignores a specified step value when the end value is 1.
  [bugs introduced in coreutils-8.20]

  timeout now ensures that blocking of ALRM signals is not inherited from
  its parent, which would cause timeouts to be ignored.
  [the bug dates back to the initial implementation]

** Changes in behavior

  df --total now prints '-' into the target column (mount point) of the
  summary line, accommodating the --output option where the target field
  can be in any column.  If there is no source column, then df prints
  'total' in 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).
  Consequently, df also elides the early-boot pseudo file system type "rootfs".

  cut -d$'\n' no longer outputs lines identified in the --fields list,
  to align with other implementations and to avoid delayed output of lines.

  nl no longer supports the --page-increment option, which has been
  deprecated since coreutils-7.5.  Use --line-increment instead.

** Improvements

  readlink now supports multiple arguments, and a complementary
  -z, --zero option to delimit output items with the NUL character.

  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.

  stty now supports configuring DTR/DSR hardware flow control where available.

** 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.

  factor now builds on x86_64 with x32 ABI, 32 bit MIPS, and all HPPA systems,
  by avoiding incompatible asm.  [bug introduced in coreutils-8.20]

  A root-only test predicate would always fail.  Its job was to determine
  whether our dummy user, $NON_ROOT_USERNAME, was able to run binaries from
  the build directory.  As a result, all dependent tests were always skipped.
  Now, those tests may be run once again.  [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
  data loss.  In this unusual case, when not moving the symlink onto its
  referent, there is no risk of data loss, since the symlink will
  typically still point to one of the hard links.

  "mv A B" could succeed, yet A would remain.  This would happen only when
  both A and B were hard links to the same symlink, and with a kernel for
  which rename("A","B") does nothing and returns 0 (POSIX mandates this
  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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 539 bytes
Desc: OpenPGP digital signature
URL: <http://cygwin.com/pipermail/cygwin-announce/attachments/20140802/d374e685/attachment.sig>


More information about the Cygwin-announce mailing list