Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by...
Transcript of Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by...
![Page 1: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/1.jpg)
Next-Generation Programming: Rust and Elm
@rtfeldman
![Page 2: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/2.jpg)
modern
non-mainstream
pushing boundaries
significantly different
Rust and Elm
![Page 3: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/3.jpg)
alternative to JavaScript
alternative to C++
![Page 4: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/4.jpg)
C interop
compiles to binaries (no garbage collector)
packages, editor plugins, learning materials
![Page 5: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/5.jpg)
Go: simple, quick to learn, fast compilation
often compared to Go
Rust: complex, lots to learn, ~slow compilation
![Page 6: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/6.jpg)
elm
JavaScript interopfast, friendly compiler, great error messages
packages, editor plugins, learning materials
A delightful languagefor reliable webapps.
![Page 7: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/7.jpg)
elm
frameworks: write JavaScript or TypeScriptoften compared to JS frameworks (React, etc.)
Elm: use a different programming language
A delightful languagefor reliable webapps.
![Page 8: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/8.jpg)
Rust Elm
battle tested
![Page 9: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/9.jpg)
Rust: 2010 single dev → 2020 “radical openness”
Elm: 2012 single dev → 2020 core team w/ BDFL
RustConf 2018 Keynote youtu.be/J9OFQm8Qf1I“Organizational Debt” boats.gitlab.io/blog/post/rust-2019
“What is Success?” youtu.be/uGlzRt-FYto“The Hard Parts of Open Source” youtu.be/o_4EX4dPppA
several full-time paid developers, community engineers, etc.large, complex language, frequent compiler releases
one full-time paid developer, the rest all volunteerssmall, simple language, infrequent compiler releases
![Page 10: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/10.jpg)
elm-conf since 2016Elm Europe since 2017Oslo Elm Days since 2017Elm in the Spring since 2018Elm Japan (announced for 2020, canceled due to COVID-19)
Rust conferences
Elm conferences
RustConf since 2016Rust Belt Rust since 2016RustFest since 2016RustCon Asia since 2019Rust LATAM since 2019
![Page 11: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/11.jpg)
Rust Elm
reliability
![Page 12: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/12.jpg)
static type-checkingsound type systemno “any” typeno “billion dollar mistake” (null)immutable by default
Rust Elm
![Page 13: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/13.jpg)
Rust: “Memory safety, no data races”
![Page 14: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/14.jpg)
Elm: “No runtime exceptions”
not zero,but negligible
![Page 15: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/15.jpg)
Elm Rust
runtime performance
![Page 18: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/18.jpg)
compiled bundle size (KB) forthe RealWorld application
source: bit.ly/2KzCWpE
![Page 19: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/19.jpg)
Elm Rust
helpful compiler
![Page 20: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/20.jpg)
![Page 21: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/21.jpg)
$ rustc --explain E0200Unsafe traits must have unsafe implementations. This error occurs when animplementation for an unsafe trait isn't marked as unsafe. This may be resolvedby marking the unsafe implementation as unsafe.
struct Foo;
unsafe trait Bar { }
// this won't compile because Bar is unsafe and impl isn't unsafeimpl Bar for Foo { }// this will compileunsafe impl Bar for Foo { }
![Page 22: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/22.jpg)
“If it compiles, it usually works.”
![Page 23: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/23.jpg)
rust-lang.org
doc.rust-lang.org/book
users.rust-lang.org
elm-lang.org
guide.elm-lang.org
discourse.elm-lang.org
Rust Elm
![Page 24: Next-Generation Programming: Rust and Elm · no “billion dollar mistake” (null) immutable by default Rust Elm. Rust: “Memory safety, no data races” ...](https://reader033.fdocuments.in/reader033/viewer/2022050209/5f5bf5f9f394cf75f2043860/html5/thumbnails/24.jpg)
@rtfeldman