No, funkcnich a dobre odladenych... posledni bezpecnostni dira tam byla loni :-) Ono ten stary kod si holt v sobe nese relikty, ktere se treba uz i prehlizi a pak najednou vyplavou. Bezpecnostnich der, na ktere se prislo az po mnoha letech bylo i v opensource svete cela rada.... proste nejsou kapacity na to veskery kod zodpovedne projit, zeano :-) Ono nekdy refactor kodu smysl proste dava...
Mi dava smysl treba to, ze se vemou jedny data, nad nima se pusti puvodni overena verze a taky nova verze a porovna se vystup.
Tohle mi prijde, jako by na to snad ani kdo zadne testy neudelal.
Chyby se stanou, ale tohle mi prijde jako slusny slendrian a rozhodne to nevzbuzuje pocit jistoty ohledne kvality tech rustovych core utils jako celku a kvality procesu jejich zarazeni do distra :-(
> Tohle mi prijde, jako by na to snad ani kdo zadne testy neudelal.
Naopak, testy mají velmi extenzivní.
Tuto chybu je testy těžké odchytit, protože nastane jen v případě, že je konzument dat z dd pomalý, a není nastavený fullblock flag.
Jenže pojem správně je něco jiného než oprava bugů. Myslel jsem to v tom smyslu to prostě napsat znovu bez ohledu na kompatibilitu, prostě na základě nějakých dnešních standardů. Tohle se prostě musí udělat a ne implementovat nějaké přepínače z roku 70 nebo zachovávat podivné vlastnosti, jako Jendův příklad ohledně dd a nutnosti tam psát parametr full block.
Ale tohle je na větší diskusi. Některé projekty je prostě nutné po letech přepsat.
To by byl ale jiný projekt. Ne drop-in replacement pro coreutils ;-)
A jakkoliv je pěkné si navrhnout nové API od nuly... to pak ty tisíce a tisíce balíků a skriptů používajících coreutils bude někdo přepisovat a migrovat no nové API? Nebo tedy převážně půjde jen o nové projekty a za pár dekád se tedy to nové API rozšíří? Není to jednoduché.
25. 10. 2025, 10:41 editováno autorem komentáře
Jenže ono je to i spousta dalšího. To můžeš rovnou vyházet i sed, tail, head, wc, cut a mnoho dalšího, protože to přece umí každý textový procesor (pardon, editor).
A místo CLI nástrojů pro správu souborů (cp, mv, rm, ln, df...) použijeme krusader a mc a je vyřešeno...
P.S. Ne každé použití cat je zbytečné.
Ty automatické testy mají teď 84 % pass, 5 % skip a 11 % fail, viz https://github.com/uutils/coreutils/releases/tag/0.3.0
Už se to tu ve vláknu řešilo.
https://github.com/uutils/coreutils?tab=readme-ov-file#gnu-test-suite-compatibility
https://github.com/uutils/coreutils/issues taky velmi výživné
Tak ona ani safe podmnožina Rustu nemusí být memory safe a může způsobit segfault (například přistupovat k již uvolněné paměti). Krom toho se tam používá i dost unsafe Rustu, takže těch chyb tam může být více - protože unsafe Rust je bohužel složitější než C (zejména pravidla pro aliasing pointerů a referencí).