hendrik

6 Followers | 12 Following

Follow

hendrik

56 days ago

Entwicklung: Warum Rust die Antwort auf miese Software und Programmierfehler ist
Die Ideen und die Lösungen von Rust
INHALTSVERZEICHNIS

(Bild: Callum Bainbridge / Shutterstock.com)
Und hier kommt der Teil, der Rust so bemerkenswert macht. Die haben sich das angesehen und sich entschieden, dass sie kurzfristig Schmerzen aushalten wollen, wenn die Codebasis dadurch insgesamt sicherer wird. Sie haben sich C++ angesehen, die aktuelle Plattform von Firefox, und gesehen, dass das Design praktisch überall nicht "fail safe" ist. Wenn der Compiler smart genug ist, kann er dich warnen, aber der unklare Teil, bei dem der Compiler noch nicht schlau genug ist, da "failed" er unsafe und gibt keine Warnung aus. Schlimmer noch: Wenn der Compiler schlauer wird und mehr Codestellen bemängelt, dann schalten die meisten Programmierer lieber das Warnlevel herab oder ignorieren die Warnungen alle. Und auch dass man an etwas const dranschreiben muss, ist ein "fail unsafe".


Anzeige
Rust macht das so, dass man für einen 32 Bit Integer ohne Vorzeichen "u32" schreibt – aber der ist dann per Default const! Wer nicht const will, muss "mut u32" schreiben. Wenn der Programmierer den Tippaufwand scheut, dann ist das Ergebnis nicht schlechterer Code, der trotzdem vom Compiler akzeptiert wird, und dann vielleicht im Feld bricht, sondern der Compiler kann den Code direkt ablehnen. Kurzfristig ist das schmerzhaft. Rust macht es trotzdem.

Natürlich ist das nicht das Ende der Dinge, die Rust anders macht. Eine andere Rust-Idee muss hier noch gezeigt werden: Das Konzept von Ownership.

Es kann nur einen geben ...
Nehmen wir an, wir haben einen Container mit Werten drin. Wir rufen irgendeine Funktion auf, die damit etwas machen soll. In C++ schreibt man das einfach so hin, ohne darüber nachdenken zu müssen, wer jetzt eigentlich für den Container zuständig ist. Irgendjemand muss ja den Container freigeben, wenn man damit fertig ist. Übergibt man den Container nur als Eingabe für eine Operation an diese Funktion oder übergibt man ihn permanent und macht danach selber nichts mehr damit? Wenn die Funktion fertig ist, wer gibt dann den Container frei?

In vielen einfachen Programmen spielt diese Frage keine große Rolle. Das Hauptprogramm instanziiert alles und gibt am Ende alles frei. Für Codemonster wie einen Webbrowser funktioniert das aber so nicht, da braucht man bessere Konzepte. Das häufigste Konzept in Webbrowsern ist Reference Counting. Niemand ist Eigentümer. Der Container zählt selber, wie viele Referenzen es auf ihn gibt, und wenn der Wert 0 erreicht, gibt er sich selbst frei. Das funktioniert leidlich, aber es macht es praktisch unmöglich, belastbare Aussagen über den Code zu machen.

Entwicklung: Warum Rust die Antwort auf miese Software und Programmierfehler ist

heise.de

hendrik

427 days ago

There's been a lot of concern around the US economic sanctions against Iran and other countries, and especially Rust's reliance on GitHub after the changes they recently made in order to comply with the law. We've spent some time looking into this recently, and wanted to update folks on where things stand. We specifically wanted to answer two questions:

Do the changes that GitHub has made affect any of the ways in which Rust relies on GitHub?
Are there any changes required to crates.io 6 in order to comply with the law?
Rust uses GitHub in 3 primary ways:

All Rust repositories are hosted on GitHub, and a substantial amount of collaboration occurs in issues/pull requests
The crates.io 6 index, which is cloned by cargo is hosted on GitHub.
The only way to create an account on crates.io 6 is through GitHub oauth.
We've investigated whether any of these are affected. To our knowledge, individuals from sanctioned countries are still able to clone and interact with public repos, and they are also able to use their account for oauth purposes. We do not believe there are any plans to change this.

The second issue was whether changes need to be made to crates.io 6. We believe that we are fully in compliance with the law. We do not have any plans to add restrictions to our service. All users -- regardless of country of origin -- will continue to be able to publish crates, download crates, and use any other functions provided by crates.io 6.

If any of this information changes, we will re-evaluate the situation. However, at this time, we do not believe there are any changes required within any part of the Rust organization as a result of the US sanctions.

Update on Rust, crates.io, and US economic sanctions

internals.rust-lang.org

hendrik

693 days ago

WebAssembly doesn’t make unsafe languages safe (yet)

00f.net

hendrik

934 days ago

Why German companies fail at digital innovation

handelsblatt.com

hendrik

950 days ago

Prereleases and Npm

medium.com

hendrik

971 days ago

Write code that is easy to delete, not easy to extend.

programmingisterrible.com

hendrik

1022 days ago

Moxie Marlinspike

moxie.org

hendrik

1032 days ago

Debugging a segfault in my Rust program

jvns.ca

hendrik

1101 days ago

update all the fritz boxen

WPA2: Forscher entdecken Schwachstelle in WLAN-Verschlüsselung

heise.de

hendrik

1175 days ago

Fearless concurrency with hazard pointers · Ticki's blog

ticki.github.io

hendrik

1175 days ago

Rust non-lexical lifetimes RFC

nikomatsakis/nll-rfc

github.com

hendrik

1326 days ago

The Future With Futures

asquera.de

Like this set of items on Pocket? Share with friends.