Introductie Rust

Introductie Rust voor Linux User Group Nijmegen 14 juni 2022

Bèr berkes Kessels

Rust

Over deze presentatie

  • Is online: berk.es/lugn-rust (github.com/berkes/rust-pres)
  • Bevat alle links
  • Enige kennis van automatisering of programmeren is mooi
  • Is in het Nederlands

Over mij

  • Bèr berkes Kessels
  • @berkes
  • Werkt aan Plannel
  • Blog berk.es
  • Mail ber@berk.es

Doel

  • Je volgend project(je) in Rust?
  • Hoe begin ik met Rust?
  • Wanneer er interesse en tijd is, zullen we dieper in een voorbeeld duiken.

Waarom Rust

Alles is C

Software is eating the world

– Marc Andreessen

De wereld, anno 2022, draait op C.

De grote ontwerpfout

I call it my billion-dollar mistake…

– Tony Hoare, inventor of ALGOL W.

Memory safety

Roughly 70% of all serious security bugs in the Chrome codebase are memory management and safety bugs

– Google engineers

Mozilla

  • 2010: Mozilla komt met Project Servo
  • Rust 1.0, eerste stabiele versie: op 15 mei 2015 gelanceerd.
  • 2021 - Rust Foundation door “Big five”

Rust is intended to be a language for highly concurrent and highly safe systems,

– Graydon Hoare inventor of Rust.

Op te lossen probleem: Memory Safety

Iedereen: Garbage Collector

C en C++: DIY

Rust Is the Industry’s ‘Best Chance’ at Safe Systems Programming – Microsoft

Rust: Borrow checker (ownership)

Ownership is Rust’s most unique feature, and it enables Rust to make memory safety guarantees without needing a garbage collector. – The Rust Handbook

Threading

Fearless Concurrency

By leveraging ownership and type checking, many concurrency errors are compile-time errors in Rust rather than runtime errors. – The Rust Programming Lanuage Handbook

Who?

Android, Amazon, Cloudflare, Discord, Dropbox, …

Microsoft, Google, IBM, Facebook, Huawei, Mozilla, Samsung, Kraken.

Signal, System76, Npm, Nextcloud, Fly.io.

Waarom Rust voor mij

Wat is voor mij belangrijk?

  • Software moet decennia doorontwikkeld kunnen worden.
  • Het Goede Is De Standaard (en het foute is heel moeilijk).
  • Eenvoudiger (niet makkelijker). Hosting, Testen, Delivery.
  • C is te moeilijk - Java te complex.
  • Ik ben Ruby developer (en web, dus Typescript/JavaScript).

Goede Dingen

  • Compiler dwingt to nadenken.
  • Type checker, Borrow checker maakt je beter.
  • Briljante Compiler Errors, Clippy, Type/Borrow voelt als Peer Programmer.
  • Supermakkelijk te deployen.
  • Als het compiled, dan werkt het!
  • Werkt vandaag. Werkt over tien jaar.

Slechte Dingen (voor anderen)

  • Trage Compiler
  • LLVM (en niet GCC)
  • Grote binaries

Slechte Dingen (voor mij)

  • Borrow- en Type checker maakt me traag.
  • Onbekendheid met Result<T,E>, Types, Traits, etc.: Decennia aan OOP uitbannen.
  • Onbekendheid met de enorme stdlib.
  • Heel Veel tooling (en geen apt-get).
  • Enorme build assets (Gigabytes aan caches).

Hello World

Hello World

rustc hello.rs

Play

Hello Functions

Play

Hello Types

  • Wat gaat hier fout?

Play

Hello Borrow Checker

  • Wat gaat hier fout?

Play

Hello Trait

Play

Getting Started

Tools

  • rustup (of apt-get install rustc rust-all)
  • rustc
  • cargo (of apt-get install cargo)
  • clippy, fmt, wasm, test, clean, publish, watch, run

Resources

Deep Dive

Duik in een voorbeeld