SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
The Rust Programming Language
A gentle introduction
Mario A. Santini
Software Developer
Telco field
What is Rust
●
A language for system programming
●
Created by Mozilla (2010~, 2015 v1.0)
●
Multi paradigm, fast, productive and safe
●
“Fearless concurrency”
●
Community Driven and Open Source (MIT lic.)
Why we need it?
●
A replacement of C/C++ (mostly C++)
●
A powerfull type system
●
Zero cost of abstraction
●
Safety with the borrow checker
●
Highly memory controll without a GC
●
Rustup, cargo, rustfmt...
Where you should use it?
●
System code as alternative of C/C++ or where you
should have bindings with such libs
●
System code as an alternative of Java or Go where you
need more precise control of the memory (no GC)
●
Embedded applications
●
Bar metal
●
WebAssembly and more...
The strenghts?
●
Many concurrency bugs are almost impossible!
●
Strong memory handling checks!
●
Enums first class citizens!
●
Explicit error handling!
●
No NULL, null, nil…!
●
Powerfull Pattern Matching!
●
Macro!
...and more features…
●
Dependency handling included (cargo)
●
Documentation included (/// + rustdoc)
●
Linter included
●
Test/Examples/Bench included
●
RLS (rust-analyzer)...
Data Types
Length Signed Unsigned FP Bool Char
8-bit i8 u8 - true/false -
16-bit i16 u16 - - -
32-bit i32 u32 f32 - ‘ ’😻
64-bit i64 u64 f64 - -
128-bit i128 u128 - - -
arch isize usize - - -
Compund Types
tuple
array
Enum Struct Smart Pointer Raw Pointer Generics Trait
Strings Types
str
String
Ownership Rules
●
Each value in Rust has a variable that’s called its
owner
●
There can only be one owner at a time
●
When the owner goes out of scope, the value
will be dropped
Ownership some examples
let my_var = String::from(“Hello Developer Thursday!”);
require_ownership(my_var); // ← move ownership
println!(“My var {}”, my_var); // ← can’t be done!
…
let another_var = String::from(“Hi Developer Thursday!”);
just_borrow_it(&another_var); // ← notice the &
println!(“Another {}”, another_var); // ← now it’s fine!!
…
let mut mutable_var = String::from(“Hi ”);
requiere_mutable_borrow(&mut mutable_var); // this is possible as Rust guarantee there will
// just 1 reference to mutable_var
println!(“A mutable var {}”, mutable_var);
Lifetime
fn just_a_function<’a>(
haystack: &’a str, needle: &’a str
) → Option<&’a str> {
let found = haystack.find(needle)?;
let result = &haystack[found..needle.len()];
Some(reuslt.as_ref())
}
Ownership and structs
struct MyStruct { … }
impl MyStruct {
fn method_that_borrow(&self, …) { … }
fn method_with_mutable_borrow(&mut self, …) { … }
fn method_that_take_ownership(self, …) { … }
}
Multithreading vs Async
Multithreading → good for parallelization
Async → good for concurrecy
Native OS threads
async / .await
+ runtime
(tokio / async-std)
No Green Thread anymore in the language
But how fast it can be?
ripgrep: https://blog.burntsushi.net/ripgrep/
A closer look...
ripgrep: https://blog.burntsushi.net/ripgrep/
Discord Switching From Go to Rust
https://blog.discordapp.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f
Rust for the web
Seed: Rust framework for creating fast and reliable web apps with a structure that follows the Elm
Architecture.
Percy: A modular toolkit for building interactive frontend browser apps with Rust + WebAssembly.
Supports server side rendering.
Yew: Rust / Wasm client web app framework with architecture inspired by Elm and Redux. Yew is
based on stdweb that has a lot of features.
Draco: A Rust library for building client side web applications with WebAssembly modeled after the
Elm architecture and Redux.
Smithy: A front-end framework for writing WebAssembly applications entirely in Rust. Its goal is to
allow you to do so using idiomatic Rust, without giving up any of the compiler's safety guarantees.
squark: Rust frontend framework, for web browser and more with architecture inspired from Elm
and HyperApp.
Dodrio: A fast, bump-allocated virtual DOM library for Rust and WebAssembly.
rust-dominator: Zero cost declarative DOM library using FRP signals for Rust!
WASM
It’s a standard from W3C
Run inside the
browsers
Can be written in any
LLVM supported
language
Safe
Open and debuggable
Efficient and fast
It’s not JavaScript
https://webassembly.org/
WASM: Why Rust?
Rust
C/C++
AssemblyScript
TinyGo
Graalvm (just recently)
WASI
The WebAssembly System Interface
March 2019: Standardizing WASI: A system interface to run WebAssembly
outside the web
https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/
C / Rust
It’s a standard as a subgroup of the W3C
WebAssembly CG
https://wasi.dev/
Bytecode Alliance
Wastime
●
A runtime to run WASM + WASI application on the server
●
Written in Rust!
●
Safe as the application is sandboxed as it runs inside a browser
●
Fast as WASM is a compact and efficient format
●
Lightwight as you just need the runtime
●
Portable the format is standard on every architecture, just need the
runtime!
●
Polyglot wastime can be ported to different languages, and so you can
import librearies written in Rust and compiled in WASM and then
loaded as a Python module!
Krustlet
●
A kubelet rewritten in Rust, that runs WASM
programs
●
No need of containers images anymore
●
No need of an OS anymore!
●
And Krustlet can run without any OS too!!
Resources
●
Rust lang official site: https://www.rust-lang.org/
●
Crates.io: https://crates.io/
●
Rustup: https://rustup.rs/
●
Cargo: https://doc.rust-lang.org/cargo/
●
Rust book: https://doc.rust-lang.org/book/
●
Rustonomicon: https://doc.rust-lang.org/nomicon/
●
Rust by examples: https://doc.rust-lang.org/rust-by-example/
●
Rust cheat sheet: https://cheats.rs/
●
Rust users community: https://users.rust-lang.org/
●
Rust youtube channel: https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA
●
Rust github: https://github.com/rust-lang/rust
●
Discord Rust streames channel: https://discord.com/channels/234804991343198210/749624598860922890
●
Rust playground: https://play.rust-lang.org/
●
Discord move to Rust: https://blog.discordapp.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f
●
WebAssembly: https://webassembly.org/
●
WASI: https://wasi.dev
●
Krustlet: https://github.com/deislabs/krustlet
●
Bytecode Alliance https://bytecodealliance.org/
Thanks!

Weitere ähnliche Inhalte

Was ist angesagt?

Rust-lang
Rust-langRust-lang

Was ist angesagt? (20)

Introduction to rust: a low-level language with high-level abstractions
Introduction to rust: a low-level language with high-level abstractionsIntroduction to rust: a low-level language with high-level abstractions
Introduction to rust: a low-level language with high-level abstractions
 
Rust system programming language
Rust system programming languageRust system programming language
Rust system programming language
 
Introduction to Rust
Introduction to RustIntroduction to Rust
Introduction to Rust
 
Rust
RustRust
Rust
 
Rust programming-language
Rust programming-languageRust programming-language
Rust programming-language
 
Rust vs C++
Rust vs C++Rust vs C++
Rust vs C++
 
Rust-lang
Rust-langRust-lang
Rust-lang
 
Rust
RustRust
Rust
 
Rust: Systems Programming for Everyone
Rust: Systems Programming for EveryoneRust: Systems Programming for Everyone
Rust: Systems Programming for Everyone
 
Golang and Eco-System Introduction / Overview
Golang and Eco-System Introduction / OverviewGolang and Eco-System Introduction / Overview
Golang and Eco-System Introduction / Overview
 
Why rust?
Why rust?Why rust?
Why rust?
 
Embedded Rust on IoT devices
Embedded Rust on IoT devicesEmbedded Rust on IoT devices
Embedded Rust on IoT devices
 
Introduce to Rust-A Powerful System Language
Introduce to Rust-A Powerful System LanguageIntroduce to Rust-A Powerful System Language
Introduce to Rust-A Powerful System Language
 
Introduction to memory order consume
Introduction to memory order consumeIntroduction to memory order consume
Introduction to memory order consume
 
Building fast interpreters in Rust
Building fast interpreters in RustBuilding fast interpreters in Rust
Building fast interpreters in Rust
 
LSFMM 2019 BPF Observability
LSFMM 2019 BPF ObservabilityLSFMM 2019 BPF Observability
LSFMM 2019 BPF Observability
 
Is Rust Programming ready for embedded development?
Is Rust Programming ready for embedded development?Is Rust Programming ready for embedded development?
Is Rust Programming ready for embedded development?
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
 
Prometheus Storage
Prometheus StoragePrometheus Storage
Prometheus Storage
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
 

Ähnlich wie The Rust Programming Language

Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
george.james
 
Legacy of Void*
Legacy of Void*Legacy of Void*
Legacy of Void*
Adam Crain
 

Ähnlich wie The Rust Programming Language (20)

Rust Hack
Rust HackRust Hack
Rust Hack
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
 
Legacy of Void*
Legacy of Void*Legacy of Void*
Legacy of Void*
 
Us 17-krug-hacking-severless-runtimes
Us 17-krug-hacking-severless-runtimesUs 17-krug-hacking-severless-runtimes
Us 17-krug-hacking-severless-runtimes
 
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
 
Web (dis)assembly
Web (dis)assemblyWeb (dis)assembly
Web (dis)assembly
 
Introduction to Rust (Presentation).pptx
Introduction to Rust (Presentation).pptxIntroduction to Rust (Presentation).pptx
Introduction to Rust (Presentation).pptx
 
TypeScript, Dart, CoffeeScript and JavaScript Comparison
TypeScript, Dart, CoffeeScript and JavaScript ComparisonTypeScript, Dart, CoffeeScript and JavaScript Comparison
TypeScript, Dart, CoffeeScript and JavaScript Comparison
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than You
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to production
 
JOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to ProductionJOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to Production
 
A Slice Of Rust - A quick look at the Rust programming language
A Slice Of Rust - A quick look at the Rust programming languageA Slice Of Rust - A quick look at the Rust programming language
A Slice Of Rust - A quick look at the Rust programming language
 
Node.js Course 2 of 2 - Advanced techniques
Node.js Course 2 of 2 - Advanced techniquesNode.js Course 2 of 2 - Advanced techniques
Node.js Course 2 of 2 - Advanced techniques
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
 
Jinx - Malware 2.0
Jinx - Malware 2.0Jinx - Malware 2.0
Jinx - Malware 2.0
 
Web assembly with go
Web assembly with goWeb assembly with go
Web assembly with go
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the Cloud
 
Raising the Bar on Robotics Code Quality
Raising the Bar on Robotics Code QualityRaising the Bar on Robotics Code Quality
Raising the Bar on Robotics Code Quality
 

Mehr von Mario Alexandro Santini

Mehr von Mario Alexandro Santini (9)

A Safe Dock for our Programs
A Safe Dock for our ProgramsA Safe Dock for our Programs
A Safe Dock for our Programs
 
Rust With async / .await
Rust With async / .awaitRust With async / .await
Rust With async / .await
 
Rust_Threads.pdf
Rust_Threads.pdfRust_Threads.pdf
Rust_Threads.pdf
 
The_Borrow_Checker.pdf
The_Borrow_Checker.pdfThe_Borrow_Checker.pdf
The_Borrow_Checker.pdf
 
Vuejs
VuejsVuejs
Vuejs
 
Introduction to typescript
Introduction to typescriptIntroduction to typescript
Introduction to typescript
 
The myth of the small script
The myth of the small scriptThe myth of the small script
The myth of the small script
 
Docker jug taa
Docker   jug taaDocker   jug taa
Docker jug taa
 
Lambda architecture
Lambda architectureLambda architecture
Lambda architecture
 

Kürzlich hochgeladen

%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 

Kürzlich hochgeladen (20)

Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

The Rust Programming Language

  • 1. The Rust Programming Language A gentle introduction
  • 2. Mario A. Santini Software Developer Telco field
  • 3. What is Rust ● A language for system programming ● Created by Mozilla (2010~, 2015 v1.0) ● Multi paradigm, fast, productive and safe ● “Fearless concurrency” ● Community Driven and Open Source (MIT lic.)
  • 4. Why we need it? ● A replacement of C/C++ (mostly C++) ● A powerfull type system ● Zero cost of abstraction ● Safety with the borrow checker ● Highly memory controll without a GC ● Rustup, cargo, rustfmt...
  • 5. Where you should use it? ● System code as alternative of C/C++ or where you should have bindings with such libs ● System code as an alternative of Java or Go where you need more precise control of the memory (no GC) ● Embedded applications ● Bar metal ● WebAssembly and more...
  • 6. The strenghts? ● Many concurrency bugs are almost impossible! ● Strong memory handling checks! ● Enums first class citizens! ● Explicit error handling! ● No NULL, null, nil…! ● Powerfull Pattern Matching! ● Macro!
  • 7. ...and more features… ● Dependency handling included (cargo) ● Documentation included (/// + rustdoc) ● Linter included ● Test/Examples/Bench included ● RLS (rust-analyzer)...
  • 8. Data Types Length Signed Unsigned FP Bool Char 8-bit i8 u8 - true/false - 16-bit i16 u16 - - - 32-bit i32 u32 f32 - ‘ ’😻 64-bit i64 u64 f64 - - 128-bit i128 u128 - - - arch isize usize - - - Compund Types tuple array Enum Struct Smart Pointer Raw Pointer Generics Trait Strings Types str String
  • 9. Ownership Rules ● Each value in Rust has a variable that’s called its owner ● There can only be one owner at a time ● When the owner goes out of scope, the value will be dropped
  • 10. Ownership some examples let my_var = String::from(“Hello Developer Thursday!”); require_ownership(my_var); // ← move ownership println!(“My var {}”, my_var); // ← can’t be done! … let another_var = String::from(“Hi Developer Thursday!”); just_borrow_it(&another_var); // ← notice the & println!(“Another {}”, another_var); // ← now it’s fine!! … let mut mutable_var = String::from(“Hi ”); requiere_mutable_borrow(&mut mutable_var); // this is possible as Rust guarantee there will // just 1 reference to mutable_var println!(“A mutable var {}”, mutable_var);
  • 11. Lifetime fn just_a_function<’a>( haystack: &’a str, needle: &’a str ) → Option<&’a str> { let found = haystack.find(needle)?; let result = &haystack[found..needle.len()]; Some(reuslt.as_ref()) }
  • 12. Ownership and structs struct MyStruct { … } impl MyStruct { fn method_that_borrow(&self, …) { … } fn method_with_mutable_borrow(&mut self, …) { … } fn method_that_take_ownership(self, …) { … } }
  • 13. Multithreading vs Async Multithreading → good for parallelization Async → good for concurrecy Native OS threads async / .await + runtime (tokio / async-std) No Green Thread anymore in the language
  • 14. But how fast it can be? ripgrep: https://blog.burntsushi.net/ripgrep/
  • 15. A closer look... ripgrep: https://blog.burntsushi.net/ripgrep/
  • 16. Discord Switching From Go to Rust https://blog.discordapp.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f
  • 17. Rust for the web Seed: Rust framework for creating fast and reliable web apps with a structure that follows the Elm Architecture. Percy: A modular toolkit for building interactive frontend browser apps with Rust + WebAssembly. Supports server side rendering. Yew: Rust / Wasm client web app framework with architecture inspired by Elm and Redux. Yew is based on stdweb that has a lot of features. Draco: A Rust library for building client side web applications with WebAssembly modeled after the Elm architecture and Redux. Smithy: A front-end framework for writing WebAssembly applications entirely in Rust. Its goal is to allow you to do so using idiomatic Rust, without giving up any of the compiler's safety guarantees. squark: Rust frontend framework, for web browser and more with architecture inspired from Elm and HyperApp. Dodrio: A fast, bump-allocated virtual DOM library for Rust and WebAssembly. rust-dominator: Zero cost declarative DOM library using FRP signals for Rust!
  • 18. WASM It’s a standard from W3C Run inside the browsers Can be written in any LLVM supported language Safe Open and debuggable Efficient and fast It’s not JavaScript https://webassembly.org/
  • 20. WASI The WebAssembly System Interface March 2019: Standardizing WASI: A system interface to run WebAssembly outside the web https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ C / Rust It’s a standard as a subgroup of the W3C WebAssembly CG https://wasi.dev/
  • 22. Wastime ● A runtime to run WASM + WASI application on the server ● Written in Rust! ● Safe as the application is sandboxed as it runs inside a browser ● Fast as WASM is a compact and efficient format ● Lightwight as you just need the runtime ● Portable the format is standard on every architecture, just need the runtime! ● Polyglot wastime can be ported to different languages, and so you can import librearies written in Rust and compiled in WASM and then loaded as a Python module!
  • 23. Krustlet ● A kubelet rewritten in Rust, that runs WASM programs ● No need of containers images anymore ● No need of an OS anymore! ● And Krustlet can run without any OS too!!
  • 24. Resources ● Rust lang official site: https://www.rust-lang.org/ ● Crates.io: https://crates.io/ ● Rustup: https://rustup.rs/ ● Cargo: https://doc.rust-lang.org/cargo/ ● Rust book: https://doc.rust-lang.org/book/ ● Rustonomicon: https://doc.rust-lang.org/nomicon/ ● Rust by examples: https://doc.rust-lang.org/rust-by-example/ ● Rust cheat sheet: https://cheats.rs/ ● Rust users community: https://users.rust-lang.org/ ● Rust youtube channel: https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA ● Rust github: https://github.com/rust-lang/rust ● Discord Rust streames channel: https://discord.com/channels/234804991343198210/749624598860922890 ● Rust playground: https://play.rust-lang.org/ ● Discord move to Rust: https://blog.discordapp.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f ● WebAssembly: https://webassembly.org/ ● WASI: https://wasi.dev ● Krustlet: https://github.com/deislabs/krustlet ● Bytecode Alliance https://bytecodealliance.org/