[Top][All Lists]

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

coreutils-6.9.90 released

From: Jim Meyering
Subject: coreutils-6.9.90 released
Date: Sun, 02 Dec 2007 11:24:16 +0100

Coreutils version 6.9.90 has been released.
This is a feature release, but it includes a surprising number
of fixes for very old bugs.

If you haven't heard about the GNU coreutils, the FAQ is a good
place to start: <>.

It's been more than 8 months and almost 450 change-sets since the
previous release, which was the stable coreutils-6.9, on 2007-03-22.
Like coreutils-6.8, I consider this a not-unstable release.  I can't in
good conscience call it stable, because there have been so many changes
and not enough exposure, yet I have a lot of confidence that the programs
are consistently improved over the ones in coreutils-6.9.

Thanks to everyone who has contributed to this release.  Here's the list
of 'commit author' names and commit counts, excluding mine.  If you sent
in a complete patch since 6.9, and I applied it with few or no changes,
then your name should be here:

     28 Paul Eggert
     10 Eric Blake
      5 Bob Proulx
      4 Pádraig Brady
      3 Ralf Wildenhues
      3 Lasse Collin
      2 Karel Zak
      2 James Youngman
      2 Benno Schulenberg
      2 Andreas Schwab
      1 Micah Cowan
      1 Karl Berry

For other attribution (ideas, bug reports), see the ChangeLog.
However, the above doesn't include any of the changes in Gnulib.
See these for a good summary of the activity in gnulib and coreutils:

Here are the compressed sources:   (8.6MB) (3.6MB)

Here are the GPG detached signatures[*]:

If you haven't heard about LZMA yet, see <>.
Since the lzma-compressed tarball is 2GB smaller than the .bz2 one,
and since it decompresses twice as fast, I no longer create bzip2-
compressed tarballs.

[*] You can use either of the above signature files 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-6.9.90.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 D333CBA1

and rerun the `gpg --verify' command.

Note that while this is the same key I used to sign coreutils-6.9
tarballs, it is not the key with which I've been signing snapshots.
I've had to use this older (and shorter) key in order to upload to without sysadmin intervention.

This release was bootstrapped with the following tools:
  Autoconf 2.61a.312-b524b
  Automake 1.10a
  Bison 2.3a
  Gnulib sources from git:// with this SHA1:

How can you help?
If you're interested in lending a hand, or just want to use
the latest versions right now, you can build these programs
and run the test suite like this:

   gzip -dc coreutils-6.9.90.tar.gz | tar xf -
   cd coreutils-6.9.90
   make -k check >& log
   grep FAIL log

Be sure to use make's -k option so that make doesn't stop
just because one of the earlier tests fails.
Please report any build problems or test failures to the
address@hidden mailing list.
There are detailed instructions in the `Reporting bugs:' section
of the README file.

For further reading, see the coreutils home page
and the FAQ list:

* Noteworthy changes in release 6.9.90 (2007-12-01) [beta]

** New programs

  arch: equivalent to uname -m, not installed by default
  But don't install this program on Solaris systems.

  chcon: change the SELinux security context of a file

  mktemp: create a temporary file or directory (or names)

  runcon: run a program in a different SELinux security context

** Programs no longer installed by default

  hostname, su

** Changes in behavior

  cp, by default, refuses to copy through a dangling destination symlink
  Set POSIXLY_CORRECT if you require the old, risk-prone behavior.

  pr -F no longer suppresses the footer or the first two blank lines in
  the header.  This is for compatibility with BSD and POSIX.

  tr now warns about an unescaped backslash at end of string.
  The tr from coreutils-5.2.1 and earlier would fail for such usage,
  and Solaris' tr ignores that final byte.

** New features

  Add SELinux support, based on the patch from Fedora:
  * cp accepts new --preserve=context option.
  * "cp -a" works with SELinux:
  Now, cp -a attempts to preserve context, but failure to do so does
  not change cp's exit status.  However "cp --preserve=context" is
  similar, but failure *does* cause cp to exit with nonzero status.
  * install accepts new "-Z, --context=C" option.
  * id accepts new "-Z" option.
  * stat honors the new %C format directive: SELinux security context string
  * ls accepts a slightly modified -Z option.
  * ls: contrary to Fedora version, does not accept --lcontext and --scontext

  cp -p tries to preserve the GID of a file even if preserving the UID
  is not possible.

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

  wc no longer warns about character decoding errors in multibyte locales.
  This means for example that "wc /bin/sh" now produces normal output
  (though the word count will have no real meaning) rather than many
  error messages.

** New build options

  By default, "make install" no longer attempts to install (or even build) su.
  To change that, use ./configure --enable-install-program=su.
  If you also want to install the new "arch" program, do this:
  ./configure --enable-install-program=arch,su.

  You can inhibit the compilation and installation of selected programs
  at configure time.  For example, to avoid installing "hostname" and
  "uptime", use ./configure --enable-no-install-program=hostname,uptime
  Note: currently, "make check" passes, even when arch and su are not
  built (that's the new default).  However, if you inhibit the building
  and installation of other programs, don't be surprised if some parts
  of "make check" fail.

** Remove deprecated options

  df no longer accepts the --kilobytes option.
  du no longer accepts the --kilobytes or --megabytes options.
  ls no longer accepts the --kilobytes option.
  ptx longer accepts the --copyright option.
  who no longer accepts -i or --idle.

** Improved robustness

  ln -f can no longer silently clobber a just-created hard link.
  In some cases, ln could be seen as being responsible for data loss.
  For example, given directories a, b, c, and files a/f and b/f, we
  should be able to do this safely: ln -f a/f b/f c && rm -f a/f b/f
  However, before this change, ln would succeed, and thus cause the
  loss of the contents of a/f.

  stty no longer silently accepts certain invalid hex values
  in its 35-colon commmand-line argument

** Bug fixes

  chmod no longer ignores a dangling symlink.  Now, chmod fails
  with a diagnostic saying that it cannot operate on such a file.
  [bug introduced in coreutils-5.1.0]

  cp attempts to read a regular file, even if stat says it is empty.
  Before, "cp /proc/cpuinfo c" would create an empty file when the kernel
  reports stat.st_size == 0, while "cat /proc/cpuinfo > c" would "work",
  and create a nonempty one. [bug introduced in coreutils-6.0]

  cp --parents no longer mishandles symlinks to directories in file
  name components in the source, e.g., "cp --parents symlink/a/b d"
  no longer fails.  Also, 'cp' no longer considers a destination
  symlink to be the same as the referenced file when copying links
  or making backups.  For example, if SYM is a symlink to FILE,
  "cp -l FILE SYM" now reports an error instead of silently doing
  nothing.  The behavior of 'cp' is now better documented when the
  destination is a symlink.

  "cp -i --update older newer" no longer prompts; same for mv

  "cp -i" now detects read errors on standard input, and no longer consumes
  too much seekable input; same for ln, install, mv, and rm.

  cut now diagnoses a range starting with zero (e.g., -f 0-2) as invalid;
  before, it would treat it as if it started with 1 (-f 1-2).

  "cut -f 2-0" now fails; before, it was equivalent to "cut -f 2-"

  cut now diagnoses the '-' in "cut -f -" as an invalid range, rather
  than interpreting it as the unlimited range, "1-".

  date -d now accepts strings of the form e.g., 'YYYYMMDD +N days',
  in addition to the usual 'YYYYMMDD N days'.

  du -s now includes the size of any stat'able-but-inaccessible directory
  in the total size.

  du (without -s) prints whatever it knows of the size of an inaccessible
  directory.  Before, du would print nothing for such a directory.

  ls -x DIR would sometimes output the wrong string in place of the
  first entry.  [introduced in coreutils-6.8]

  ls --color would mistakenly color a dangling symlink as if it were
  a regular symlink.  This would happen only when the dangling symlink
  was not a command-line argument and in a directory with d_type support.
  [introduced in coreutils-6.0]

  ls --color, (with a custom LS_COLORS envvar value including the
  ln=target attribute) would mistakenly output the string "target"
  before the name of each symlink.  [introduced in coreutils-6.0]

  od's --skip (-j) option now works even when the kernel says that a
  nonempty regular file has stat.st_size = 0.  This happens at least
  with files in /proc and linux-2.6.22.

  "od -j L FILE" had a bug: when the number of bytes to skip, L, is exactly
  the same as the length of FILE, od would skip *no* bytes.  When the number
  of bytes to skip is exactly the sum of the lengths of the first N files,
  od would skip only the first N-1 files. [introduced in textutils-2.0.9]

  ./printf %.10000000f 1 could get an internal ENOMEM error and generate
  no output, yet erroneously exit with status 0.  Now it diagnoses the error
  and exits with nonzero status.  [present in initial implementation]

  seq no longer mishandles obvious cases like "seq 0 0.000001 0.000003",
  so workarounds like "seq 0 0.000001 0.0000031" are no longer needed.

  seq would mistakenly reject some valid format strings containing %%,
  and would mistakenly accept some invalid ones. e.g., %g%% and %%g, resp.

  "seq .1 .1" would mistakenly generate no output on some systems

  Obsolete sort usage with an invalid ordering-option character, e.g.,
  "env _POSIX2_VERSION=199209 sort +1x" no longer makes sort free an
  invalid pointer [introduced in coreutils-6.5]

  sorting very long lines (relative to the amount of available memory)
  no longer provokes unaligned memory access

  split --line-bytes=N (-C N) no longer creates an empty file
  [this bug is present at least as far back as textutils-1.22 (Jan, 1997)]

  tr -c no longer aborts when translating with Set2 larger than the
  complement of Set1.  [present in the original version, in 1992]

  tr no longer rejects an unmatched [:lower:] or [:upper:] in SET1.
  [present in the original version]

Attachment: pgp27U5quOspI.pgp
Description: PGP signature

reply via email to

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