GST040 - Es gibt kein GOTO in Rust!
Jan-Erik Rediger (00:00:00)
- https://twitter.com/badboy_, http://fnordig.de/
- Irgendwas zwischen Entwickler und Administrator
- Aktuell sehr aktiv in Redis und Rust (seit ~3 Jahren)
- Jan-Erik ist über das Interesse an Algorithmen an Redis gekommen (lesbares C)
Redis (00:03:00)
- https://redis.io/
- Key-Value Datenbank
Open Source (00:08:00)
- Einstieg in Open Source Projekte
- erstes Projekt: Redis
- Einstieg z.B. über Dokumentation
- Redis ist inzwischen nicht mehr so einfach für den Einstieg
- Es gibt Projekte (wie Rust), die Issues zum Einstieg markieren
Rust (00:13:30)
- Jan-Erik ist bei Rust 0.11 eingestiegen
- Probleme von C/C++
- sehr alt :)
- kommen aus einer Welt, wo es nur eine CPU gab
- wenig (gute) Spracheigenschaften um Parallelität gut abzubilden
- Rust erkennt viele der herkömmlichen Probleme schon beim Kompilieren
- Rust will eine Low-Level Sprache sein, mit weniger Problemen
Rust's Ursprung & Andere Ansätze (00:19:25)
- Graydon Hoare hat ~2006 angefangen an einer eigenen Sprache zu arbeiten
- Seit 2009 hat sich Mozilla dem Projekt angenommen
- D https://dlang.org/
Rust's Entwicklung (00:23:00)
- Rust hatte bis vor ein paar Jahren immer noch eine Runtime
- Fokus sollte wieder auf die Sprache selber gehen und die Runtime wurde entfernt, die Standard Library aufgeräumt
- Rust 1.0 wurde am 2015 released (aktuell 1.19)
- bis Rust 1.0 war die Sprache durch viele Änderungen extrem volatil
Einstieg in Rust (00:29:00)
- Jan-Erik's Einstieg: Steve Klabnik's "Rust for Rubyists": https://github.com/steveklabnik/rust_for_rubyists
- Rust legt großen Wert auf gute Dokumentation
Rust Releases, Plattformen, Buildsystem (00:33:30)
- Rust wird alle zwei Wochen released
- Es gibt aktuell keine "Marketing" Releases, sondern einfach nur einen festen Release Zyklus
- Jeder Pull Request wird getestet
- Zum Testen von Kompileränderungen werden alle aktuellen Pakete gebaut und getestet
- (fast) alles was LLVM unterstützt, wird auch von Rust unterstützt
- installieren kann man den Rustcompiler z.B. via rustup: https://www.rustup.rs/
- cargo ist das Buildsystem und der Paketmanager von Rust: https://crates.io/
Womit loslegen in Rust? (00:40:00)
- "Alles, was man sonst so mit C machen würde" :)
- Jan-Erik schlägt CLI Tools als Einstiegspunkt vor
- Aber: Rust ist keine besondere einfache Sprache
Testen in Rust (00:44:12)
- Unit Tests sind direkt in das Tooling eingebaut: cargo test
- In der Dokumentation können Codebeispiele verwendet werden, die ebenfalls getestet werden können: https://github.com/steveklabnik/rustdoc
Deployments (00:48:00)
- rust kompiliert nicht sonderlich schnell
- trust: Travis CI Template um Binary Releases zu bauen https://github.com/japaric/trust
- rust Programme sind statisch gelinkt (ähnlich zu Go)
Firefox und Rust (00:54:30)
- Mozilla baut eine neue Browser-Engine: servo https://servo.org/
- Firefox ist größtenteils in C++ geschrieben
- daher hat Rust eine gute Integration mit C/C++ (ohne Overhead)
- Stylo ist eine neue CSS Engine für Firefox
Spracheigenschaften von Rust (01:02:30)
- die Intergation in C/C++ kann unsicher sein: unsafe
- besonders effizenter code kann auch schon mal unsafe benötigen
- Code aus unsafe kann auch den sicheren (save) Code beeinflussen
- Type Inference
- Borrowship und Ownership: Jeder Wert hat einen Besitzer
- Mutable und Immutable Data
- Send und Sync
- Wrap und Unwrap
- "Result" Datentyp
- Keine Exceptions
- Refactoring Ruby with Monads: https://codon.com/refactoring-ruby-with-monads
Rust und Nebenläufigkeit (01:33:00)
- Basis ist Borrowship und Ownership, sowie Send und Sync
Rust Entwicklung (01:43:15)
- von Mozilla gespondert, aber viele Contributor
- RFC Prozess, um Vorschläge von Sprachänderungen zu diskutieren
- https://github.com/rust-lang/rfcs
Kommentare
Neuer Kommentar