This status update (subscribe via RSS) comes about 4 months after the last one,
and coincides loosely with release 8.22.
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.- groups -0 to support group names with spaces etc. Instead the more standard id -Gnz is provided.
- rm --exclude to exclude file names. Existing tools like find(1) were thought sufficient.
- cat -S to squeeze lines just containing blank chars. Existing tools like `sed 's/^ *$//' | cat -s` were thought sufficient.
- cat -d,--direct to use direct I/O. dd has the 'nocache' or 'direct' options and there are general nocache wrappers.
- *sum -c --ignore-missing to verify checksums for existing files only. Grepping for 'FAILED$' is nearly equivalent.
- date +%J to support astronomical Julian date. This was not thought common enough to support.
- uniq --regex to use a regular expression to match lines. Existing tools using a DSU pattern is more general.
- date -v to provide BSD syntax relative date adjustments. The existing GNU relative date syntax was thought sufficient.
- uname -i and -p should infer hardware info. It was thought better to just use the provided syscall info.
- rm should use remove(), leaving unlink() to the unlink command. We can't change such standardized functionality.
- comm,join --parallel to use multiple cores. It was thought best to split the data for multiple processes.
- cksum -a algo1 algo2 (like NetBSD) to do many checksums per read. It was thought more general to use separate processes.
- df --dereference to process symlink targets. df was changed to reference symlink targets unconditionally.
- join -t '\t' to use a TAB delimiter. Using the shell to specify the TAB char like join -t $'\t', was thought ubiquitous enough.
- mkdir -m ... --parents-mode to use the mode for all created dirs. This provides no functional benefit over using chmod.
- ls --just=$filetype to limit file type listed. Filtering classify tags like `ls --color -lF | sed -n 's#/$##p'` was thought sufficient.
- *sum --color to colorize the checksum to ease comparisons. This was thought more flexible to perform with separate tools.
Additions
Note you can see the latest changes as they're added in the NEWS file (subscribe via RSS).- id -z,--zero to delimit entries with NUL characters
- id supports specifying users by numeric id
- cp --link honors symlink dereference settings
- shred --remove[=HOW] gives more control over how directory entries are cleared, to support faster operation
- -Z option for SELinux restorecon functionality in various utils that copy and create files
- stty supports "stick" parity
- df --output='file' to directly output specified arguments
- *sum can use libcrypto as a build time option to significantly improve performance through architecture specific code
TODO
These new items were identified since the last update.- Use copyfile() when available to support efficient remote copies and file system specific attributes
- Perhaps allow specifying a --random-seed option to sort, shuf, shred to seed the PRNG
- 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
- support SEEK_DATA/SEEK_HOLE in ZFS and elsewhere to efficiently process binary 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
- 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.
- 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
- Integrate {join,uniq} --key to provide sort(1) like field processing in join(1) and uniq(1)
- Integrate tests adjustment to use rngtest
- sort might use vfork() or posix_spawn() for more efficient memory handling.
- csplit -i to support specifying the start number when naming split files.
- Possibly add shuf --all-permutations to consume all input and output all permutations.
- cut, numfmt, sort and join should be consistent and all allow overriding the input separator option.
- install --preserve to give more control over copied attributes and better symmetry with cp.
- Improve performance of shred --repeat by using reservoir-sampling with replacement.
- Possibly allow stty to set arbitrary speeds.
- Possibly implement deterministic handling of hardlinks by cp -R.
© Jan 18 2014