Dostępna jest stabilna wersja zestawu podstawowych narzędzi systemowych GNU Coreutils 9.0, w skład którego wchodzą programy takie jak sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, ls itd. Znacząca zmiana numeru wersji jest wynikiem zmian w zachowaniu niektórych narzędzi.
Kluczowe zmiany:
- W narzędziach cp i install domyślnie podczas kopiowania wykorzystuje się tryb copy-on-write (użycie ioctl ficlone do współdzielenia danych w różnych plikach zamiast tworzenia pełnego klona).
- W narzędziach cp, install i mv wykorzystano mechanizmy przyspieszające operacje kopiowania (użycie systemowego wywołania copy_file_range do wykonywania kopiowania tylko po stronie jądra, bez przesyłania danych do pamięci procesu w przestrzeni użytkownika).
- W narzędziach cp, install i mv do określenia luk w plikach wykorzystano prostsze i przenośne wywołanie lseek+SEEK_HOLE zamiast ioctl+FS_IOC_FIEMAP.
- W narzędziu wc do przyspieszenia liczenia linii wykorzystano instrukcje AVX2. Przy użyciu tej optymalizacji prędkość wc wzrosła pięciokrotnie.
- Do narzędzia cksum dodano opcję „-a” (—algorithm) do wyboru algorytmu haszującego. W celu przyspieszenia obliczeń kontrolnych sum w narzędziu cksum wykorzystano instrukcje pclmul w trybie „—algorithm=crc”, co pozwoliło na przyspieszenie obliczeń do 8 razy. Na systemach bez wsparcia pclmul tryb crc przyspieszono 4 razy. Pozostałe algorytmy haszujące (sum, md5sum, b2sum, sha*sum, sm3 itd.) zrealizowano poprzez wywoływanie funkcji libcrypto.
- W narzędziach md5sum, cksum, sha*sum i b2sum przy użyciu flagi „—check” dozwolone jest występowanie sekwencji CRLF na końcu linii z sumą kontrolną. W „cksum —check” zapewnione jest automatyczne określenie używanego algorytmu haszującego.
- W narzędziu ls dodano opcję „—sort=width” do sortowania według długości nazwy pliku oraz opcję „—zero” do zakończenia każdej linii znakiem null. Przywrócono stare zachowanie prowadzące do wyświetlenia pustego katalogu zamiast błędu w przypadku przetwarzania usuniętego katalogu.
- W narzędziu df zrealizowano określenie sieciowych systemów plików acfs, coda, fhgfs, gpfs, ibrix, ocfs2 i vxfs.
- W narzędziach stat i tail dodano wsparcie dla typów FS „devmem”, „exfat”, „secretmem”, „vboxsf” i „zonefs”. Dla „vboxsf” do śledzenia zmian w „tail -f” wykorzystano polling, a dla pozostałych — inotify.
Źródło: opennet.ru
