This Week in Rust - Issue 347
Episode Page with Show NotesNell Shamrell-Harrington: Hello and welcome to another episode of This Week in Rust on the Rustacean Station! As always, I’m Nell Shamrell-Harrington, lead editor of This Week in Rust and also a Sr. Staff Research Engineer on the Rust team at Mozilla.
This episode covers This Week in Rust issue #347, published on July 14, 2020.
Let’s dive into this week’s Rust news.
A new version of Rustup is out — version 1.22.1. Rustup is the recommended tool to install Rust. This version corrects a regression in 1.22.0 that affected the ability to use rustup behind a proxy. The Rustup working group has written up the details on the Rust blog.
Also on the Rust blog, Niko Matsakis — a Rust core team member — wrote up a recent discussion on behalf of the lang team. This discussion addressed that the lang team has never had a particularly clear path to membership. The team covered possible expectations for members of the team and a potential path to membership. They will be writing up more on both of these topics in the future.
Longtime Rust community member and moderator Burntsushi wrote up an excellent summary of their thoughts on moderating the Rust community. I can say from experience that moderating a community — any community — is very hard and can be very draining. BurntSushi highlights that it is extremely difficult to moderate individual comments on pull requests, reddit posts, etc. in a community as large and vibrant as Rust. This is why those discussions sometimes must be locked. Overall, it is a very informative look behind the scenes of managing the Rust community, particularly when it comes to Rust governance.
Before I move on, I want to make sure to personally thank all our moderators who spend so much time maintaining a healthy Rust community. It’s an extremely difficult job. I encourage every one of our listeners to also reach out to a mod personally and say “thank you for what you do.”
Nikita Baksalyar has written an article titled “The Soul of a New Debugger.” In it, they explore why developers are reluctant to use interactive debuggers and prefer using print statements instead. This is because prints are simple and very effective — you don’t need any external tools, everything you need is already there. You just add a few statements and run your program again. While this works well in languages like Python, JavaScript, or Ruby, there is more friction with compiled languages like C++ and Rust. Every recompilation step costs time — especially with larger code bases with many dependencies. Interactive debuggers were meant to solve these problems. However, widely-used interactive debuggers have problems of their own. In particular, debuggers are perceived mostly as a tool to help you find and fix bugs in your code, but not as much as a tool of discovery and exploration. To respond to this, Nikita proposes the idea of a modern debugger for modern languages like Rust, create. Read the post for more details.
Niko Matsakis has continued his excellent Async Interview series. In the latest post, he interviews Stjepan Glavina, creator of the crate called smol. Smol is an async runtime, similar to tokio or async-std, but with a distinctly different philosophy. It aims to be much simpler and smaller than other async runtimes. It tries to get asynchrony by wrapping and adapting existing synchronous components — either through delegating to a thread pool or using a wrapper. This means that Rust users don’t have to choose between existing, well established synchronous libraries or newer, less mature async libraries, smol lets you adapt existing sync libraries into the async world.
If you are creating a Rust project that needs a message broker, check out a new post from Mario — also known as zupzup on GitHub. In their post “Using RabbitMQ in Rust,” they take the reader through how to integrate a Rust web application using warp with RabbitMQ. They also use the lapin library together with the deadpool library for pooling connections.
Both Rust Analyzer and IntelliJ Rust have posted changelogs this week. Rust Analyzer and IntelliJ Rust are Rust language plugins for integrated development environments, or IDEs. The difference is that IntelliJ Rust focuses on IntelliJ-based IDEs, while Rust Analyzer focuses on IDEs like VS Code, Emacs, and Vim. Both are extensively used by the Rust community, checkout the changelogs for all the latest updates.
One of my favorite things to publish in This Week in Rust is links to other, more specialized Rust newsletters. Philipp Oppermann has published “This Month in Rust OSDev” for the month of June. It includes an overview of notable changes in the Rust OS development ecosystem.
Here at This Week in Rust we also love getting the opportunity to reach beyond our core English speaking audience. Emanuel Goette has written a post in Spanish on whether Rust is Object Oriented.
Firo Solutions has published a podcast called “Fuzzing Rust with Shnatsel”, where they interview Sergey Davidoff — who is better known as Shnatsel on GitHub. Fuzzing, as covered before on this podcast, is a way of finding bugs in a program by feeding it automated generated data. Give the podcast a listen for more information, as well as some recommendations for fuzzing tools you can use with your own Rust code.
We are featuring several videos in this week’s issue. The first I’d like to highlight is by Danlogs on Youtube. Danlogs is an intern at Microsoft and has started a new series on solving problems from Leetcode with Rust. The first of these involves solving the Two Sum Problem.
Additionally, Alexsander Heintz has posted a video intro to Rust and WebAssembly. If you are curious what WebAssembly is, how it relates to Rust, and what it can do for you, make sure to give the video a watch.
Moving onto RFCs. One new RFC was proposed this week, titled “Opt-in Stable Trait VTables”. This RFC proposes adding a new attribute to the Rust language called stable_vtable. This RFC is related to how Rust interacts with code written in other languages.. If this RFC is adopted, a user could define a trait that encapsulates runtime behavior, then obtain a pointer of some kind to a foreign implementation of that trait. Check out the RFC for the full discussion.
No RFCs are in Final Comment Period and no RFCs were approved this week.
On the Rust job front, LogDNA is hiring for two Rust positions — a Senior Backend Software engineer and a Senior Security Engineer. Both positions are open to remote candidates in the U.S. Additionally, Dreamsolution is hiring a Rust/Python engineer in the Netherlands.
In upcoming Rust events, there are online meetups being held in Dallas, Texas and Turin, Italy. In person meetups are currently scheduled in Vancouver, British Columbia and Durham, North Carolina.
Additionally, the Rusty Days Virtual Rust Conference will be held from July 27 through August 8. It includes 8 speakers presenting over 5 days. Speakers include Steve Klabnick, Luca Palmieri, Jan-Erik Rediger, myself, and more. I will personally be presenting “The Rust Borrow Checker - A Deep Dive.” Hope to see you there!
And that’s all for this podcast. Make sure to read the newsletter for even more great Rust content.
This Week in Rust is edited by myself, Andre Bogus, and Colton Donnelly. This week’s contributors included, using their GitHub usernames Nnethercote, pickfire, gterzian,ericseppanen, hmble, and aDotInTheVoid,
As always, if you write a great article on Rust or happen to see one — please submit it to This Week in Rust by opening a pull request on our GitHub repo. Have a wonderful week everyone and please take care!