Hello and welcome to another issue of This Week in Rust! Rust 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 or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.
Check out this week's This Week in Rust Podcast
Updates from Rust Community
News & Blog Posts
- Announcing Rust 1.44.0
- RustConf 2020 Registration is Open
- Enumerating monitors in Rust using Win32 API
- Rust cli app integrated with slack
- Hack week: miniCouchDB in Rust
- Zero To Production #1: toolchains, IDEs, CI
- From Rust to Svelte, what tech stack will I use
- Graph & Tree Traversals in Rust
- Programming languages: Rust enters top 20 popularity rankings for the first time
- A Rust SentencePiece implementation
- Rust Things I Miss in C
- So What's Up with Microsoft's (and Everyone Else's) Love of Rust?
- Why the developers who use Rust love it so much
- The Story of Tail Call Optimizations in Rust
- Taking the Unhappy Path with Result, Option, unwrap and ? operator in Rust
- This Month in Rust OSDev (May 2020)
- This Month in Rust GameDev #10 - May 2020
- This month in rustsim #11 (April - May 2020)
- Rust in Blockchain Newsletter #12 - ZK-Rustups
- Memory-Safety Challenge Considered Solved? An Empirical Study with All Rust CVEs
- Creating Your Own Programming Language with Rust
- rust-analyzer changelog #28
- Getting started with Rust/WinRT
- [Chinese] Simple sorting algorithms in Rust
- [Indonesian] Berbagai alasan melakukan Programming dalam Rust
- [slides] Rust in 15 Minutes
- [video] Rust Web development | Boilerplate free with Rocket
- [video] Educational Rust Live Coding - Building a web app - Part 4
- [video] Iterators - Rust
- [video] Browser computation with WebAssembly Live Stream
- [video] Jonathan Teaches Jason Rust!
Crate of the Week
This week's crate is cargo-spellcheck, a cargo subcommand to spell-check your docs.
Thanks to Bernhard Schuster for the suggestion!
Submit your suggestions and votes for next week!
Call for Participation
- maud: Add an on-by-default "unstable" feature
- maud: Change all uses of Span::def_site to Span::mixed_site
- maud: Document "Allow arbitrary attribute syntax in class and ID names"
- maud: Migrate to the third-party
quote!
macro
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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
350 pull requests were merged in the last week
- InstCombine: don't optimize
&mut *x
intox
- add
-Z span-debug
to allow for easier debugging of proc macros - avoid setting wrong obligation cause span of associated type mismatch
- be more careful around
ty::Error
in generators - fulfill: try using
SmallVec
orBox
forstalled_on
impl AsRef<[T]> for vec::IntoIter<T>
- chalk: get ready for the first publish
- free
default()
forwarding toDefault::default()
- stabilize
std::io::Buf{Reader, Writer}::capacity
- add associated consts
MIN
/MAX
forWrapping<Int>
- de-promote Duration::from_secs
- compiler-builtins: manually patch ret instruction for LVI
- cargo: add environment variables to identify the binary and crate name
- cargo: allow Windows dylibs without dll suffix
- cargo: better error message when passing in relative path to
Workspace::new
- cargo: don't hash executable filenames on apple platforms
- cargo: support
{prefix}
and{lowerprefix}
markers inconfig.json
dl
key - cargo: warn if using hash in git URL
- cargo: reset lockfile information between resolutions
- crates.io: fix issue where crates.io allowed the plus sign in crate names
- docs.rs: print a backtrace for crates which fail to build
- rustfmt: pick up comments between visibility modifier and item name
- rustfmt: preserve Markdown line breaks in inner and outer block doc comments
- rustfmt: use rewrite buffer to determine if comment should be on a newline
- rustfmt: feat: conditionally allow unstable opts on stable/beta
Rust Compiler Performance Triage
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
No RFCs were approved this week.
Final Comment Period
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.
RFCs
No RFCs are currently in the final comment period.
Tracking Issues & PRs
- [disposition: merge]
impl ToSocketAddrs for (String, u16)
- [disposition: merge] Stabilize
Option::zip
- [disposition: merge] Stabilize
vec::Drain::as_slice
- [disposition: merge] Add raw_ref macros
- [disposition: merge] Print environment variables accessed by rustc as special comments into depinfo files
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- June 10. Wroclaw, PL - Remote - Rust Wroclaw Meetup #20
- June 11. Berlin, DE - Remote - Rust Hack and Learn
- June 11. San Diego, CA, US - Remote - San Diego Rust Meetup
- June 18. Zurich, CH - Remote - Embedded Rust Update: probe.rs
- June 18. Turin, IT - Remote - Rust Turin Study Group
North America
- June 11. Columbus, OH, US - Columbus Rust Society Monthly Meeting
- June 11. Lehi, UT, US - Utah Rust - Lightning Talks
- June 17. Vancouver, BC, CA - Vancouver Rust - Rust Study/Hack/Hang-out night
- June 18. Durham, NC - Triangle Rustaceans - Project Night & Lightning Talks
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 for access.
Rust Jobs
- Pop! OS Software Engineer at System76, Remote US-based
- Software Engineer at Vehicle.Software (second listing on page)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
You don't declare lifetimes. Lifetimes come from the shape of your code, so to change what the lifetimes are, you must change the shape of the code.
Thanks to RustyYato for the suggestions!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.