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
- Completing the transition to the new borrow checker.
- Rust support for Windows Runtime in the works by the author of C++ WinRT.
- You probably didn't want
- Clippy is removing its plugin interface.
- Rust concurrency patterns: condvars and locks.
- How to make your C codebase rusty: rewriting keyboard firmware keymap in Rust.
- When writing a bump allocator, always bump downwards.
- Adventures in motion control: initial motion system.
- 2019-10-24 compiler team triage meeting.
Find all #Rust2020 posts at Read Rust.
Crate of the Week
This week's crate is displaydoc, a procedural derive macro to implement
Display by string-interpolating the doc comment.
Thanks to Willi Kappler for the suggesion!
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.
- Announcing safety-dance: removing unnecessary unsafe code from popular crates.
- RFC: make Cargo embed dependency versions in the compiled binary.
- [good first issue] cargo-sweep: Could cargo-sweep work without rustup?
- [good first issue] Rubble: Add a function for reading the device address to rubble-nrf52.
- [good first issue] Rubble: Don't give up when missing the initial transmit window.
- [good first issue] Rubble: LLCP updates are not applied when the event is missed.
- [good first issue] Rubble: Log buffer overflow on nrf52832.
- [good first issue] Rubble: Try out
zerocopyfor de/encoding of PDUs.
- [good first issue] Rubble: Only reply to LL_VERSION_IND once.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
217 pull requests were merged in the last week
- Allow foreign exceptions to unwind through Rust code and Rust panics to unwind through FFI
- expand: Feature gate out-of-line modules in proc macro input
- Lint ignored
#[inline]on function prototypes
- Improve the "try using a variant of the expected type" hint
- Use heuristics to recover parsing of missing
- Point at local similarly named element and tweak references to variants
- Custom lifetime error for
implitem doesn't conform to
- Add lint and tests for unnecessary parens around types
- Correct handling of type flags with
- Use structured suggestion for unnecessary bounds in type aliases
- save-analysis: Account for async desugaring in async fn return types
- Switch CrateMetadata's source_map_import_info from RwLock to Once
- Don't use
eval_alwaysfor miri queries used from codegen
- rustc: use IndexVec
instead of Vec
promote_constsemit the errors when required promotion fails
- Implement ordered/sorted iterators on
- hashbrown: Introduce
- cargo: Add --filter-platform to
- cargo: Fix
cargo fixnot showing colors
- chalk: Remove delayed literals
- chalk: Add TypeName::Error variant
- chalk: Output multiple solutions
- rustdoc: Stabilize
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.
- [disposition: merge] Announcing the FFI-unwinding Project Group.
- [disposition: postpone] Signing registry index commits.
- [disposition: merge] Stabilize --extern flag without a path.
- [disposition: merge] Fully integrate derive helpers into name resolution.
- [disposition: merge] Make the semantics of Vec::truncate(N) consistent with slices.
- [disposition: merge] Use ptr::drop_in_place for VecDeque::truncate and VecDeque::clear.
- Add method Result::into_ok.
- Make Cargo embed dependency versions in the compiled binary.
- Target tier policy.
- Nov 9 & 10. Barcelona, ES - RustFest Barcelona 2019.
- Nov 12. Hamburg, DE - Rust Hack & Learn November 2019.
- Nov 13. Wrocław, PL - Rust Wrocław Meetup #14.
- Nov 13. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- Nov 14. Zurich, CH - Rust Zurich - RustFest Decompression Zürich.
- Nov 14. Moscow, RU - Rust Moscow November 2019 Meetup.
- Nov 15. Barcelona, ES - Rust GTK/GStreamer Workshop at Linux Application Summit 2019.
- Nov 21. Turin, IT - Mozilla Torino - Gruppo di studio Rust.
- Nov 12. Seattle, WA, US - Seattle Rust Meetup - Monthly meetup.
- Nov 13. Atlanta, GA, US - Grab a beer with fellow Rustaceans.
- Nov 13. Vancouver, BC, CA - Vancouver Rust meetup.
- Nov 14. San Diego, CA, US - San Diego Rust November Meetup.
- Nov 14. Lehi, UT, US - Utah Rust - November 2019 Regular Meetup.
- Nov 14. Columbus, OH, US - Columbus Rust Society - Monthly Meeting.
- Nov 14. Montreal, QC, CA - Montreal Rust Meetup - November 2019 RustMTL: November Common Traits & Causal Profiling.
- Nov 20. Portland, OR, US - PDXRust - Hack Night.
- Rust Engineer at Commure, Inc. (San Francisco, Boston, Montreal).
- Data Analysis Software Engineer at Swift Navigation, San Francisco, US.
- Rust/Core Developer at Parity, Berlin, DE (Remote available).
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
I did manage to get this compile in the end - does anyone else find that the process of asking the question well on a public forum organizes their thoughts well enough to solve the problem?
Thanks to Daniel H-M for the suggestion!