Geekstammtisch

Mehr oder weniger regelmäßiger Stammtisch rund um Nerdthemen und Webdevelopment

https://geekstammtisch.de/

subscribe
share



 

GST040 - Es gibt kein GOTO in Rust!


Wir sprachen mit Jan-Erik Rediger über Redis, Rust und Open Source Projekte 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)


share





 2017-09-08  2h3m