I’m in a HPC (high performance computing) course and having heard about Rust’s safe threading everywhere (, ) I’ve convinced my teacher to let me make a presentation on how Rust can help shape the future of HPC. I, however, am not versed in Rust and thus I’ve been looking for more information.
I’ve read parts of the book (TRPL), but it’s quite large, and I don’t know if it will have enough formal explanations about the thread safety of the language.
Therefore, I ask: where can I find formal explanations about the thread safety of Rust? Specifically, I’m looking for a demonstration on how data races are impossible. That’s a big topic in and of itself, so that leaves me more than happy. Should I finish reading the book? Or should I look elsewhere?
A good search phrase is “rust fearless concurrency”. Here are a few good links that I saw from a quick glance:
I wrote this blog post comparing how data races are possible in concurrent Ruby code and what happens if you try to do the same thing in Rust. Note that I wrote the Rust code before Rust 1.0; updating it to modern Rust is left as an exercise for the reader
Awesome! More HPC'ers knowing about rust can only be a good thing!
While not about your specific topic of threading, I hope you can maybe find a few useful tidbits in these "general" threads about presenting Rust, to get a feel for how others did it before you.
Specifically valuable from there, for sheer advertising success:
Ashley Williams - How I Convinced the World's Largest Package Manager to Use Rust, and So Can You!
Thanks, y’all! I’ve read some of your links and they’re pretty great
This Thursday I’m making the presentation. Wish me luck!
(PS: I’ll upload it afterwards. It’ll most likely be in Spanish (I live in Chile), but nevertheless! You’ve helped me, so I’ll share it )
Everyone: it went really well!
Here are the slides: https://docs.google.com/presentation/d/14LMc2CxL9Eos_ASC7Rt-RRhAQ5Pe0nmDFbx5ZztYvWk/edit?usp=sharing
The objective was to convince them that Rust is a well-thought idea that can (and probably will) help shape the future of systems and high performance computing. I didn’t go into the nitty-gritty details of ownership/borrowing/(threading primitives) or anything like that, because I only had 15 minutes.
I did convince them that Rust interops really well with C and C++ and can be used to extend the existing codebases without affecting performance. And I also convinced them that Rust has no data races . I also showed how easy it is to have undefined behavior in C++, and how the compiler in Rust will see that instead and help you avoid it.
At least 3 or 4 people asked questions, which in a course of 10 is not bad I think one or two might actually check out Rust.
For the two Demo sections (Demo 0&1 and then Demo 2), I used these:
- Demo 0: I showed the C
malloc but w/o
free v/s the same in Rust (which of course, frees the memory), from http://words.steveklabnik.com/a-new-introduction-to-rust
- Demo 1: from the same post, I showed the C++
main that crashed after trying to read from an invalidated pointer, v/s the same in Rust which triggers a compile-time error.
- Demo 2: I prepared the Rayon demos, but I was just short in time. Still, I managed to explain how Rayon allows Data Parallelism v/s how OpenMP does it, and I was pretty satisfied
Thanks, y’all. I had a great time, and I learned a lot.
rustup was ridiculously easy to set up and use. I’m so grateful for good tools . I think it’s the easiest language I’ve ever tried to set up in my machine!
PPS: the slides ended up being in spanglish I guess that’s how I can better express myself. I think half of the time in English.
Nice going! Thanks for sharing back!
I browsed through them, and even though I don’t speak Spanish, I could follow enough to recognise the build-up of your argument.
Nicely done! I especially appreciate your argument on slide 9 that we shouldn’t throw away the thousands of hours invested in C/C++ infrastructure. Great examples! The Rust Evangelism Strike Force will certainly appreciate that! (No sarcasm, they advocate only well-considered “rewrite-it-in-Rust”)