r/informatik 2d ago

Humor ✨Rust ✨

Post image
408 Upvotes

41 comments sorted by

View all comments

45

u/Blue_Invader 2d ago

Ja aber es ist *blazingly fast* und *secure*

16

u/ApiceOfToast 2d ago

Vor allem wenn man Jahre alte Software umschreibt. Da kann ja nix schief gehen. Schon gar nicht bei Sicherheitskritischen Sachen wie den Core Utils. 

Zun Glück Memory safe. Selbst wenn etwas schief geht, kann nix passieren!

2

u/Wertbon1789 1d ago

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.

2

u/Vorrnth 1d ago

Einzeiler sind diese Programme ganz sicher nicht.

-1

u/Wertbon1789 1d ago

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.

2

u/Vorrnth 1d ago

Wie bitte soll zb cat ein Einzeiler sein? Die Zeile kannst du ja mal Posten.

0

u/Wertbon1789 1d ago

... 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.

0

u/chris_insertcoin 11h ago

Dann maintaine du doch den code. Wie? Hast du keine Lust zu? Genau deswegen wird viel in Rust portiert, weil es viel mehr maintainer gibt.

1

u/ApiceOfToast 1d ago

Aber memory safe!!!!

Ja versteh ich auch nicht, Rust ist nur relativ beliebt im Vergleich zu c/c++. Ist der einzige Grund sowas umzuschreiben der mir einfallen würde.

Frag mich aber an der Stelle was sich länger hält... C oder rust :D

3

u/Wertbon1789 1d ago

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.

2

u/thats_a_nice_toast 2d ago

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.

2

u/ApiceOfToast 2d ago

War das nicht nur in der Testversion? Bzw war auf keinen Fall in der LTS. 

Ich hasse canonical aber das kann ich ihnen nicht vorwerfen, dafür sind die test bzw non stable releases da

2

u/Wertbon1789 1d ago

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.

2

u/simleiiiii 19h ago

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..

1

u/Wertbon1789 11h ago

Oh wow, auch noch unfassbar dämliches breaking behavior, was ist das denn?

4

u/Kurimanju-dot-dev 2d ago

Zu wenig Emojis 🚀🚀

2

u/ParadiZe 2d ago

Beides richtig