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.
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.
- The
std::future::Future
of Rusoto. - 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!
Submit your suggestions and votes for next week!
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
#![feature(move_ref_pattern)]
- parser: stop using
BytePos
for computing spans - remove
HashStable
impl forast::Lifetime
- 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
- improve
merge_from_succ
perf - reduce the number of
RefCell
s inInferCtxt
- improve performance of coherence checks
- speed up the inherent impl overlap check
- generator resume arguments
- remove some unsound specializations
- remove problematic specialization from
RangeInclusive
- mark several functions and methods in
core::cmp
as#[must_use]
- implement
AsMut<str>
forString
- fix and test implementation of
BTreeMap::
{first_entry
,last_entry
,pop_first
,pop_last
} BtreeMap::range_search
spruced up- make
num::NonZeroX::new
an unstable const fn - make more arithmetic functions unstably const
- remove
Copy
impl fromOnceWith
- derive
Clone + Eq
forstd::string::FromUtf8Error
- futures: add
TryFutureExt::map_ok_or_else
method - cargo: fix
BuildScriptOutput
when a build script is run multiple times
Approved RFCs
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.
RFCs
- [disposition: merge] Rust 2020 roadmap.
Tracking Issues & PRs
- [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.
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Asia Pacific
- 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.
Europe
- 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.
North America
- 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.
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
- 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.
– Jesse Howard on the discord blog
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.
– /u/tablair commenting on /r/rust
Thanks to Jules Kerssemakers and Stephan Sokolow for the suggestions!
Please submit quotes and vote for next week!