Show notes
Wir sprachen mit Jan-Erik Rediger über Redis, Rust und Open Source ProjekteJan-Erik Rediger (00:00:00)https://twitter.com/badboy_, http://fnordig.de/Irgendwas zwischen Entwickler und AdministratorAktuell 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 DatenbankOpen Source (00:08:00)Einstieg in Open Source Projekteerstes Projekt: RedisEinstieg z.B. über DokumentationRedis ist inzwischen nicht mehr so einfach für den EinstiegEs gibt Projekte (wie Rust), die Issues zum Einstieg markierenRust (00:13:30)Jan-Erik ist bei Rust 0.11 eingestiegenProbleme von C/C++sehr alt :)kommen aus einer Welt, wo es nur eine CPU gabwenig (gute) Spracheigenschaften um Parallelität gut abzubildenRust erkennt viele der herkömmlichen Probleme schon beim KompilierenRust will eine Low-Level Sprache sein, mit weniger ProblemenRust's Ursprung & Andere Ansätze (00:19:25)Graydon Hoare hat ~2006 angefangen an einer eigenen Sprache zu arbeitenSeit 2009 hat sich Mozilla dem Projekt angenommenD https://dlang.org/Rust's Entwicklung (00:23:00)Rust hatte bis vor ein paar Jahren immer noch eine RuntimeFokus sollte wieder auf die Sprache selber gehen und die Runtime wurde entfernt, die Standard Library aufgeräumtRust 1.0 wurde am 2015 released (aktuell 1.19)bis Rust 1.0 war die Sprache durch viele Änderungen extrem volatilEinstieg in Rust (00:29:00)Jan-Erik's Einstieg: Steve Klabnik's "Rust for Rubyists": https://github.com/steveklabnik/rust_for_rubyistsRust legt großen Wert auf gute DokumentationRust Releases, Plattformen, Buildsystem (00:33:30)Rust wird alle zwei Wochen releasedEs gibt aktuell keine "Marketing" Releases, sondern einfach nur einen festen Release ZyklusJeder Pull Request wird getestetZum Testen von Kompileränderungen werden alle aktuellen Pakete gebaut und getestet(fast) alles was LLVM unterstützt, wird auch von Rust unterstütztinstallieren 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 vorAber: Rust ist keine besondere einfache SpracheTesten in Rust (00:44:12)Unit Tests sind direkt in das Tooling eingebaut: cargo testIn der Dokumentation können Codebeispiele verwendet werden, die ebenfalls getestet werden können: https://github.com/steveklabnik/rustdocDeployments (00:48:00)rust kompiliert nicht sonderlich schnelltrust: Travis CI Template um Binary Releases zu bauen https://github.com/japaric/trustrust 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++ geschriebendaher hat Rust eine gute Integration mit C/C++ (ohne Overhead)Stylo ist eine neue CSS Engine für FirefoxSpracheigenschaften von Rust (01:02:30)die Intergation in C/C++ kann unsicher sein: unsafebesonders effizenter code kann auch schon mal unsafe benötigenCode aus unsafe kann auch den sicheren (save) Code beeinflussenType InferenceBorrowship und Ownership: Jeder Wert hat einen BesitzerMutable und Immutable DataSend und SyncWrap und Unwrap"Result" DatentypKeine ExceptionsRefactoring Ruby with Monads: https://codon.com/refactoring-ruby-with-monadsRust und Nebenläufigkeit (01:33:00)Basis ist Borrowship und Ownership, sowie Send und SyncRust Entwicklung (01:43:15)von Mozilla gespondert, aber viele ContributorRFC Prozess, um Vorschläge von Sprachänderungen zu diskutierenhttps://github.com/rust-lang/rfcsRedis und Rust Communities (01:52:20)



