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
- ๐๐ Announcing Rust 1.42.0. ๐๐
- ripgrep 12 is released.
- Rewriting the heart of our sync engine at Dropbox.
- docs.rs now allows you to choose your build targets.
- Redox OS - pkgar introduction.
- Reducing the size of
Option<T>
by adding members toT
? - Out of the box dynamic dispatch.
- parallel-stream.
- Optimizations that aren't, or are they?
- Rust All Hands retrospective.
- Guide on how to write documentation for a Rust crate.
- A C# programmer examines Rust - Part 2.
- Traits, dynamic dispatch and upcasting.
- References in Rust.
- Parsing library in Rust pt. 2 - test utilities.
- Loading datasets from CSV into NDArray.
- Announcing Rust Search Extension v0.8.
- Async interview 7: withoutboats.
- rust-analyzer changelog 16.
- IntelliJ Rust changelog 118.
- Postponing RustFest Netherlands.
- Rust Latam 2020 (Mexico) is cancelled.
Crate of the Week
This week's crates is beef, an alternative memory-compact Clone on Write (CoW) implementation.
Thanks to Vlad Frolov for the suggestion!
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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
309 pull requests were merged in the last week
- change
DIBuilderCreateEnumerator
signature to match LLVM 9 - add support for LLVM globals corresponding to miri allocations should be named
alloc123
- emit 1-based column numbers in debuginfo
- improve expression & attribute parsing
- resolve: fix two issues in fresh binding disambiguation
- don't store locals in generators that are immediately overwritten with the resume argument
- make
PlaceRef
take just one lifetime - use
TypeRelating
for instantiating query responses - perf: reuse a
Vec
in mir simplification - exhaustiveness checking,
Matrix::push
: recursively expand or-patterns - miri: use a session variable instead of checking for an env var always
panic_bounds_check
: use caller_location, likePanicFnLangItem
- check if output is immediate value
- fix memory leak when
vec::IntoIter
panics during drop - optimize
catch_unwind
to match C++ try/catch - make
mem::discriminant
const - allow zero-sized types in
AllocRef
mem::zeroed
/uninit
: panic on types that do not permit zero-initialization- add
Display
andError
impls forproc_macro::LexError
- implement
Error
forTryReserveError
- implement
nth
,last
, andcount
foriter::Copied
- add undo_leak to reset
RefCell
borrow state - implement
Copy
forIoSlice
- stabilize const for
integer
{to
,from
}_
{be
,le
,ne
}_bytes
methods - implement
From<&mut str>
forString
- hashbrown: optimize
Clone
implementation - futures: use
once_cell
for sound&'static Waker
instances - cargo: avoid buffering large amounts of rustc output
- cargo: clippy integration changes
- cargo: add "Updating" status for git submodules
- docs.rs: allow crates to opt-in to building a single target
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 final comment period.
Tracking Issues & PRs
- [disposition: merge] Allow obtaining &mut OsStr.
- [disposition: merge]
is_x86_feature_detected!("avx512f")
fails to build on beta and nightly. - [disposition: merge]
impl From<[T; N]> for Vec<T>
. - [disposition: merge] Amend Rc/Arc::from_raw() docs regarding unsafety.
New RFCs
Upcoming Events
Online
- Mar 20. Berlin, DE - Oxidize 1K: A Remote Conference.
- Mar 25. Portland, OR, US - PDXRust - Lightning Talks - Remote Event.
- Mar 23. Durham, NC, US - Triangle Rustaceans - Online gathering.
Europe
- Mar 26. Edinburgh, GB - Rust Edinburgh - Rust Meetup Short Talk Night.
- Apr 2. Stockholm, SE - Stockholm Rust Meetup.
- Apr 2. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
North America
- Mar 25. Houston, TX, US - Houston Linux Users Group - Rust Study Group.
- Mar 25. Ann Arbor, MI, US - Ann Arbor Rust Meetup - Monthly Gathering.
- Mar 31. Dallas, TX, US - Dallas Rust - Last Tuesday.
- Apr 1. Indianapolis, IN, US - Indy.rs - WebAssembly 101.
- Apr 8. Atlanta, GA, US - Rust Atlanta - Grab a beer with fellow Rustaceans.
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
- Official /r/rust "Who's Hiring" thread for job-seekers and job-offerers [Rust 1.42].
- Software Engineer at Apple, AB, CA.
- Software Engineer at Apple, Seattle, WA, US.
- Backend Engineer, Rust at LayerTwo, London, UK.
- Junior Backend Engineer, Rust at LayerTwo, London, UK.
- Senior Software Engineer - Rust at Ockam, Remote.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
I thought up a clever qotw bait one liner to stick in here that prompted me to actually write it then forgot it while writing the post in favor of being genuine... whoops
โ Christopher Durham confessing to rust-users
Thanks to Jules Kerssemakers for the suggestions!
Please submit quotes and vote for next week!