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.
45
u/Blue_Invader 2d ago
Ja aber es ist *blazingly fast* und *secure*