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
- Why Hashbrown (Rust's new HashMap implementation) does a double-lookup on insertion.
- Chaining functions without returning self.
- "Learning Rust With Entirely Too Many Linked Lists" has been updated for Rust 2018.
- Miri available as rustup component.
- How to debug Rust with Visual Studio Code.
- Rust: The hard parts - part one: References, borrowing, and ownership.
- Procedural macro in Rust 101.
- Generalizing seqlocks: The swym algorithm.
- The phantom builder.
- Variance in Rust: An intuitive explanation.
- Rust All Hands 2019: Array iterators, Rayon, and more.
- This week in Rust and WebAssembly 14.
- The Embedded WG newsletter 17.
Crate of the Week
This week's crate is safety-guard, a crate providing a #[safety]
attribute that generates both a doc entry and debug assertion. 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.
- Call for proposal - RustLab 2019, June 28-29, Florence, IT.
- Tools Team: tell us your sorrows.
- grpc-rs: Add support for well-known types.
- TiKV: Flush logs on fatal errors.
- TiKV: Disable test suites that contain no tests.
- GNOME Google Summer of Code: couple of Rust-related ideas lined up for this year's GSOC. From low-level libraries like Gstreamer, and Librsvg, to system services, to desktop applications. More details can be found by searching this wiki page.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
169 pull requests were merged in the last week
- Move libtest out of rust-lang/rust
- Introduce assembly tests suite
- syntax: Better recovery for
$ty::AssocItem
andty!()::AssocItem
- MIR optimization: Run branch cleanup after copy propagation
- Do not complain about non-existing fields after parse recovery
- Make meta-item API compatible with
LocalInternedString::get
soundness fix - Use a valid name for graphviz graphs
- When moving out of a for loop head, suggest borrowing it
- When encountering
||{}()
, suggest the likely intended(||{})()
- Point at coercion reason for
if
expressions without else clause if caused by return type - Elide object safety errors on non-existent trait function
- Unify
OsString
/OsStr
for byte-based implementations - Add provided methods
Seek::
{stream_len
,stream_position
} - Add
todo!()
macro - Implement
ExactSizeIterator
forToLowercase
andToUppercase
- Make
Option<ThreadId>
no larger thanThreadId
withNonZeroU64
- Stabilize
refcell_map_split
feature - Add const generics to rustdoc
- crates.io: Allow download counts to fail to be updated
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
- [disposition: merge] Roadmap for 2019.
- [disposition: merge] Transparent Unions and Enums.
- [disposition: close]
mut (x, y, ..)
andmut [x, y, ..]
pattern shorthand.
Tracking Issues & PRs
- [disposition: merge] More restrictive 2 phase borrows - take 2.
- [disposition: merge] Introduce RefCell::try_borrow_unguarded.
- [disposition: merge] Tracking issue for {f32, f64}::copysign.
New RFCs
Upcoming Events
Africa
- Mar 30. Nairobi, KE - Rust Nairobi Meetup: Projects Showcase.
- Apr 3. Johannesburg, ZA - Johannesburg meetup - using Rust in production.
Asia Pacific
- Mar 29. Noida, IN - Fearless Concurrency in Rust - Knoldus Meetup.
- Mar 30. Taipei, TW - Rust Taiwan Meetup.
- Apr 20. Beijing, CN - RustCon Asia.
Europe
- Mar 28. Copenhagen, DK - Copenhagen Rust Hack Night #14.
- Mar 28. Toulouse, FR - Rust Toulouse meetup.
- Mar 31. St. Petersburg, RU - St. Petersburg Rust Meetup.
- Apr 3. Berlin, DE - Berlin Rust Hack and Learn.
- Apr 4. Zagreb, HR - Rust Meetup 201904: Persistent data in Rust.
- Apr 04. Wroclaw, PL - Rust Wroclaw Meetup.
- Apr 13. Kyiv, UA - PeerLab Kyiv #NativeDev: Rust 1.34 Release in Depth.
- Jun 28-29. Firenze, IT - RustLab.
North America
- Apr 3. Indianapolis, US - Indy.rs.
- Apr 3. Atlanta, US - Rust Atlanta Meetup.
- Apr 3. Vancouver, CA - Vancouver Rust meetup.
- Apr 9. Seattle, US - Seattle Rust Meetup - Monthly meetup.
- Apr 11. Arlington, US - Rust DC — Mid-month Rustful.
- Apr 11. Columbus, US - Columbus Rust Society - Monthly Meeting.
South America
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
- WebAssembly / Cranelift Intern (Summer 2019) at Mozilla, San Francisco, US.
- Senior Software Engineer at Metaswitch, North London, UK.
- Lead Engineer (Cryptography) at Cosmian, Paris, FR.
- Database Engineer Developer at Parity, Berlin, DE.
- Rust Software Consultant at Knoldus, Noida, IN.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
all the ergonomic improvements in rust 2018 are really messing up my book that consists entirely of running face-first into compiler errors so i can explain concepts.
– Alexis Beingessner, author of “Learning Rust With Entirely Too Many Linked Lists”
Thanks to icefoxen for the suggestion!
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.