Wow. There have been nearly 1000 commits in *gnulib* since coreutils-8.12. With 178 in coreutils proper, that is well above average[*]. If all goes well, I'll release coreutils-8.13 early next week, so please beat this up (i.e., test) on a whatever systems you can.
A first for this snapshot, I've Cc'd the brand new platform-testers mailing list: https://lists.gnu.org/mailman/listinfo/platform-testers coreutils snapshot: (.gz files are here, too) http://meyering.net/cu/coreutils-ss.tar.xz 4.8 MB http://meyering.net/cu/coreutils-ss.tar.xz.sig http://meyering.net/cu/coreutils-8.12.178-df9cd.tar.xz There are .gz and .sig files here, too: http://people.redhat.com/meyering/cu/coreutils-ss.tar.xz http://people.redhat.com/meyering/cu/coreutils-8.12.178-df9cd.tar.xz Here's the NEWS, followed by git-shortlog output, followed by a summary of commits per release since 6.9. I've omitted the 969 lines of gnulib's shortlog output. =========================================================================== ** 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 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 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. =========================================================================== Benoît Knecht (6): doc: note date's %k, %l are space-padded and equivalent to %_H and %_I doc: note that cp -l creates _hard_ links doc: don't terminate SEE ALSO sections with a period dircolors: highlight .webm multimedia files doc: note the order in which wc counts are printed doc: describe the file permissions set by mktemp Bernhard Voelker (6): chmod: output the original mode in verbose mode tests: improve init.sh by removing w2_ tests: cp/sparse-fiemap: use "head -n99" in place of "head -99" tests: stat-free-color: do not count stat calls before main maint: fix warning 'possible use of "=" where "==" was intended' maint: remove empty statement after jump label Bruno Haible (1): doc: mention the restrictions for stdbuf more prominently Eric Blake (2): build: update to latest gnulib build: list makeinfo 4.13 as a build-from-git requirement Erik Auerswald (1): doc: correct typo in yesterday's NEWS entry: 30GB -> 30MB Ivan Sichmann Freitas (2): maint: fix comment typos in df.c doc: add a vim indentation example James Youngman (2): maint: use stat-size module from gnulib maint: typo: insert omitted word in test comment Jeff Liu (1): copy: correct misuse of quote in diagnostic Jim Meyering (89): post-release administrivia tests: write skip explanation from perl scripts also to outer stderr tests: remove useless test: misc/pwd-unreadable-parent tests: distribute new file, CuSkip.pm maint: adjust split.c formatting to conform build: avoid bootstrap failure when $GZIP is set copy: fix my typo doc: remove a name from THANKS.in that is derived from git log maint: remove unnecessary listing of update-copyright in Makefile.am maint: remove use of gnulib's obsolete strtol module build: update gnulib submodule to latest tests: test split's new --filter=CMD option doc: document split's new --filter=CMD option tests: don't fail the split --filter=CMD test if xz is not available maint: tail: mark a global variable as static maint: remove syntax-checking sc_tight_scope rule build: update gnulib submodule to latest maint: use <unistd.h>, not "group-member.h" ls: allow stat-free use of --color tests: use skip_test_, not skip_ maint: add new syntax-check rule to prohibit use of skip_ maint: avoid syntax-check failure due to long line maint: correct typos involving misuse of "a" and "an" doc: fix a formatting nit in od's texinfo documentation tests: fix typo in tac-continue doc: describe how kernel inotify support affects tail -f maint: avoid trivial syntax-check failure touch: placate static analyzers: no NULL-deref is possible doc: make README-hacking slightly more generic maint: accommodate gnulib's newer tight_scope rule tests: ls/stat-free-color: fix unwarranted failure on a 32-bit system shred: placate coverity and fix a comment maint: env.c: remove unnecessary use of strchr maint: enforce cpp indentation policy maint: accommodate gcc's -Wstrict-overflow option build: --enable-gcc-warnings: enable -Wstrict-overflow in src/ tests: move tests/misc/split-* into tests/split/... maint: remove useless (off_t) cast of lseek arg ls: placate gcc-4.7.0's -Wstrict-overflow maint: placate -Wsign-compare when it's non-invasive maint: remove unnecessary gnulib .diff file tail: fix an inconsequential bug spotted by coverity tests: stat-free-color: accommodate stat of /selinux on rawhide maint: remove now-spurious curly braces build: require at least 2-year old autoconf-2.64 (was 2.62) tests: inotify-rotate: avoid false positive under heavy load tests: avoid sort-spinlock-abuse false positive under heavy load doc: add NEWS items for recent gnulib fixes init.sh: accommodate shells for which 1>&$stderr_fileno_ fails maint: revert previous commit init.sh: sync from gnulib tests: accommodate HP-UX and ksh-derived shells tests: use printf, not echo in init.sh's warn_ function tests: make init.sh's warn_ emit to both the tty and the log file tests: remove skip_test_ function; use new skip_ instead tests: avoid sort-spinlock-abuse false positive under heavy load maint: use modules/tempname.diff file, not a replacement; update gnulib tests: sort-debug-keys: fix a bug with translated diagnostics stdbuf: fix automake variable name to work with cutting edge automake maint: update THANKS.in tests: init.sh: use "sed 1q" in place of "head -1" build: bootstrap: remove obsolete gettext-related file exclusions maint: don't use gnulib's pathmax module; define PATH_MAX if needed doc: clarify an improvement from coreutils-7.0 doc: improve ls --help grammar buffer_lcm: declare with _GL_ATTRIBUTE_CONST maint: use "const" and "pure" function attributes where possible stat: recognize GPFS as a file system type tests: exercise md5sum's new --strict option maint: add syntax-check rule to prohibit "."-terminated "SEE ALSO" build: update gnulib submodule to latest df: support partitions larger than 4 TiB on MacOS >= 10.5 & AIX >=5.2 build: update gnulib to fix a build warning/error in a test program cp -up: preserve all hard links maint: use consistent style in C and test scripts doc: mention cp's dir-permissions fix build: update gnulib, for "make syntax-check" fix build: require gnulib's fclose module maint: accommodate old-NEWS update maint: prevent accidental future use of the old shell function name maint: add copyright notice to init.cfg maint: use xcalloc rather than xmalloc+memset (no semantic change) join: with --check-order print offending file name, line number and data tests: avoid lack-of-support du test failure on HP-UX 11.31 maint: use gnulib's new largefile modulue rm, du, chmod, chown, chgrp: use much less memory for large directories tests: adjust the new, very expensive rm test to be less expensive maint: rename a test date: support parsing of ISO-8601-with-"T" dates Karl Berry (1): maint: README-hacking clarifications Karl Heuer (1): split: accept new output --filter=CMD option Marek Polacek (1): yes.c: do not use exit after error Mike Frysinger (1): dircolors: add screen.Eterm terminal type Patrick Schoenfeld (1): md5sum, sha1sum, etc: accept new option: --strict Paul Eggert (18): * doc/coreutils.texi (sort invocation): I/0 -> I/O (sr#107504) * src/fiemap.h (struct fiemap.fm_extents): Change size to 1. * src/dd.c: Remove obsolete comments re POSIX. csplit: don't prematurely terminate cleanup (Bug#9076) dd: port to NonStop (Bug#9076) ls: port to NonStop (Bug#9076) timeout: port to NonStop (Bug#9077) * src/timeout.c (main): Use waitpid, not wait (Bug#9098). Fix capiTalization in comments. timeout: treat seconds counts like 'sleep' does timeout: add regression test (Bug#9098) * NEWS: Mention fix for Bug#9098. dd, shred: use fdatasync only if declared cp: don't mishandle existing dir dest permissions (Bug#9170) * NEWS: Say that 6.12 preserved ns-resolution timestamps. mktemp: stir in enough entropy (Bug#6683) bootstrap: use latest gnulib bootstrap, gettext pathchk: port to hosts where mbstate_t is replaced Pádraig Brady (39): df: fix crash in mem exhaustion edge case sort: fix a contradictory --debug warning maint: remove -Wmissing-field-initializers workarounds shuf: use memory more efficiently when returning a subset tests: refactor more tests to use mkfifo_or_skip_ doc: mention that ls time ordering is newest first printf: fix an out-of-bounds memory access doc: improve tail -f vs. inotify description and advice split: fix cases where -n l/... creates extraneous files split: fix an edge case where -n l/... creates an extra file split: return success even if a --filter exits split: exit when we can no longer write to a --filter split: diagnose when --filter is used with a chunk number maint: split: remove --filter specific code from other paths maint: fix a -Wstrict-overflow build failure with gcc 4.5 chown,chgrp: output the correct ownership in -v messages chown,chgrp: output the original ownership in -v messages doc: add examples to date --help maint: remove unneeded includes tests: avoid a false failure on HPUX systems maint: remove duplicate names from THANKS maint: avoid a false positive syntax check stat: recognize MQUEUE and PSTOREFS file systems doc: detail the effect of disabling input buffering with stdbuf timeout: add --foreground to support interactive commands timeout: support cascaded timeouts timeout: handle signals more transparently doc: list all new file system types recognized by stat -f build: avoid a fiemap compile failure on some systems build: avoid a st_blksize compile failure on some systems unexpand: fix misalignment when spaces span a tabstop maint: remove a redundant call to gl_CLOCK_TIME timeout: support sub-second timeouts tests: cp/preserve-link: test all relevant paths maint: copy: refactor hard link creation doc: mention the new mirroring behavior of cp -au pr: fix so that LAST_PAGE is honored with -T timeout: revert signal propagation enhancement build: heap.c: make possible gnulib candidate c89 compatible Stefano Lattarini (5): maint: fix typo in comment in configure.ac tests: make test runner a script, not a shell function tests: avoid extra forks in the testsuite tests: remove obsolete 'error_' shell function tests: complete the renaming framework_failure -> framework_failure_ Stéphane Raimbault (1): doc: add a missing space in timeout --help ====================================== * gnulib a81348d...9926b90 (969): ...<969 lines elided>... =========================================================================== Wondering about average commits per release, I wrote this tiny script: #!/bin/sh prev= { git tag | grep '^v' | sort -V; echo HEAD; } | \ while read v; do printf $v test -z $prev && { echo; prev=$v; continue; } n=$(git rev-list $prev..$v|wc -l) printf "\t%3d\n" $n prev=$v done exit ---------------------- Here's its output for coreutils: v6.9 v6.9.89 381 v6.9.90 68 v6.9.91 15 v6.9.92 27 v6.10 12 v6.11 201 v6.12 112 v7.0 226 v7.1 195 v7.2 90 v7.3 72 v7.4 11 v7.5 135 v7.6 82 v8.0 66 v8.1 130 v8.2 39 v8.3 59 v8.4 15 v8.5 103 v8.6 200 v8.7 37 v8.8 83 v8.9 14 v8.10 81 v8.11 74 v8.12 21 HEAD 178 So, yes, "178" is above the average (for the above subset) of 97.4.
