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.
Important Update: The This Week in Rust privacy policy has changed due to our migration to GitHub pages for hosting. The current policy can be accessed here. The git-diff can be viewed here.
Updates from Rust Community
News & Blog Posts
- Rust is the most loved language four years in a row.
- How to compose functions in Rust.
- A basic web application with Rust and Actix-web.
- More tricks up in the ArcSwap’s sleeve.
- Arenas vs. indices.
- Protocols in Tokio (i3 IPC).
- Array1 and function traits (scientific computing: a Rust adventure, part 2).
Crate of the Week
This week's crate is interact, a framework for online introspection of the running program state. Thanks to Willi Kappler 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.
- Releasing nom 5.0.
- Veloren, the open-source voxel MMORPG, is looking for contributors.
- pulldown-cmark: Create a framework for detecting quadratic time regressions.
- compact_arena: Make the crate
no_std
.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
198 pull requests were merged in the last week
- Show better errors for LLVM IR output
- Use for_each to extend collections
- wasi: Use shared API for preopened file descriptors
- Never return uninhabited values at all
- Shrink
mir::Statement
- Refactor async fn return type lowering
- Unsized rvalues: implement boxed closure impls
- Fixes for shallow borrows
- Suggest using anonymous lifetime in
impl Trait
return - Fix invalid bounds string generation in rustdoc
- More restrictive 2 phase borrows - take 2
- Tweak
Span
encoding - Add 'partition_at_index/_by/_by_key' for slices
- Support allocating iterators with arenas
- Remove duplicated code from Iterator::{ne, lt, le, gt, ge}
- Forward formatter settings to bounds of
Range<T>
infmt::Debug
impl - std: Avoid usage of
Once
inInstant
- Improve worst-case performance of HashSet.is_subset
- Improve worst-case performance of BTreeSet intersection
- Implement useful steps_between for all integers
- cargo: Add install-upgrade
- cargo: Improve error message to rerun a test in a workspace
- cargo Resolve: Be less strict while offline
- cargo: Add more suggestions on how to deal with excluding a package from a workspace
- Allow
cargo install --path P
to load config from P - Allow
cargo doc --open
with multiple packages - Speed up rustdoc run
- crates.io: Add monitoring for common spam patterns
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
No RFCs are currently in final comment period.
Tracking Issues & PRs
- [disposition: merge] Permit
-> _
return types for improved diagnostics.
New RFCs
Upcoming Events
Asia Pacific
- Apr 20. Beijing, CN - RustCon Asia.
- Apr 20. Taipei, TW - Rust Taiwan Meetup.
- Apr 24. Tokyo, JP - Tokyo Rust Meetup.
Europe
- Apr 11. Oslo, NO - Rust Oslo - Hack & Learn.
- Apr 13. Kyiv, UA - PeerLab Kyiv #NativeDev: Rust 1.34 Release in Depth.
- Apr 16. Rome, IT - Rust Roma - Rust learning and hacking evening #17.
- Apr 17. Berlin, DE - Berlin Rust Hack and Learn.
- Apr 17. Stuttgart, DE - Rust Workshop - Beginner to Intermediate.
- Apr 18. Turin, IT - Mozilla Torino - Gruppo di studio Rust.
- Apr 25. Toulouse, FR - Mon premier service web en Rust.
- Apr 25. Paris, FR - Rust Paris meetup #44.
- Apr 26. Stuttgart, DE - Rust Meetup #2
- Apr 26. Berlin, DE - Oxidize Berlin Conference.
North America
- Apr 11. Orem, US - Utah Rust - Meetup #11: Hack and learn.
- Apr 11. Arlington, US - Rust DC — Mid-month Rustful.
- Apr 11. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Apr 11. San Diego, US - San Diego Rust April Meetup.
- Apr 18. Denver, US - Rust Boulder/Denver - Rust Meetup for April.
- Apr 17. Vancouver, CA - Vancouver Rust meetup.
- Apr 22. Durham, US - Triangle Rustaceans.
- Apr 23. Chicago, US - Chicago Rust Meetup - Discussion: Better Method Chaining in Rust.
- Apr 24. Sacramento, US - Hands-on Rust.
- Apr 24. Ann Arbor, 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
- Senior Software Engineer, Backend - Rust at Kraken, Remote.
- Rust Systems Software Engineer at Cloudseal, Remote (US).
- Compilers (LLVM), distributed systems, & theorem proving engineers at Offscale.io, Remote/Sydney, AU.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Sadly there was no suggestion this week.
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.