this-week-in-rust/content/2020-08-04-this-week-in-rus...

206 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Title: This Week in Rust 350
Number: 350
Date: 2020-08-04
Category: This Week in Rust
Hello and welcome to another issue of *This Week in Rust*!
[Rust](http://rust-lang.org) is a systems language pursuing the trifecta: safety, concurrency, and speed.
This is a weekly summary of its progress and community.
Want something mentioned? Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) or [send us a pull request](https://github.com/cmr/this-week-in-rust).
Want to get involved? [We love contributions](https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md).
*This Week in Rust* is openly developed [on GitHub](https://github.com/cmr/this-week-in-rust).
If you find any errors in this week's issue, [please submit a PR](https://github.com/cmr/this-week-in-rust/pulls).
Check out [this week's *This Week in Rust Podcast*](https://rustacean-station.org/episode/026-twir-350/)
# Updates from Rust Community
### Official
* [Announcing Rust 1.45.1](https://blog.rust-lang.org/2020/07/30/Rust-1.45.1.html)
* [Announcing Rust 1.45.2](https://blog.rust-lang.org/2020/08/03/Rust-1.45.2.html)
### Tooling
* [Rust Analyzer Changelog #36](https://www.reddit.com/r/rust/comments/i2wic3/rustanalyzer_changelog_36/)
* [IntelliJ Rust: Updates for the 2020.2 Release](https://blog.jetbrains.com/clion/2020/08/intellij-rust-updates-for-the-2020-2-release/)
* [Headcrab: July 2020 progress report](https://headcrab.rs/2020/07/31/july-update.html)
### Newsletters
* [This Month in Rust OSDev (July 2020)](https://rust-osdev.com/this-month/2020-07/)
### Observations/Thoughts
* [Go vs Rust: Writing a CLI tool](https://cuchi.me/posts/go-vs-rust)
* [How to speed up the Rust compiler some more in 2020](https://blog.mozilla.org/nnethercote/2020/08/05/how-to-speed-up-the-rust-compiler-some-more-in-2020/)
* [A Curious Tale of Rust TLS and Postgres in the Cloud](https://dev.to/pnehrer/a-curious-tale-of-rust-tls-and-postgres-in-the-cloud-434k)
### Learn Standard Rust
* [Learning Rust: Mindsets and Expectations](https://ferrous-systems.com/blog/mindsets-and-expectations/)
* [Understanding the Rust borrow checker](https://blog.logrocket.com/introducing-the-rust-borrow-checker/)
* [Beginner's guide to Error Handling in Rust](http://www.sheshbabu.com/posts/rust-error-handling/)
* [Rust Hashmaps Tutorial](https://frogtok.com/very-simple-guide-to-rust-hashmaps/)
* [Blue Team Rust: What is "Memory Safety", really?](https://tiemoko.com/blog/blue-team-rust/)
* [How to use the Rust compiler as your integration testing framework](https://blog.logrocket.com/using-the-rust-compiler-as-your-integration-testing-framework/)
* [A Comprehensive Tutorial to Rust Operators for Beginners](https://towardsdatascience.com/a-comprehensive-tutorial-to-rust-operators-for-beginners-11554b2c64d4)
* [What You Should Know About Unsigned, Signed Integers and Casting in Rust](https://towardsdatascience.com/unsinged-signed-integers-and-casting-in-rust-9a847bfc398f)
* [Memory safety in Rust - part 2](https://hashrust.com/blog/memory-safety-in-rust-part-2/)
* [A gentle introduction to assembly with rust](https://lfn3.net/2020/08/03/a-gentle-intro-to-assembly-with-rust/)
* [Prevent Breaking Code Changes in Future Releases using `non exhaustive` enums in Rust](https://blog.knoldus.com/prevent-breaking-code-changes-in-future-releases-using-non-exhaustive-enums-in-rust/)
* [A Heaping Helping of Stacks](https://deislabs.io/posts/a-heaping-helping-of-stacks/)
* [Rust for a Pythonista #1: Why and When?](https://dygalo.dev/blog/rust-for-a-pythonista-1/)
* [PT] [Aprendendo Rust: 05 - Funções](https://dev.to/pehdepano/aprendendo-rust-05-funcoes-3j72)
* [RU] [Rust: работа с потоками](https://medium.com/nuances-of-programming/%D0%B8%D0%B7%D1%83%D1%87%D0%B0%D0%B5%D0%BC-rust-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B0%D0%BC%D0%B8-56b2a31d2846)
* [video] [Learning Rust by Working Through the Rustlings Exercises](https://egghead.io/playlists/learning-rust-by-solving-the-rustlings-exercises-a722)
### Learn More Rust
* [Creating Linux Packages for Rust Projects (1/2)](https://ebbflow.io/blog/vending-linux-1)
* [Operating System development tutorials in Rust on the Raspberry Pi](https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials#operating-system-development-tutorials-in-rust-on-the-raspberry-pi)
* [Reverse Engineering a USB Device with Rust](https://gill.net.in/posts/reverse-engineering-a-usb-device-with-rust/)
* [A Simple Crud on Rust (With Rocket.rs and Diesel.rs)](https://medium.com/swlh/a-simple-crud-on-rust-with-rocket-rs-and-diesel-rs-e885672cb23d)
* [Some Learnings from Implementing a Normalizing Rust Representer](https://seanchen1991.github.io/posts/rust-representer/)
* [Countdown problem in Rust](https://amitdev.github.io/posts/2020-07-27-countdown-rust/)
* [Exploring Azure CosmosDB with Rust - Part 1](https://dev.to/mindflavor/exploring-azure-cosmosdb-with-rust-part-1-1ki7)
* [Building Rust Web API with Warp and Diesel](https://dev.to/szymongib/building-rust-web-api-with-warp-and-diesel-1d7c)
* [Microservices in Rust with Kafka](https://medium.com/digitalfrontiers/microservices-in-rust-with-kafka-2b671295b24e)
* [Risc-V OS using Rust: Graphics](https://blog.stephenmarz.com/2020/07/24/risc-v-os-using-rust-graphics/)
* [Rust Traits: Defining Behavior](https://youtu.be/rAl-9HwD858)
* [Writing and publishing a Python module in Rust](https://blog.yossarian.net/2020/08/02/Writing-and-publishing-a-python-module-in-rust)
* [video] [Hypercore Protocol in Rust](https://www.youtube.com/watch?v=2JCblJf9hFg&list=PL7sG5SCUNyeYx8wnfMOUpsh7rM_g0w_cu)
* [video] [Reasonable Coding 030 - HotStuff, a composable, no-nonsense document compiler (part 1)](https://www.youtube.com/watch?v=kURv5ZbkEss)
### Project Updates
* [Rust Language Cheat Sheet 2019 -> 2020](https://github.com/ralfbiedert/cheats.rs/issues/100)
### Miscellaneous
* [Video recording technology at RustFest](https://estada.ch/2020/7/30/video-recording-technology-at-rustfest/)
* [audio] [The State of Rust 2 with Alex Chrichton](https://anchor.fm/the-virtual-world/episodes/Ep-7--The-State-of-Rust-2-with-Alex-Crichton-ehjpsq)
* [audio] [The State of Rust with Steve Klabnik](https://anchor.fm/the-virtual-world/episodes/Ep-6--The-State-of-Rust-with-Steve-Klabnik-ehf8mk)
* [video] [Rusty Days 2020 - all videos](https://www.youtube.com/playlist?list=PLf3u8NhoEikhTC5radGrmmqdkOK-xMDoZ)
# Crate of the Week
This week's crate is [partial-io](https://lib.rs/crates/partial-io), a set of helpers to test partial, interrupted and would-block I/O operations.
Thanks to [Kornel](https://users.rust-lang.org/t/crate-of-the-week/2704/796) for the suggestion!
[Submit your suggestions and votes for next week][submit_crate]!
[submit_crate]: https://users.rust-lang.org/t/crate-of-the-week/2704
# Call for Participation
Always wanted to contribute to open-source projects but didn't know where to start?
Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
*No issues were proposed for CfP*.
If you are a Rust project owner and are looking for contributors, please submit tasks [here][guidelines].
[guidelines]: https://users.rust-lang.org/t/twir-call-for-participation/4821
# Updates from Rust Core
326 pull requests were [merged in the last week][merged]
[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2020-07-27..2020-08-03
* [suppress debuginfo on naked function arguments](https://github.com/rust-lang/rust/pull/74105)
* [normalize all opaque types when converting `ParamEnv` to `Reveal::All`](https://github.com/rust-lang/rust/pull/65989)
* [ensure stack when type checking and building MIR for large if expressions](https://github.com/rust-lang/rust/pull/74708)
* [replace a recursive algorithm with an iterative one](https://github.com/rust-lang/rust/pull/74983)
* [fix `#[track_caller]` shims for trait objects](https://github.com/rust-lang/rust/pull/74784)
* [make closures and generators `must_use` types](https://github.com/rust-lang/rust/pull/74869)
* [`BTreeMap::drain_filter` should not touch the root during iteration](https://github.com/rust-lang/rust/pull/74762)
* [add `str::`(`r`)`split_once`](https://github.com/rust-lang/rust/pull/74707)
* [add `Vec::spare_capacity_mut`](https://github.com/rust-lang/rust/pull/75015)
* [add `slice::array_chunks`](https://github.com/rust-lang/rust/pull/74373)
* [stabilize `const_type_id`](https://github.com/rust-lang/rust/pull/72488)
* [stabilize `Vec::leak` as a method](https://github.com/rust-lang/rust/pull/74605)
* [stabilize `Result::as_deref` and `as_deref_mut`](https://github.com/rust-lang/rust/pull/74948)
* [make `Option::unwrap` unstably const](https://github.com/rust-lang/rust/pull/74956)
* [make `mem::size_of_val` and `mem::align_of_val` unstably const](https://github.com/rust-lang/rust/pull/74930)
* [backtrace-rs: include source column numbers, where available](https://github.com/rust-lang/backtrace-rs/pull/367)
## Rust Compiler Performance Triage
* [2020-08-03](https://github.com/rust-lang/rustc-perf/blob/master/triage/2020-08-03.md).
8 regressions, 2 improvements, 1 of them on rollups. 1 outstanding nag from last week.
## Approved RFCs
Changes to Rust follow the Rust [RFC (request for comments) process](https://github.com/rust-lang/rfcs#rust-rfcs). These
are the RFCs that were approved for implementation this week:
* [RFC: 'C unwind' ABI](https://github.com/rust-lang/rfcs/pull/2945)
## Final Comment Period
Every week [the team](https://www.rust-lang.org/team.html) announces the
'final comment period' for RFCs and key PRs which are reaching a
decision. Express your opinions now.
### [RFCs](https://github.com/rust-lang/rfcs/labels/final-comment-period)
*No RFCs are currently in the final comment period.*
### [Tracking Issues & PRs](https://github.com/rust-lang/rust/labels/final-comment-period)
*No Tracking Issues or PRs are currently in the final comment period.*
## New RFCs
* [Procedural vtables and wide ptr metadata](https://github.com/rust-lang/rfcs/pull/2967)
* [Edition 2021 and beyond](https://github.com/rust-lang/rfcs/pull/2966)
# Upcoming Events
### Online
* [August 5. Johannesburg, ZA - Johannesburg Rust Meetup - Monthly Joburg Rust Chat](https://www.meetup.com/Johannesburg-Rust-Meetup/events/271875886/)
* [August 5. Dublin, IE - Rust Dublin - August Remote Meetup](https://www.meetup.com/Rust-Dublin/events/272162980/)
* [August 5. Buffalo, NY, US - Buffalo Rust Meetup - Rust User Group](https://www.meetup.com/Buffalo-Rust-Meetup/events/271511557/)
* [August 5. Indianapolis, IN, US - Indy Rust - Indy.rs with Social Distancing](https://www.meetup.com/indyrs/events/jhfstrybclbhb/)
* [August 6. Linz, AT - Rust Meetup Linz - Kick Off](https://www.meetup.com/de-DE/Rust-Linz/events/271857182/)
* [August 6. Berlin, DE - Berline.rs - Rust Hack and Learn](https://www.meetup.com/opentechschool-berlin/events/txcprrybclbjb/)
* [August 11. Seattle, WA, US - Seattle Rust Meetup - Monthly meetup](https://www.meetup.com/Seattle-Rust-Meetup/events/gskksrybclbpb/)
* [August 11. Saarbrücken, DE - Rust-Saar Meetup `3u16`](https://www.meetup.com/Rust-Saar/events/272044845/)
* [August 13. San Diego, CA, US - San Diego Rust - August 2020 Tele-Meetup](https://www.meetup.com/San-Diego-Rust/events/272060817/)
### North America
* [August 13. Columbus, OH, US - Columbus Rust Society - Monthly Meeting](https://www.meetup.com/columbus-rs/events/dpkhgrybclbrb/)
### Asia Pacific
If you are running a Rust event please add it to the [calendar] to get
it mentioned here. Please remember to add a link to the event too.
Email the [Rust Community Team][community] for access.
[calendar]: https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com
[community]: mailto:community-team@rust-lang.org
# Rust Jobs
*Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) to get your job offers listed here!*
# Quote of the Week
> *Empowering* is the perfect word to describe Rust in 2020. What used to be a rough adventure with many pitfalls has turned into something beautiful, something that can lift your spirit. At least, thats what it did for me.
- [Mathias Lafeldt on his blog](https://sharpend.io/giving-rust-another-shot-in-2020/)
Thanks to [Henrik Tougaard](https://users.rust-lang.org/t/twir-quote-of-the-week/328/915) for the suggestion!
[Please submit quotes and vote for next week!](https://users.rust-lang.org/t/twir-quote-of-the-week/328)
*This Week in Rust is edited by: [nellshamrell](https://github.com/nellshamrell), [llogiq](https://github.com/llogiq), and [cdmistman](https://github.com/cdmistman).*
<small>[Discuss on r/rust](https://www.reddit.com/r/rust/comments/i4a3e0/this_week_in_rust_350/)</small>