-
Notifications
You must be signed in to change notification settings - Fork 31
/
NEWS
3679 lines (2636 loc) · 150 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
GNU coreutils NEWS -*- outline -*-
* Noteworthy changes in release ?.? (????-??-??) [?]
** New features
rm now accepts -d/--dir flag which allows it to remove empty directories.
As removing empty directories is relatively safe this option can be used as
a part of the alias rm='rm --dir'. This change also improves compatibility
with Mac OS X and BSD systems which all have the -d flag.
* 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.
* Noteworthy changes in release 8.15 (2012-01-06) [stable]
** New programs
realpath: print resolved file names.
** Bug fixes
du -x no longer counts root directories of other file systems.
[bug introduced in coreutils-5.1.0]
ls --color many-entry-directory was uninterruptible for too long
[bug introduced in coreutils-5.2.1]
ls's -k option no longer affects how ls -l outputs file sizes.
It now affects only the per-directory block counts written by -l,
and the sizes written by -s. This is for compatibility with BSD
and with POSIX 2008. Because -k is no longer equivalent to
--block-size=1KiB, a new long option --kibibyte stands for -k.
[bug introduced in coreutils-4.5.4]
ls -l would leak a little memory (security context string) for each
nonempty directory listed on the command line, when using SELinux.
[bug probably introduced in coreutils-6.10 with SELinux support]
rm -rf DIR would fail with "Device or resource busy" on Cygwin with NWFS
and NcFsd file systems. This did not affect Unix/Linux-based kernels.
[bug introduced in coreutils-8.0, when rm began using fts]
split -n 1/2 FILE no longer fails when operating on a growing file, or
(on some systems) when operating on a non-regular file like /dev/zero.
It would report "/dev/zero: No such file or directory" even though
the file obviously exists. Same for -n l/2.
[bug introduced in coreutils-8.8, with the addition of the -n option]
stat -f now recognizes the FhGFS and PipeFS file system types.
tac no longer fails to handle two or more non-seekable inputs
[bug introduced in coreutils-5.3.0]
tail -f no longer tries to use inotify on GPFS or FhGFS file systems
[you might say this was introduced in coreutils-7.5, along with inotify
support, but the new magic numbers weren't in the usual places then.]
** Changes in behavior
df avoids long UUID-including file system names in the default listing.
With recent enough kernel/tools, these long names would be used, pushing
second and subsequent columns far to the right. Now, when a long name
refers to a symlink, and no file systems are specified, df prints the
usually-short referent instead.
tail -f now uses polling (not inotify) when any of its file arguments
resides on a file system of unknown type. In addition, for each such
argument, tail -f prints a warning with the FS type magic number and a
request to report it to the bug-reporting address.
* Noteworthy changes in release 8.14 (2011-10-12) [stable]
** Bug fixes
ls --dereference no longer outputs erroneous "argetm" strings for
dangling symlinks when an 'ln=target' entry is in $LS_COLORS.
[bug introduced in fileutils-4.0]
ls -lL symlink once again properly prints "+" when the referent has an ACL.
[bug introduced in coreutils-8.13]
sort -g no longer infloops for certain inputs containing NaNs
[bug introduced in coreutils-8.5]
** Improvements
md5sum --check now supports the -r format from the corresponding BSD tool.
This also affects sha1sum, sha224sum, sha384sum and sha512sum.
pwd now works also on systems without openat. On such systems, pwd
would fail when run from a directory whose absolute name contained
more than PATH_MAX / 3 components. The df, stat and readlink programs
are also affected due to their use of the canonicalize_* functions.
** Changes in behavior
timeout now only processes the first signal received from the set
it is handling (SIGTERM, SIGINT, ...). This is to support systems that
implicitly create threads for some timer functions (like GNU/kFreeBSD).
** Build-related
"make dist" no longer builds .tar.gz files.
xz is portable enough and in wide-enough use that distributing
only .tar.xz files is enough.
* Noteworthy changes in release 8.13 (2011-09-08) [stable]
** 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
date now accepts ISO 8601 date-time strings with "T" as the
separator. It has long parsed dates like "2004-02-29 16:21:42"
with a space between the date and time strings. Now it also parses
"2004-02-29T16:21:42" and fractional-second and time-zone-annotated
variants like "2004-02-29T16:21:42.333-07:00"
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 -p now copies trivial NSFv4 ACLs on Solaris 10. Before, it would
mistakenly apply a non-trivial ACL to the destination file.
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.
Numerous portability and build improvements inherited via gnulib.
* Noteworthy changes in release 8.12 (2011-04-26) [stable]
** Bug fixes
tail's --follow=name option no longer implies --retry on systems
with inotify support. [bug introduced in coreutils-7.5]
** Changes in behavior
cp's extent-based (FIEMAP) copying code is more reliable in the face
of varying and undocumented file system semantics:
- it no longer treats unwritten extents specially
- a FIEMAP-based extent copy always uses the FIEMAP_FLAG_SYNC flag.
Before, it would incur the performance penalty of that sync only
for 2.6.38 and older kernels. We thought all problems would be
resolved for 2.6.39.
- it now attempts a FIEMAP copy only on a file that appears sparse.
Sparse files are relatively unusual, and the copying code incurs
the performance penalty of the now-mandatory sync only for them.
** Portability
dd once again compiles on AIX 5.1 and 5.2
* Noteworthy changes in release 8.11 (2011-04-13) [stable]
** Bug fixes
cp -a --link would not create a hardlink to a symlink, instead
copying the symlink and then not preserving its timestamp.
[bug introduced in coreutils-8.0]
cp now avoids FIEMAP issues with BTRFS before Linux 2.6.38,
which could result in corrupt copies of sparse files.
[bug introduced in coreutils-8.10]
cut could segfault when invoked with a user-specified output
delimiter and an unbounded range like "-f1234567890-".
[bug introduced in coreutils-5.3.0]
du would infloop when given --files0-from=DIR
[bug introduced in coreutils-7.1]
sort no longer spawns 7 worker threads to sort 16 lines
[bug introduced in coreutils-8.6]
touch built on Solaris 9 would segfault when run on Solaris 10
[bug introduced in coreutils-8.8]
wc would dereference a NULL pointer upon an early out-of-memory error
[bug introduced in coreutils-7.1]
** New features
dd now accepts the 'nocache' flag to the iflag and oflag options,
which will discard any cache associated with the files, or
processed portion thereof.
dd now warns that 'iflag=fullblock' should be used,
in various cases where partial reads can cause issues.
** Changes in behavior
cp now avoids syncing files when possible, when doing a FIEMAP copy.
The sync is only needed on Linux kernels before 2.6.39.
[The sync was introduced in coreutils-8.10]
cp now copies empty extents efficiently, when doing a FIEMAP copy.
It no longer reads the zero bytes from the input, and also can efficiently
create a hole in the output file when --sparse=always is specified.
df now aligns columns consistently, and no longer wraps entries
with longer device identifiers, over two lines.
install now rejects its long-deprecated --preserve_context option.
Use --preserve-context instead.
test now accepts "==" as a synonym for "="
* Noteworthy changes in release 8.10 (2011-02-04) [stable]
** Bug fixes
du would abort with a failed assertion when two conditions are met:
part of the hierarchy being traversed is moved to a higher level in the
directory tree, and there is at least one more command line directory
argument following the one containing the moved sub-tree.
[bug introduced in coreutils-5.1.0]
join --header now skips the ordering check for the first line
even if the other file is empty. [bug introduced in coreutils-8.5]
join -v2 now ensures the default output format prints the match field
at the start of the line when it is different to the match field for
the first file. [bug present in "the beginning".]
rm -f no longer fails for EINVAL or EILSEQ on file systems that
reject file names invalid for that file system.
uniq -f NUM no longer tries to process fields after end of line.
[bug introduced in coreutils-7.0]
** New features
cp now copies sparse files efficiently on file systems with FIEMAP
support (ext4, btrfs, xfs, ocfs2). Before, it had to read 2^20 bytes
when copying a 1MiB sparse file. Now, it copies bytes only for the
non-sparse sections of a file. Similarly, to induce a hole in the
output file, it had to detect a long sequence of zero bytes. Now,
it knows precisely where each hole in an input file is, and can
reproduce them efficiently in the output file. mv also benefits
when it resorts to copying, e.g., between file systems.
join now supports -o 'auto' which will automatically infer the
output format from the first line in each file, to ensure
the same number of fields are output for each line.
** Changes in behavior
join no longer reports disorder when one of the files is empty.
This allows one to use join as a field extractor like:
join -a1 -o 1.3,1.1 - /dev/null
* Noteworthy changes in release 8.9 (2011-01-04) [stable]
** Bug fixes
split no longer creates files with a suffix length that
is dependent on the number of bytes or lines per file.
[bug introduced in coreutils-8.8]
* Noteworthy changes in release 8.8 (2010-12-22) [stable]
** Bug fixes
cp -u no longer does unnecessary copying merely because the source
has finer-grained time stamps than the destination.
od now prints floating-point numbers without losing information, and
it no longer omits spaces between floating-point columns in some cases.
sort -u with at least two threads could attempt to read through a
corrupted pointer. [bug introduced in coreutils-8.6]
sort with at least two threads and with blocked output would busy-loop
(spinlock) all threads, often using 100% of available CPU cycles to
do no work. I.e., "sort < big-file | less" could waste a lot of power.
[bug introduced in coreutils-8.6]
sort with at least two threads no longer segfaults due to use of pointers
into the stack of an expired thread. [bug introduced in coreutils-8.6]
sort --compress no longer mishandles subprocesses' exit statuses,
no longer hangs indefinitely due to a bug in waiting for subprocesses,
and no longer generates many more than NMERGE subprocesses.
sort -m -o f f ... f no longer dumps core when file descriptors are limited.
** Changes in behavior
sort will not create more than 8 threads by default due to diminishing
performance gains. Also the --parallel option is no longer restricted
to the number of available processors.
** New features
split accepts the --number option to generate a specific number of files.
* Noteworthy changes in release 8.7 (2010-11-13) [stable]
** Bug fixes
cp, install, mv, and touch no longer crash when setting file times
on Solaris 10 Update 9 [Solaris PatchID 144488 and newer expose a
latent bug introduced in coreutils 8.1, and possibly a second latent
bug going at least as far back as coreutils 5.97]
csplit no longer corrupts heap when writing more than 999 files,
nor does it leak memory for every chunk of input processed
[the bugs were present in the initial implementation]
tail -F once again notices changes in a currently unavailable
remote directory [bug introduced in coreutils-7.5]
** Changes in behavior
cp --attributes-only now completely overrides --reflink.
Previously a reflink was needlessly attempted.
stat's %X, %Y, and %Z directives once again print only the integer
part of seconds since the epoch. This reverts a change from
coreutils-8.6, that was deemed unnecessarily disruptive.
To obtain a nanosecond-precision time stamp for %X use %.X;
if you want (say) just 3 fractional digits, use %.3X.
Likewise for %Y and %Z.
stat's new %W format directive would print floating point seconds.
However, with the above change to %X, %Y and %Z, we've made %W work
the same way as the others.
* Noteworthy changes in release 8.6 (2010-10-15) [stable]
** Bug fixes
du no longer multiply counts a file that is a directory or whose
link count is 1, even if the file is reached multiple times by
following symlinks or via multiple arguments.
du -H and -L now consistently count pointed-to files instead of
symbolic links, and correctly diagnose dangling symlinks.
du --ignore=D now ignores directory D even when that directory is
found to be part of a directory cycle. Before, du would issue a
"NOTIFY YOUR SYSTEM MANAGER" diagnostic and fail.
split now diagnoses read errors rather than silently exiting.
[bug introduced in coreutils-4.5.8]
tac would perform a double-free when given an input line longer than 16KiB.
[bug introduced in coreutils-8.3]
tail -F once again notices changes in a currently unavailable directory,
and works around a Linux kernel bug where inotify runs out of resources.
[bugs introduced in coreutils-7.5]
tr now consistently handles case conversion character classes.
In some locales, valid conversion specifications caused tr to abort,
while in all locales, some invalid specifications were undiagnosed.
[bugs introduced in coreutils 6.9.90 and 6.9.92]
** New features
cp now accepts the --attributes-only option to not copy file data,
which is useful for efficiently modifying files.
du recognizes -d N as equivalent to --max-depth=N, for compatibility
with FreeBSD.
sort now accepts the --debug option, to highlight the part of the
line significant in the sort, and warn about questionable options.
sort now supports -d, -f, -i, -R, and -V in any combination.
stat now accepts the %m format directive to output the mount point
for a file. It also accepts the %w and %W format directives for
outputting the birth time of a file, if one is available.
** Changes in behavior
df now consistently prints the device name for a bind mounted file,
rather than its aliased target.
du now uses less than half as much memory when operating on trees
with many hard-linked files. With --count-links (-l), or when
operating on trees with no hard-linked files, there is no change.
ls -l now uses the traditional three field time style rather than
the wider two field numeric ISO style, in locales where a style has
not been specified. The new approach has nicer behavior in some
locales, including English, which was judged to outweigh the disadvantage
of generating less-predictable and often worse output in poorly-configured
locales where there is an onus to specify appropriate non-default styles.
[The old behavior was introduced in coreutils-6.0 and had been removed
for English only using a different method since coreutils-8.1]
rm's -d now evokes an error; before, it was silently ignored.
sort -g now uses long doubles for greater range and precision.
sort -h no longer rejects numbers with leading or trailing ".", and
no longer accepts numbers with multiple ".". It now considers all
zeros to be equal.
sort now uses the number of available processors to parallelize
the sorting operation. The number of sorts run concurrently can be
limited with the --parallel option or with external process
control like taskset for example.
stat now provides translated output when no format is specified.
stat no longer accepts the --context (-Z) option. Initially it was
merely accepted and ignored, for compatibility. Starting two years
ago, with coreutils-7.0, its use evoked a warning. Printing the
SELinux context of a file can be done with the %C format directive,
and the default output when no format is specified now automatically
includes %C when context information is available.
stat no longer accepts the %C directive when the --file-system
option is in effect, since security context is a file attribute
rather than a file system attribute.
stat now outputs the full sub-second resolution for the atime,
mtime, and ctime values since the Epoch, when using the %X, %Y, and
%Z directives of the --format option. This matches the fact that
%x, %y, and %z were already doing so for the human-readable variant.
touch's --file option is no longer recognized. Use --reference=F (-r)
instead. --file has not been documented for 15 years, and its use has
elicited a warning since coreutils-7.1.
truncate now supports setting file sizes relative to a reference file.
Also errors are no longer suppressed for unsupported file types, and
relative sizes are restricted to supported file types.
* Noteworthy changes in release 8.5 (2010-04-23) [stable]
** Bug fixes
cp and mv once again support preserving extended attributes.
[bug introduced in coreutils-8.4]
cp now preserves "capabilities" when also preserving file ownership.
ls --color once again honors the 'NORMAL' dircolors directive.
[bug introduced in coreutils-6.11]
sort -M now handles abbreviated months that are aligned using blanks
in the locale database. Also locales with 8 bit characters are
handled correctly, including multi byte locales with the caveat
that multi byte characters are matched case sensitively.
sort again handles obsolescent key formats (+POS -POS) correctly.
Previously if -POS was specified, 1 field too many was used in the sort.
[bug introduced in coreutils-7.2]
** New features
join now accepts the --header option, to treat the first line of each
file as a header line to be joined and printed unconditionally.
timeout now accepts the --kill-after option which sends a kill
signal to the monitored command if it's still running the specified
duration after the initial signal was sent.
who: the "+/-" --mesg (-T) indicator of whether a user/tty is accepting
messages could be incorrectly listed as "+", when in fact, the user was
not accepting messages (mesg no). Before, who would examine only the
permission bits, and not consider the group of the TTY device file.
Thus, if a login tty's group would change somehow e.g., to "root",
that would make it unwritable (via write(1)) by normal users, in spite
of whatever the permission bits might imply. Now, when configured
using the --with-tty-group[=NAME] option, who also compares the group
of the TTY device with NAME (or "tty" if no group name is specified).
** Changes in behavior
ls --color no longer emits the final 3-byte color-resetting escape
sequence when it would be a no-op.
join -t '' no longer emits an error and instead operates on
each line as a whole (even if they contain NUL characters).
* Noteworthy changes in release 8.4 (2010-01-13) [stable]
** Bug fixes
nproc --all is now guaranteed to be as large as the count
of available processors, which may not have been the case
on GNU/Linux systems with neither /proc nor /sys available.
[bug introduced in coreutils-8.1]
** Build-related
Work around a build failure when using buggy <sys/capability.h>.
Alternatively, configure with --disable-libcap.
Compilation would fail on systems using glibc-2.7..2.9 due to changes in
gnulib's wchar.h that tickled a bug in at least those versions of glibc's
own <wchar.h> header. Now, gnulib works around the bug in those older
glibc <wchar.h> headers.
Building would fail with a link error (cp/copy.o) when XATTR headers
were installed without the corresponding library. Now, configure
detects that and disables xattr support, as one would expect.
* Noteworthy changes in release 8.3 (2010-01-07) [stable]
** Bug fixes
cp -p, install -p, mv, and touch -c could trigger a spurious error
message when using new glibc coupled with an old kernel.
[bug introduced in coreutils-6.12].
ls -l --color no longer prints "argetm" in front of dangling
symlinks when the 'LINK target' directive was given to dircolors.
[bug introduced in fileutils-4.0]
pr's page header was improperly formatted for long file names.
[bug introduced in coreutils-7.2]
rm -r --one-file-system works once again.
The rewrite to make rm use fts introduced a regression whereby
a commmand of the above form would fail for all subdirectories.
[bug introduced in coreutils-8.0]
stat -f recognizes more file system types: k-afs, fuseblk, gfs/gfs2, ocfs2,
and rpc_pipefs. Also Minix V3 is displayed correctly as minix3, not minux3.
[bug introduced in coreutils-8.1]
tail -f (inotify-enabled) once again works with remote files.
The use of inotify with remote files meant that any changes to those
files that was not done from the local system would go unnoticed.
[bug introduced in coreutils-7.5]
tail -F (inotify-enabled) would abort when a tailed file is repeatedly
renamed-aside and then recreated.
[bug introduced in coreutils-7.5]
tail -F (inotify-enabled) could fail to follow renamed files.
E.g., given a "tail -F a b" process, running "mv a b" would
make tail stop tracking additions to "b".
[bug introduced in coreutils-7.5]
touch -a and touch -m could trigger bugs in some file systems, such
as xfs or ntfs-3g, and fail to update timestamps.
[bug introduced in coreutils-8.1]
wc now prints counts atomically so that concurrent
processes will not intersperse their output.
[the issue dates back to the initial implementation]
* Noteworthy changes in release 8.2 (2009-12-11) [stable]
** Bug fixes
id's use of mgetgroups no longer writes beyond the end of a malloc'd buffer
[bug introduced in coreutils-8.1]
id no longer crashes on systems without supplementary group support.
[bug introduced in coreutils-8.1]
rm once again handles zero-length arguments properly.
The rewrite to make rm use fts introduced a regression whereby
a command like "rm a '' b" would fail to remove "a" and "b", due to
the presence of the empty string argument.
[bug introduced in coreutils-8.0]
sort is now immune to the signal handling of its parent.
Specifically sort now doesn't exit with an error message
if it uses helper processes for compression and its parent
ignores CHLD signals. [bug introduced in coreutils-6.9]
tail without -f no longer accesses uninitialized memory
[bug introduced in coreutils-7.6]
timeout is now immune to the signal handling of its parent.
Specifically timeout now doesn't exit with an error message
if its parent ignores CHLD signals. [bug introduced in coreutils-7.6]
a user running "make distcheck" in the coreutils source directory,
with TMPDIR unset or set to the name of a world-writable directory,
and with a malicious user on the same system
was vulnerable to arbitrary code execution
[bug introduced in coreutils-5.0]
* Noteworthy changes in release 8.1 (2009-11-18) [stable]
** Bug fixes
chcon no longer exits immediately just because SELinux is disabled.
Even then, chcon may still be useful.
[bug introduced in coreutils-8.0]
chcon, chgrp, chmod, chown and du now diagnose an ostensible directory cycle
and arrange to exit nonzero. Before, they would silently ignore the
offending directory and all "contents."
env -u A=B now fails, rather than silently adding A to the
environment. Likewise, printenv A=B silently ignores the invalid
name. [the bugs date back to the initial implementation]
ls --color now handles files with capabilities correctly. Previously
files with capabilities were often not colored, and also sometimes, files
without capabilites were colored in error. [bug introduced in coreutils-7.0]
md5sum now prints checksums atomically so that concurrent
processes will not intersperse their output.
This also affected sum, sha1sum, sha224sum, sha384sum and sha512sum.
[the bug dates back to the initial implementation]
mktemp no longer leaves a temporary file behind if it was unable to
output the name of the file to stdout.
[the bug dates back to the initial implementation]
nice -n -1 PROGRAM now runs PROGRAM even when its internal setpriority
call fails with errno == EACCES.
[the bug dates back to the initial implementation]
nice, nohup, and su now refuse to execute the subsidiary program if
they detect write failure in printing an otherwise non-fatal warning
message to stderr.
stat -f recognizes more file system types: afs, cifs, anon-inode FS,
btrfs, cgroupfs, cramfs-wend, debugfs, futexfs, hfs, inotifyfs, minux3,
nilfs, securityfs, selinux, xenfs
tail -f (inotify-enabled) now avoids a race condition.
Before, any data appended in the tiny interval between the initial
read-to-EOF and the inotify watch initialization would be ignored
initially (until more data was appended), or forever, if the file
were first renamed or unlinked or never modified.
[The race was introduced in coreutils-7.5]
tail -F (inotify-enabled) now consistently tails a file that has been
replaced via renaming. That operation provokes either of two sequences
of inotify events. The less common sequence is now handled as well.
[The bug came with the implementation change in coreutils-7.5]
timeout now doesn't exit unless the command it is monitoring does,
for any specified signal. [bug introduced in coreutils-7.0].
** Changes in behavior
chroot, env, nice, and su fail with status 125, rather than 1, on
internal error such as failure to parse command line arguments; this
is for consistency with stdbuf and timeout, and avoids ambiguity
with the invoked command failing with status 1. Likewise, nohup
fails with status 125 instead of 127.
du (due to a change in gnulib's fts) can now traverse NFSv4 automounted
directories in which the stat'd device number of the mount point differs
during a traversal. Before, it would fail, because such a mismatch would
usually represent a serious error or a subversion attempt.
echo and printf now interpret \e as the Escape character (0x1B).
rm -f /read-only-fs/nonexistent now succeeds and prints no diagnostic
on systems with an unlinkat syscall that sets errno to EROFS in that case.
Before, it would fail with a "Read-only file system" diagnostic.
Also, "rm /read-only-fs/nonexistent" now reports "file not found" rather
than the less precise "Read-only file system" error.
** New programs
nproc: Print the number of processing units available to a process.
** New features
env and printenv now accept the option --null (-0), as a means to
avoid ambiguity with newlines embedded in the environment.
md5sum --check now also accepts openssl-style checksums.
So do sha1sum, sha224sum, sha384sum and sha512sum.
mktemp now accepts the option --suffix to provide a known suffix
after the substitution in the template. Additionally, uses such as
"mktemp fileXXXXXX.txt" are able to infer an appropriate --suffix.
touch now accepts the option --no-dereference (-h), as a means to
change symlink timestamps on platforms with enough support.
* Noteworthy changes in release 8.0 (2009-10-06) [beta]
** Bug fixes
cp --preserve=xattr and --archive now preserve extended attributes even
when the source file doesn't have write access.
[bug introduced in coreutils-7.1]
touch -t [[CC]YY]MMDDhhmm[.ss] now accepts a timestamp string ending in .60,
to accommodate leap seconds.
[the bug dates back to the initial implementation]
ls --color now reverts to the color of a base file type consistently
when the color of a more specific type is disabled.
[bug introduced in coreutils-5.90]
ls -LR exits with status 2, not 0, when it encounters a cycle
"ls -is" is now consistent with ls -lis in ignoring values returned
from a failed stat/lstat. For example ls -Lis now prints "?", not "0",
for the inode number and allocated size of a dereferenced dangling symlink.
tail --follow --pid now avoids a race condition where data written
just before the process dies might not have been output by tail.
Also, tail no longer delays at all when the specified pid is not live.
[The race was introduced in coreutils-7.5,
and the unnecessary delay was present since textutils-1.22o]
** Portability
On Solaris 9, many commands would mistakenly treat file/ the same as
file. Now, even on such a system, path resolution obeys the POSIX
rules that a trailing slash ensures that the preceding name is a
directory or a symlink to a directory.
** Changes in behavior
id no longer prints SELinux " context=..." when the POSIXLY_CORRECT
environment variable is set.