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.
Updates from Rust Community
News & Blog Posts
- Alex Crichton: Scaling back my involvement in Rust.
- Bringing async/await to embedded Rust.
- Announcing the Cleanup Crew ICE-breaker group.
- Results from Rust game development ecosystem survey.
- Debugging Rust in VSCode (in 2020).
- Rust and GTK from a React perspective.
- A primer to Rust Async.
- Solving sparse matrix systems in Rust.
- I made a thing: Markedit.
- Creating interactive applications.
- Async interview 6: Eliza Weisman.
- rust-analyzer changelog 11.
Crate of the Week
This week's crate is argh, a small opinionated argument parsing library for Rust.
Thanks to Vikrant for the suggestions!
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.
- image: Tracking issue: Converting error representations.
- Ferrous Systems and TrueLayer: Rust Training in London, March 2020.
- libc crate is looking for maintainers
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
261 pull requests were merged in the last week
- implement proper C ABI lowering for RISC-V
- initial implementation of
- parser: stop using
BytePosfor computing spans
- replace the leak check with universes, take 2
- tweak obligation error output
- improve reporting errors and suggestions for trait bounds
- implement MIR lowering for or-patterns
- reduce the number of
- improve performance of coherence checks
- speed up the inherent impl overlap check
- generator resume arguments
- remove some unsound specializations
- remove problematic specialization from
- mark several functions and methods in
- fix and test implementation of
num::NonZeroX::newan unstable const fn
- make more arithmetic functions unstably const
Clone + Eqfor
- futures: add
- cargo: fix
BuildScriptOutputwhen a build script is run multiple times
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation 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.
- [disposition: merge] Rust 2020 roadmap.
- [disposition: merge] Add primitive module to libcore.
- [disposition: merge] rustc_session: allow overriding lint level of individual lints from a group.
- [disposition: merge] Add Wake trait for safe construction of Wakers.
- [disposition: merge] Add Display and Error impls for proc_macro::LexError.
- [disposition: merge] Stabilize Once::is_completed.
- [disposition: close] Fix an inconsistency in Linux version of TcpListener::accept.
No new RFCs were proposed this week.
- Feb 15. Chennai, IN - Rust Chennai - Monthly meetup.
- Feb 18. Seoul, KR - Seoul Rust Meetup - Learning Rust #2 - Control flow and pattern matching.
- Feb 24. Sydney, AU - Rust Sydney - Meetup 19.
- Feb 19. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- Feb 20. Turin, IT - Mozilla Torino - Gruppo di studio Rust.
- Feb 21. Stuttgart, DE - Rust Community Stuttgart - Rust Hack and Learn.
- Feb 18. Redmond, WA, US - Seattle Rust Meetup - Monthly meetup in Redmond.
- Feb 19. Vancouver, BC, CA - Vancouver Rust meetup.
- Feb 24. Durham, NC, US - Triangle Rustaceans - Project Night & Lightning Talks.
- Feb 25. Dallas, TX, US - Dallas Rust - Last Tuesday.
- Feb 26. Portland, OR, US - PDXRust - Hack Night.
- Feb 26. Houston, TX, US - Houston Linux Users Group - Rust Study Group.
- Feb 26. Ann Arbor, MI, US - Ann Arbor Rust Meetup - Monthly Gathering.
- Infrastructure Engineer at Aleph Alpha, Heidelberg, Germany.
- Senior Rust Developer at Luxoft, Wrocław, Poland.
- Associate Embedded Software Engineer at Georg Fischer Signet, El Monte, CA, US.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
This week we have two (related) quotes:
Even with just basic optimization, Rust was able to outperform the hyper hand-tuned Go version. This is a huge testament to how easy it is to write efficient programs with Rust compared to the deep dive we had to do with Go.
[..] After a bit of profiling and performance optimizations, we were able to beat Go on every single performance metric . Latency, CPU, and memory were all better in the Rust version.
The consistency angle really shouldn’t be overlooked. Performance is nice, but slow and consistent can still be planned for much more easily than inconsistent.
That was the big aha moment about Rust for me when I pushed out my first project using the language. Being nervous about it I had added way too much instrumentation so that I could know how every bit of it was responding to real traffic. But as soon as I started seeing the data, I was convinced that my instrumentation code was broken. The graphs I was seeing were just so...boring. Straight lines everywhere, no variation...after 24hrs, the slowest response (not P99...literally P100) was within 75ms of the fastest response.