e017: Point me where I need to go

August 08, 2016 17:06 7.76 MB Downloads: 0

A deep dive on references and pointers in Rust. Notes By listener request, today we look at the syntax and semantics of referencing and dereferencing and the corresponding & and * operators. As was the case with e016, the code samples have little to say in their documentation; reading the code will be necessary for seeing the ideas. Links “Inside the Fastest Font Renderer in the World” The Rust Platform: original blog post Rust internals discussion Reddit discussion Hacker News discussion follow-up Reddit discussion Cargo vendoring support in nightly MIR on by default in nightly References and dereferencing: The Rust Programming Language: References and Borrowing Deref coercions Rust by Example: Flow Control: pointers/ref The Rust Reference: Unary Operator Expressions Pointer Types Sponsors Aleksey Pirogov Cameron Mochrie Cass Costello Chris Palmer Daniel Collin Derek Morr Doug Reeves Eric Fulmer Hamza Sheikh Jakub “Limeth” Hlusička Jared Smith Keith Gray Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo Raph Levien reddraggone9 Ryan Ollos Steven Murawski Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

e016: RefCells and code smells

July 23, 2016 18:52 7.96 MB Downloads: 0

Digging deeper on smart pointers and mutability with Cell and RefCell. Notes What are the Cell and RefCell types, and when should we use them? Today, we follow up both the detailed discussion of smart pointers in e015 and the closely related discussion in Interview 2 with Raph Levien, and look at two types you need to have a good idea how to deal with if you want to use these smart pointer types more ergonomically—that is, how to use them without feeling like you’re beating your head against a wall! Links Rust 1.10 blog post full release notes cdylib RFC: text | discussion implementation rustup 0.3.0 release Integer32 (Carol Nichols’ and Jake Goulding’s new Rust consultancy) announcement blog post reddit discussion IntelliJ Rust reddit discussion Tango: source | talk Cell and RefCell: Cell Types in The Rust Programming Language Standard library: std::cell module docs (detailed explanation, complementary to the book) Cell<T> docs (at std::cell::Cell) RefCell<T> docs (at stc::cell::RefCell) Sponsors Aleksey Pirogov Chris Palmer Daniel Collin Derek Morr Doug Reeves Eric Fulmer Hamza Sheikh Jakub “Limeth” Hlusička Keith Gray Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Michael Clayton Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo Raph Levien reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Interview 2::Part 2 – Raph Levien

July 04, 2016 19:33 8.22 MB Downloads: 0

Raph Levien on Rust’s current strengths and places it can improve Notes Chris chats with Raph Levien about what inspired him to build a text editor, as well as about where the rough edges in the Rust development story are today, and how we might improve them going forward. Links Rust/Ruby bridge: Helix blog post GitHub Rust Bridge project Ropes original paper Rust implementation C++ implementation Yehuda Katz on Code Newbie Creating Ember JS - Part I Creating Ember JS - Part II Rust and Swift (xi): Hopes for the next generation of systems programming. Sponsors Aleksey Pirogov Chris Palmer Daniel Collin Derek Morr Doug Reeves Hamza Sheikh Keith Gray Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo Raph Levien reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Interview 2::Part 1 – Raph Levien

June 24, 2016 28:17 11.86 MB Downloads: 0

Raph Levien on using Rust to build the Xi editor Notes Chris chats with Raph Levien about his background in software development, what attracted him to Rust, and how he’s using Rust to build the Xi Editor, a project which aims to be the fastest text editor out there, with native user interfaces and a Rust text engine. Links Past work: GIMP GTK GhostScript Google Web Fonts Current projects: font-rs pulldown-cmark Xi Editor fuzz testing sanitizers FreeType HarfBuzz ICU Ropes Wikipedia summary original paper “log n operation”, or O(log n) Big O notation Rust: [Arc] [RefCell] [Borrow] [AsRef] Rust libraries [Crossbeam] [Rayon] Unix philosophy The Unix philosophy emphasizes building simple, short, clear, modular, and extensible code that can be easily maintained and repurposed by developers other than its creators. The Unix philosophy favors composability as opposed to monolithic design. Sponsors Aleksey Pirogov Chris Palmer Daniel Collin Derek Morr Doug Reeves Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo Raph Levien reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

e015: Not dumb pointers

June 17, 2016 20:03 8.33 MB Downloads: 0

Box, String, Vec, Rc, and Arc have this in common: they’re not dumb. This episode, we take a close look at smart pointer types—from a few we’ve already talked about, like Box, Vec, and String, to some new ones, like Rc and Arc. What smart pointers are, and what makes them ‘smart’. Why we want or need smart pointers. A bit about Box. A lot more about Rc and Arc. Links RustConf Rust Belt Rust Conference sessions Rusty Radio feed Rust Exercism track All exercism language tracks Sponsors Aleksey Pirogov Chris Palmer Daniel Collin Derek Morr Doug Reeves Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo Raph Levien reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

News 1: One year and counting

May 31, 2016 26:16 10.63 MB Downloads: 0

A year in, Rust is changing fast but still stable. Links Rust 1.9 blog post release notes LLVM Projects built with LLVM Wikipedia discussion MIR blog post play.rust-lang.org – note the MIR button! Two enhancements enabled by MIR: Non-zeroing dynamic drop RFC pull request and discussion Issue 811: “Non-lexical borrow scopes and better treatment of nested method calls” Cargo blog post rustup blog post install from rustup.rs Sponsors Aleksey Pirogov Chris Palmer Daniel Collin Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Bonus 5: Better than open-source contributions

May 09, 2016 11:07 4.61 MB Downloads: 0

Some things matter more than contributing to open-source software in your free time. A lot more. It’s trendy to ask for open-source work as evidence of your interest in tech and commitment to software development. Trendy and completely wrong. Companies should not demand open-source contributions from their employees, and beyond that, should learn to recognize that profit is not the most valuable thing in the world. People are. Links Xi editor Rust survey Expecting people to do open-source work Python Testing 18: Testing in Startups and Hiring Software Engineers with Joe Stump Tweet about it by Joe Stump Sponsors Aleksey Pirogov Chris Palmer Daniel Collin Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

e014: Stringing things along

April 25, 2016 18:58 7.92 MB Downloads: 0

Strings &strs and Vecs and slices (and Unicode) – oh, my! Notes This episode, I take a deep dive on strings in Rust, looking at the differences between String and &str, discussing Unicode a bit, and then expanding the discussion to think about how these types relate to the types they’re built on (like Vec). Links Strings: The Rust Book Rust by Example str docs: module primitive type String module type definition Dereferencing coercions std::ops::Deref Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Flattr Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Bonus 4: We can have nice things

April 19, 2016 10:17 4.24 MB Downloads: 0

Just how good Rust is, and how you can learn it even if you’re busy. Notes Sometimes life goes crazy and I don’t have time to do all the technical writing required for a full episode, but I can’t get Rust off my mind, so I record an episode like this one. Where I talk a bit about how versatile Rust is and suggest some surprising ways you might be able to use it. Links Rust 1.8 blog post Fake build tool in F♯ HackerNews on Rust 1.8 Someone using it for personal projects Using it in place of scripting languages “Feels like Python, runs like C” Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

e013: Staying alive

April 04, 2016 17:40 7.51 MB Downloads: 0

Reasoning about and using lifetimes in Rust (and why we need them) Notes Lifetimes are our way of reasoning about how long a given piece of data is available and safe to use in Rust. The reason we don't have the dangling pointer problem is that we do have lifetimes instead. They're not magic, they're just a bit of semantics and syntax that let us specify the rules for how long any given item lives, and how long references to data must be valid. Links Diesel Tutorial API docs Mio, an I/O library Getting Started API Docs Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Hertleif Ralph Giles ("rillian") Ralph "FriarTech" Loizzo reddraggone9 Ryan Ollos Vesa Kaihlavirta William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor Patreon Venmo Dwolla Cash.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

e012: I'm not familiar with that expression

March 21, 2016 16:41 7.21 MB Downloads: 0

What it means to be an expression-oriented language, and how that works out in Rust. Notes Rust is an expression-oriented language. What does that mean, and how does it play out in Rust? We look at if and match blocks, discuss looping constructs, and examine functions, and then widen out to discuss how having an expression-oriented language can change the way we think about programming. Links Redox Servo alpha announcement WebRender Wired article on Dropbox Rust documentation on expression-oriented-ness: Rust Book Rust by Example Rust Reference Removing Rust ternary Digits of pi necessary for astronavigation Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo reddraggone9 Ryan Ollos William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

e011: Once Upon a Type

March 08, 2016 17:51 8.04 MB Downloads: 0

Type systems: strong vs. weak, dynamic vs. static, and degrees of expressivity. Notes Talking about type systems! A broad and wide-ranging discussion about type systems in general, with specific examples from languages like PHP, JavaScript, Python, C, C++, Java, C♯, Haskell, and Rust! What is a type system? What are the kinds of things we get out of type systems? What are the tradeoffs with different type systems? What is Rust’s type system like? What is especially attractive about Rust’s type system? A comment on the C integer/character string addition example: what’s actually happening there is that the character string is an array “under the covers,” and as such has an address. C silently switches to using the memory address, which is of course just an integer, when you try to add the two together. As I said on the show: the result is nonsense (unless you’re using this as a way of operating on memory addresses), but it’s compileable nonsense. In a stricter and stronger type system, memory addresses and normal numbers shouldn’t be addable! Links Rust 1.7 released HashMap changes Introduction to Type Theory Visualizing Rust’s type-system The Many Kinds of Code Reuse in Rust Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo reddraggone9 Ryan Ollos William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Contact New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Interview 1::Part 2 – Sean Griffin

February 25, 2016 22:14 9.75 MB Downloads: 0

Sean Griffin on type systems and hopes for Rust's future Notes Chris chats with Sean Griffin about the tradeoffs between mental overhead and type safety, the expressiveness of different type systems, and some of the places where Rust currently falls down. Corrigenda Sean noted he could be wrong about IEnumerable<T> not having a Sum method in C♯, and post-show research indicated that he was (it's possible it was added after he had stopped doing .NET work, of course). See the documentation for details on how IEnumerable<T>.Sum it behaves in C♯ if you're curious. As a related note, I (Chris) have done a little bit of digging on C♯ in the interval and it's fair to say that while a lot of the "ceremony" involved in writing C♯ is annoying, it's much more than just a "slightly nicer Java", and indeed is a much nicer language than my previous, limited exposure had led me to believe. It's no Rust or F♯, but its type system is substantially more capable than Java's. Links fmap Discussion of fmap with Optional in Swift In Haskell Rust: Trait objects Specialization RFC Implementation Diesel Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Leif Arne Storset Luca Schmid Micael Bergeron Ralph Giles ("rillian") reddraggone9 Ryan Ollos William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Interview 1::Part 1 – Sean Griffin

February 15, 2016 24:50 11.14 MB Downloads: 0

Sean Griffin on Rust, ORMs, and Web Frameworks Notes Chris chats with Sean Griffin about his programming background and initial experience with Rust, Rust's appeal, and what he's doing with Diesel and some of his plans for a new web framework in Rust. Links Ruby on Rails Active Record Diesel GitHub Gitter The Bike Shed episodes which include talk of Rust and Diesel 51: Is Sim City Still Running (with Steve Klabnik) 49: A More Practical Haskell 48: Is Everyone Trying Their Best? 46: Don't Breath, Save the Planet 44: It Won't Crash... It Might Crash 39: Okay With Instability 32: Bug for Bug Compatibility 31: Oxidizing an ORM 27: I've Got 29.97 Problems (and codecs are some) 23: Why Did They Call It Rust? Maybe Haskell Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Leif Arne Storset Luca Schmid Micael Bergeron Ralph Giles ("rillian") reddraggone9 Ryan Ollos William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean Email: hello@newrustacean.com Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Bonus 3: Building as a community

January 31, 2016 12:03 5.2 MB Downloads: 0

Community is one of the most important parts of a programming language community, or indeed any technical community. In this episode, I talk a bit about what happens when you don't have a good community, how Rust's community has done well so far, and then how to keep building a good community and how to build good things as a community. Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Luca Schmid Micael Bergeron Ralph Giles (“rillian”) reddraggone9 William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: hello@newrustacean.com Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho