This status update (subscribe via RSS) comes about 4 months after the last one.
Note also the bug tracker with stats which records additions, feature requests and issues.
Rejected ideas
Some of the hardest work on coreutils is knowing what to reject and providing appropriate justification to the contributors. The contributions below all came since the last update and while good ideas, they were not included for various reasons detailed on the mailing list. These are included in a full list of rejected coreutils requests.- dd iflag=seekable oflag=seekable to verify lseek(2) support. The feature was not deemed useful/complete enough
- users --all to show even non logged in users. The system interfaces aren't general enough to support this
- users -h to show help. --h{,elp} was deemed sufficient
- pr --fold to wrap lines. fold or fmt can do this before processing by pr
- BLOCK_SIZE={binary,decimal} to add 'iB' and 'B' suffixes to various "human" numbers. numfmt can fill this role
- echo -- -e to terminate options in the common way. This would violate POSIX. Use printf instead
- cut --separator to specify the "line" delimiter. Pre/Post-processing with tr was deemed sufficient
- expand --auto to auto determine tab stops. The operation would not be general enough
- csplit '@1' to split when field 1 changes. uniq --group | csplit --suppress-matched was thought to be better
- uniq --check-fields=N to only check N fields. uniq --key would be a more general solution
- cat --show-ends to highlight trailing whitespace. grep --color was deemed better/sufficient
- touch --create to only create files. `test -e file || touch file` was deemed sufficient
- ls --octal to output octal permissions. Using stat or find is deemed sufficient
- ln --absolute to force absolute symlinks. It's easy to get absolute paths with realpath or $PWD
- mv --safe to only remove source on completion. `cp ... && rm` was deemed sufficient
- mv --parents to recreate a hierarchy. Using cp -l --parents is deemed sufficient
- du --exclude-dirs to exclude directories themselves from the usage count. find .. | du was thought sufficient
- fold --prefix to add a prefix to each line. fmt and/or sed are deemed sufficient
- Provide '0' and '1' utils. These were not seen to benefit shell syntax
- rm -s to behave in a "smarter" fashion. `rm -I` or `find | xargs rm` were deemed sufficient
Additions
Note you can see the latest changes as they're added in the NEWS file (subscribe via RSS).- There have been many memory and CPU usage optimizations
- du --threshold=SIZE to match BSD and limit output to items >= SIZE
- df suppresses duplicate items. Heuristics are used to distinguish all file systems with associated storage
- numfmt was addded to reformat numbers
- uniq --group to group both unique and non unique records
- join -z to align with sort's support for NUL terminated records
- csplit --suppress-matched to exclude delimiter lines from the output files
- id -Z shows SMACK security context where available
TODO
These new items were identified since the last update.- mkdir -p should be concurrent. I.E. dirs created separately while its running shouldn't cause an error
- Possibly adjust sort merging to minimize data I/O. Also unexpectedly slow merging was reported
- Sort threading issues were reported on Solaris 10 and RHEL 5.8
- Integrate multi-byte support for expand and unexpand using libunistring and a common core for the two utils
- Possibly support tail -f --timestamp to prepend timestamps to output
- Integrate support for ISO 8601 basic format as input to date
- Possibly indicate "capabilities" with the ^ character instead of colors
- Speed up base64, md5sum and sha*sum by using with OpenSSL's libcrypto implementations where available
- Integrate {join,uniq} --key to provide sort(1) like field processing in join(1) and uniq(1)
- Possibly suppress trailing slash with ls -F /
- Integrate tests adjustment to use rngtest
- Integrate SELinux restorecon improvements in copy.c
- Integrate fallocate(2) into cp and mv. The interface hasn't been improved, so we'll just use it as is
- posix_fallocate() is still not used due to its dependence on fallocate(2)
- libunistring is now available in debian and fedora and we're about to start using it in coreutils
- sort --head or sort --range to more efficiently output a subset of the input
- add a NSA/DoD verify function to shred
- Handle ACLs by not using umask
- Automatically use more CPU cache efficient buffer sizes in sort
- Possibly integrate the threaded external sort patch
- Add an inplace contrib/ script (or command) to robustly edit files in-place
- Possibly add OCFS2 support to cp --reflink
- dd oflag={fsync,BLKFLSBUF}
- cut --blank-separated
- shuf --random-range=LO-HI to allow repetition within range
- support SEEK_DATA/SEEK_HOLE in ZFS and elsewhere to efficiently copy sparse files
- wc -b -M to output frequencies of characters
- multiarch support in stdbuf
- rename might be a candidate for coreutils
- --noatime support to various recursive traversal tools
- rm --no-traverse-mount-points which would be especially useful with bind mounts
- stat(1) and ls(1) support for birth time. Dependent on xstat() being provided by the kernel
- fmt -w should not have such low limits
- group -0 to support group names with spaces etc.
- cp -u should be restartable. Currently may leave partial files in dest, or wrong files in the presence of hard links.
- split --confirm-create. To allow one to insert a new disk or whatever. There might be a way to do this externally?
- chmod -hHLP should be supported (like BSD).
- support tee --write-error={[cont],ignore,exit}
- support sleep,timeout --date="..." to specify absolute times independent of suspend/resume etc.
- expand seq fast path to more cases like specifying hex, adding arbitrary integers and subtraction etc.
- Possibly use sendfile in cp. Not under consideration yet until benchmarked and the code made portable enough.
- Add an sha-3 util. Work already started on such a GPL util elsewhere.
- Possibly s/--first-only/--initial/ in unexpand, to be less ambiguous and match expand.
© May 9 2013