GST040 - Es gibt kein GOTO in Rust!
Manage episode 309588395 series 3036179
Dirk Breuer, Sebastian Cohnen, Dirk Breuer, and Sebastian Cohnen에서 제공하는 콘텐츠입니다. 에피소드, 그래픽, 팟캐스트 설명을 포함한 모든 팟캐스트 콘텐츠는 Dirk Breuer, Sebastian Cohnen, Dirk Breuer, and Sebastian Cohnen 또는 해당 팟캐스트 플랫폼 파트너가 직접 업로드하고 제공합니다. 누군가가 귀하의 허락 없이 귀하의 저작물을 사용하고 있다고 생각되는 경우 여기에 설명된 절차를 따르실 수 있습니다 https://ko.player.fm/legal.
Wir sprachen mit Jan-Erik Rediger über Redis, Rust und Open Source Projekte
…
continue reading
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
Redis und Rust Communities (01:52:20)
챕터
1. Jan-Erik Rediger (00:00:00)
2. Redis (00:03:00)
3. Open Source (00:08:00)
4. Rust (00:13:30)
5. Rust's Ursprung & Andere Ansätze (00:19:25)
6. Rust's Entwicklung (00:23:00)
7. Rust Releases, Plattformen, Buildsystem (00:33:30)
8. Womit loslegen in Rust? (00:40:00)
9. Testen in Rust (00:44:12)
10. Deployments (00:48:00)
11. Firefox und Rust (00:54:30)
12. Spracheigenschaften von Rust (01:02:30)
13. Rust und Nebenläufigkeit (01:33:00)
14. Rust Entwicklung (01:43:15)
15. Redis und Rust Communities (01:52:20)
42 에피소드