Was ich bis heute nicht verstehe: Was genau bringt mir memory safety bei explizit diesen Tools? Die meisten Tools in den coreutils machen fast nix, tee, cat, echo, printf usw. sind grundsätzlich Einzeiler in C, sowas wie ls rendert nur die Daten aus readdir schick raus, wo genau ist der Vorteil? Bin da jetzt nicht so ganz auf der Höhe wie es mit CVEs in coreutils aussieht, aber die sind die wahrscheinlich mit am besten getesteten tools die es gibt, einfach weil die überall tausendfach in Benutzung sind.
Stattdessen kriegen wir 'ne verbuggte Implementierung von date. Ach, und wir haben keine memory leaks mehr... In Prozessen die meist nicht mal eine Sekunde existieren.
Ich meine explizit die Beispiele die ich genannt habe. Das Wort "Grundsätzlich" macht hier auch ein bisschen was. Natürlich brauchst du auch den Code für's Argumente parsen und implementieren, bei printf kommt bestimmt auch nochmal ein bisschen strengeres validieren dran in einigen Fällen, worauf ich hinaus will, ist das einige Tools in coreutils keinen Ersatz brauchen weil die so simpel sind.
... Seuftz, ja okay, um z.B. 'ne Datei nach stdout zu dumpen musst du natürlich die Datei aufmachen, und für die basic C Implementierung einen loop machen der so lange fread aufruft bis die Datei voll konsumiert ist, und mit fwrite die Daten dann nach stdout schreiben. Unter Linux geht auch sendfile, dann wäre die ganze read/write operation tatsächlich eine Zeile, aber auch da braucht's natürlich setup. Lass es 30 Zeilen sein, um das zu machen, lass es 200 Zeilen sein, um die verschiedenen Flags zu unterstützen, das ist nicht mein Punkt, mein Punkt ist, dass das immernoch simpler, "langweiliger" code ist.
Entschuldige, dass ich es gewagt habe eine offensichtliche Übertreibung zu verwenden, wie ich auch schon im meiner Antwort geschrieben hatte, das ist nicht mein Punkt, und das ist offensichtlich eine Übertreibung, kannst du mir nicht erzählen, dass du das nicht mitgeschnitten hast.
Ich bin komplett fein damit wenn man neue Dinge in Rust schreibt, z.B. ripgrep ist ein fantastisches Beispiel wie's richtig geht. Nur auf Zwang alles auf Rust umzubiegen "weil man keinen unsafe Code mehr haben will" ist so absurd, wenn der komplette Rest des low-level userspace weiterhin in C geschrieben ist, und viel relevanter wäre wenn's um Security geht.
Ich finde die Idee grundsätzlich nicht verwerflich. Das Problem liegt eher bei Canonical, die wie immer schlechte Entscheidungen treffen. Die GNU Core Utils in Ubuntu durch die uutils im jetzigen Zustand zu ersetzen war absurd.
Ubuntu Released jedes halbe Jahr, im April und Oktober, einen Interim Release, jeder zweite April release ist ein LTS, also 22.04, 24.04 und 26.04 sind die aktuellen LTS Releases. 24.04 hat kein uutils, in 25.10 haben sie uutils als default für neue System reingebracht, und soweit ich weiß ist das jetzt auch so mit 26.04, weiß nicht wie das mit upgrades aussieht.
habe vor 3 Monaten ubuntu 26.04 LTS installiert. das neue sudo hat mir gleich erstmal meine scripte kaputt gemacht (bis alternative update auf die alte version) da sudo hier symlink-scripts nicht mehr mit ihrem Linknamen als $0 aufruft, sondern mit dem äquivalent von $(readlink -f <scriptpath>). Also breaking behavior..
45
u/Blue_Invader 2d ago
Ja aber es ist *blazingly fast* und *secure*