Title: This Week in Rust 401
Number: 401
Date: 2021-07-28
Category: This Week in Rust

Hello and welcome to another issue of *This Week in Rust*!
[Rust](http://rust-lang.org) is a programming language empowering everyone to build reliable and efficient software.
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/rust-lang/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/rust-lang/this-week-in-rust).
If you find any errors in this week's issue, [please submit a PR](https://github.com/rust-lang/this-week-in-rust/pulls).

## What does This Week in Rust mean to you?

This Week in Rust will be the focus of [nellshamrell](https://github.com/nellshamrell)'s RustConf keynote in September. She would love if you would help inform the talk by sharing what This Week in Rust means to you [on this Reddit post](https://www.reddit.com/r/rust/comments/oqifdk/what_does_this_week_in_rust_mean_to_you/) or [in the Discourse forums](https://users.rust-lang.org/t/what-does-this-week-in-rust-mean-to-you/62698). Thank you!

## Updates from Rust Community

### Official

* [Inside] [1.54.0 pre-release testing](https://blog.rust-lang.org/inside-rust/2021/07/26/1.54.0-prerelease.html)

### Project/Tooling Updates

* [rust-analyzer Changelog #87](https://rust-analyzer.github.io/thisweek/2021/07/26/changelog-87.html)
* [CGlue Today And The Road Ahead](https://blaz.is/blog/post/cglue-012-and-the-road-ahead/)
* [Black Hat Rust: July Update](https://kerkour.com/blog/black-hat-rust-july-update/)
* [Updates from the Tinyverse - July 2021](https://tinyverse.substack.com/p/updates-from-the-tinyverse-july-2021)
* [Gloo v0.3.0 release](https://gloo-rs.web.app/blog/release-0.3.0)
* [This Week In TensorBase 13](https://tensorbase.io/thisweek/2021-07-28-tw_13/)

### Observations/Thoughts

* [Towards Inserting One Billion Rows in SQLite Under A Minute](https://avi.im/blag/2021/fast-sqlite-inserts/)
* [Async and asleep: designing our future embedded applications](https://tweedegolf.nl/blog/58/async-and-asleep-designing-our-future-embedded-applications)
* [My Rust development workflow (after 2+ years full-time)](https://kerkour.com/blog/rust-development-workflow/)
* [Dealing with Out-of-memory Conditions in Rust](https://www.crowdstrike.com/blog/dealing-with-out-of-memory-conditions-in-rust/)
* [Rust for Linux redux](https://lwn.net/Articles/862018/)
* [My experience crafting an interpreter with Rust](https://ceronman.com/2021/07/22/my-experience-crafting-an-interpreter-with-rust/)
* [Rust: First Thoughts](https://dev.to/mapoulos/rust-first-thoughts-7l0)
* [Mutable statics have scary superpowers! Do not use them](https://blog.kodewerx.org/2021/07/mutable-statics-have-scary-superpowers.html)
* [9 advantages of programming in Rust](https://tim.mcnamara.nz/post/657832047640985600/nine-advantages-of-programming-in-rust)
* [audio] [AreWePodcastYet - 07 Georg Semmler on Diesel!](https://soundcloud.com/arewepodcastyet/awpy-07-georg-semmler-on-diesel)

### Rust Walkthroughs

* [Awesome Unstable Rust Features](https://lazy.codes/posts/awesome-unstable-rust-features/)
* [How I Built a Cross-Platform Desktop Application with Svelte, Redis, and Rust](https://css-tricks.com/how-i-built-a-cross-platform-desktop-application-with-svelte-redis-and-rust/)
* [Understanding Rust futures by going way too deep](https://fasterthanli.me/articles/understanding-rust-futures-by-going-way-too-deep)
* [Understanding Rust's 'serde' using macro expansion](https://owengage.com/writing/#understanding-serde-macro-expansion)
* [Rust - Writing Parsers With nom Parser Combinator Framework](https://iximiuz.com/en/posts/rust-writing-parsers-with-nom/)
* [✨🥞 Rust Visualized: The Stack, the Heap, and Pointers](https://dev.to/ender_minyard/rust-visualized-the-stack-the-heap-and-pointers-a5c)
* [First steps with Rust declarative macros!](https://dev.to/rogertorres/first-steps-with-rust-declarative-macros-1f8m)
* [diceroller, a sample Rust project](https://blog.frankel.ch/start-rust/8/)
* [Ditching `try..catch` and `null` checks with Rust](https://blog.logrocket.com/ditching-try-catch-and-null-checks-in-rust/)
* [Implementing Merge Sort in Rust](https://dev.to/felixfaisal/implementing-merge-sort-in-rust-4ko8)
* [Emulating abstract base classes in Rust](https://dev.to/mdoerner/emulating-abstract-base-classes-in-rust-3ai6)
* [Rust #6: Exploring crates](https://dev.to/cthutu/rust-6-exploring-crates-3p6i)
* [Rust and WebAssembly Serverless Functions in Vercel](https://thenewstack.io/rust-and-webassembly-serverless-functions-in-vercel/)
* [28 Days of Rust -- Part 1: Ownership and the Borrow Checker](https://medium.com/comsystoreply/28-days-of-rust-part-1-ownership-and-the-borrow-checker-977a17e5b733)
* [The Rust dbg! macro](https://edgarluque.com/blog/rust-dbg-macro)
* [video] [Building a Web Application with Rust - Part X - VanillaJS FrontEnd](https://youtu.be/mgGPD6IVUbI)
* [video] [Rust Bevy Tutorial - Enemy Formation & Attack (part 3/3)](https://youtu.be/4nEUX2hf2ZI)
* [video] [How to create an AWS Lambda in rust](https://www.youtube.com/watch?v=PmtwtK6jyLc)

### Research

* [Performance vs Programming Effort between Rust and C on Multicore Architectures: Case Study in N-Body](https://arxiv.org/abs/2107.11912)
* [Revisiting Prechelt's paper and follow-ups comparing Java, Lisp, C/C++ and scripting languages](https://renato.athaydes.com/posts/revisiting-prechelt-paper-comparing-languages.html)
* [Programming Rules to Develop Secure Applications with Rust](https://www.ssi.gouv.fr/en/guide/programming-rules-to-develop-secure-applications-with-rust/)

### Miscellaneous

* [This finally happened: rust made more sense](https://www.reddit.com/r/rust/comments/or9r1h/this_finally_happened_rust_made_more_sense/)
* [Edward Snowden endorses Rust for more secure computing](https://www.reddit.com/r/rust/comments/os94ur/edward_snowden_endorses_rust_for_more_secure/)
* [I bet I can do that in rust!!. Generic types are more powerful than most of us thought](https://www.reddit.com/r/rust/comments/opkcuh/i_bet_i_can_do_that_in_rust_generic_types_are/)

## Crate of the Week

This week's crate is [loadstone](https://crates.io/crates/loadstone), a bare-metal bootloader for embedded systems.

Thanks to [Andres O. Vela](https://users.rust-lang.org/t/crate-of-the-week/2704/940) 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.

* [What does This Week in Rust mean to you?](https://www.reddit.com/r/rust/comments/oqifdk/what_does_this_week_in_rust_mean_to_you/)
* [rust-embedded/cross - Call for help: more maintainers wanted](https://github.com/rust-embedded/cross/issues/574)
* [ChainSafe/forest has several help wanted issues](https://github.com/ChainSafe/forest/labels/help%20wanted)
* [getsynth/synth - Support postgres json and jsonb types](https://github.com/getsynth/synth/issues/67)
* [getsynth/synth - Feature: Doc template generator](https://github.com/getsynth/synth/issues/31)
* [ockam-network/ockam - Rust - UDP Transport](https://github.com/ockam-network/ockam/issues/1623)
* [ockam-networking/ockam - File Transfer over end-to-end encrypted secure channels](https://github.com/ockam-network/ockam/issues/1624)

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

287 pull requests were [merged in the last week][merged]

[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-07-19..2021-07-26

* [recognize bounds on impls as const bounds](https://github.com/rust-lang/rust/pull/87273)
* [warn on inert attributes used on bang macro invocation](https://github.com/rust-lang/rust/pull/87296)
* [better diagnostics with mismatched types due to implicit static lifetime](https://github.com/rust-lang/rust/pull/87244)
* [improve `SortedMap::get_by_key_enumerated` more](https://github.com/rust-lang/rust/pull/86429)
* [`VecMap::get_value_matching` should return just one element](https://github.com/rust-lang/rust/pull/86410)
* [don't create references to uninitialized data in `List::from_arena`](https://github.com/rust-lang/rust/pull/87268)
* [miri: better errors for negative out-of-bounds offsets](https://github.com/rust-lang/miri/pull/1853)
* [miri: better ptr-out-of-bounds errors](https://github.com/rust-lang/rust/pull/87224)
* [MIR opt: separate constant predecessors of a switch](https://github.com/rust-lang/rust/pull/85646)
* [stabilize `into_parts()` and `into_error()`](https://github.com/rust-lang/rust/pull/87175)
* [stabilize `impl From<[(K, V); N]> for HashMap` (and friends)](https://github.com/rust-lang/rust/pull/84111)
* [remove `Option` from `BufWriter`](https://github.com/rust-lang/rust/pull/87171)
* [implement `TrustedLen` for `Flatten`/`FlatMap` if the `U: IntoIterator == [T; N]`](https://github.com/rust-lang/rust/pull/87168)
* [add `Stdin::lines`, `Stdin::split` forwarder methods](https://github.com/rust-lang/rust/pull/86847)
* [add support for custom allocator in `VecDeque`](https://github.com/rust-lang/rust/pull/86595)
* [hashbrown: make rehashing and resizing less generic](https://github.com/rust-lang/hashbrown/pull/282)
* [hashbrown: inline small functions](https://github.com/rust-lang/hashbrown/pull/283)
* [clippy: add check if ty `has_escaping_bound_vars` in `zero_sized_map_values` lint](https://github.com/rust-lang/rust-clippy/pull/7470)
* [clippy: improve conflicting rlibs error again](https://github.com/rust-lang/rust-clippy/pull/7495)

### Rust Compiler Performance Triage

A very quiet week with only improvements. There was one possible regression, but it was removed from consideration due to only barely impacting a somewhat noisy stress-test benchmark. Untriaged pull requests continue to pile up, but there is still not a good process for dealing with them. 

Triage done by **@rylev**.
Revision range: [5c0ca08..998cfe5](https://perf.rust-lang.org/?start=5c0ca08c662399c1c864310d1a20867d3ab68027&end=998cfe5aad7c21eb19a4bca50f05a13354706970&absolute=false&stat=instructions%3Au)

0 Regressions, 3 Improvements, 0 Mixed; 0 of them in rollups

[Full report here](https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-07-27.md).

### 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:

* [`#[derive(Default)]` on enums with a `#[default]` attribute](https://github.com/rust-lang/rfcs/pull/3107)
* [RFC: Introduce concat_bytes!() to join [u8] and byte str analogous to concat! for str](https://github.com/rust-lang/rfcs/pull/2509)

### 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)

* [Stabilize Cargo's weak-dep-features and namespaced-features.](https://github.com/rust-lang/rfcs/pull/3143)

### [Tracking Issues & PRs](https://github.com/rust-lang/rust/labels/final-comment-period)

* [disposition: merge] [impl Default, Copy, Clone for std::io::Sink and Empty](https://github.com/rust-lang/rust/pull/86744)
* [disposition: merge] [Allow reifying intrinsics to fn pointers.](https://github.com/rust-lang/rust/pull/86699)
* [disposition: merge] [Associated functions that contain extern indicator or have #[rustc_std_internal_symbol] are reachable](https://github.com/rust-lang/rust/pull/86492)
* [disposition: merge] [impl Pattern for char array](https://github.com/rust-lang/rust/pull/86336)
* [disposition: merge] [Commit to not supporting IPv4-in-IPv6 addresses](https://github.com/rust-lang/rust/pull/86335)
* [disposition: merge] [Implement `Extend<(A, B)>` for `(Extend<A>, Extend<B>)`](https://github.com/rust-lang/rust/pull/85835)

### New RFCs

*No new RFCs were proposed this week.*

## Upcoming Events

### Online

* [August 3, 2021, Buffalo, NY, US - Buffalo Rust User Group, First Tuesdays - Buffalo Rust Meetup](https://www.meetup.com/Buffalo-Rust-Meetup/events/jxfdjsycclbfb/)
* [August 9, 2021, Seattle, WA, US - Monthly meetup - Seattle Rust Meetup](https://www.meetup.com/Seattle-Rust-Meetup/events/gskksrycclbnb/)

### North America

* [August 11, 2021, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta](https://www.meetup.com/Rust-ATL/events/lhpkmsycclbpb/)

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

**The Tor Project**

* [Software Developer, Rust (Remote)](https://www.torproject.org/about/jobs/rust-dev/)

**Stockly**

* [Back-end developer - TechOps team (Rust, GRPC, PostgreSQL) (Paris, FR)](https://www.welcometothejungle.com/fr/companies/stockly-1/jobs/back-end-developer-rust-grpc-postgresql_paris)

**Rhebo GmbH**

* [Rust Software Engineer - Focus Networks (DE)](https://germantechjobs.de/en/jobs/Rhebo-GmbH-Softwareentwickler-Rust---Schwerpunkt-Netzwerk-wmd)

**ChainSafe**

* [Rust Developer (Remote)](https://jobs.smartrecruiters.com/ChainSafeSystemsInc/743999739358248-rust-developer)

**Kraken**

* [Senior Banking Engineer - Rust (Remote)](https://jobs.lever.co/kraken/2863623f-13c9-4f50-992d-7c25736a60f9)
* [Senior Backend Engineer - Rust - Core Backend (Remote)](https://jobs.lever.co/kraken/4c864c8f-bde6-443d-b521-dd90df0e9105)

**Lumeo**

* [Senior Backend Engineer (Rust) (Remote EU)](https://www.lumeo.com/careers/senior-backend-engineer-rust)
* [Senior Systems Engineer (Rust) (Remote EU)](https://www.lumeo.com/careers/senior-systems-engineer-rust)

**Tweede golf**

* [Lead Developer Embedded Rust (Nijmegen, NL)](https://tweedegolf.nl/vacatures/2/lead-developer-embedded-rust)
* [Embedded software engineer (Nijmegen, NL)](https://tweedegolf.nl/vacatures/11/medior-embedded-engineer)

**Kollider**

* [Junior Backend Engineer (Remote)](https://kollider.homerun.co/junior-backend-engineer/en)
* [Senior Backend Engineer (Remote)](https://kollider.homerun.co/senior-backend-engineer/en)
* [DevOps Engineer (Remote)](https://kollider.homerun.co/devops-engineer/en)

*Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) to get your job offers listed here!*

# Quote of the Week

> We were able to verify the safety of Rust's type system and thus show how Rust automatically and reliably prevents entire classes of programming errors

– [Ralf Jung on Eureka Alert Science News](https://www.eurekalert.org/pub_releases/2021-07/su-cs071521.php)

Thanks to [Henrik Tougaard](https://users.rust-lang.org/t/twir-quote-of-the-week/328/1084) 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/otnvu8/this_week_in_rust_401/)</small>
