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
- A call for blogs 2020.
- Why async fn in traits are hard.
- Spark implemented in Rust with promising results.
- Nannou awarded Mozilla grant for foundational audio development in Rust.
- Rust and C++ on floating-point intensive code.
- docs.rs outage postmortem.
- Cost of rust-analyzer.
- Building a widget for Druid (a WIP native Rust GUI toolkit).
- Ferris Fencing - a Rust game built on a RISC-V VM.
- Technique for doing specialization on a stable compiler safely.
- A closer look at Ownership in Rust.
- Programming Servo: the incredibly shrinking timer.
- Making good On momo's compile-time promise.
- Adventures in motion control: initial motion system.
- Please welcome pnkfelix as compiler team co-lead.
Crate of the Week
Sadly, there was no nomination for crate of the week.
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.
- [good first issue] async-std: use once_cell instead of lazy_static.
- [good first issue] async-std: Add Future::flatten.
- [good first issue] async-std: Add stream::from_iter.
- [good first issue] async-std: TCP smoke testing.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
347 pull requests were merged in the last week
- Don't ICE for completely unexpandable
impl Trait
types - Eliminate
intersect_opt
- Derive
Rustc{En,De}codable
forTokenStream
- Forbid non-
structural_match
types in const generics - Turn crate store into a resolver output
- Simplify chalk-engine a bit
- Use heuristics to suggest assignment
- Point at associated type for some obligations
- Lockless
LintStore
- Remove unnecessary trait bounds and derivations
- Change untagged_unions to not allow union fields with drop
- miri: Add
write_bytes
method to Memory doing bounds-checks and supporting iterators - Object safe for dispatch
- Fix WASI sleep impl
- Stabilize
const_constructor
- Stabilize
Option::flatten
- Stabilize
#[non_exhaustive]
(RFC 2008) - Make
is_power_of_two
a const function - Add by-value iterator for arrays
- Add
Cow::
{is_borrowed
,is_owned
}()
- Add
[_]::
{as_ptr_range
,as_mut_ptr_range
}()
- Add {
String
,Vec
}::into_raw_parts()
- Add the
matches!( $expr, $pat ) -> bool
macro - Relax
ExactSizeIterator
bound onwrite_bytes
- rustdoc: Forward
-Z
options to rustc
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: postpone] Signing registry index commits.
Tracking Issues & PRs
- [disposition: merge] Stabilize --extern flag without a path.
- [disposition: merge] Stabilize cfg(doctest).
- [disposition: merge] Fix accidental stabilization in feature-detection macros.
- [disposition: merge] Implement @argsfile to read arguments from command line.
- [disposition: merge] Tracking issue for todo! macro.
- [disposition: merge] Tracking issue for floats ↔ bytes conversions.
- [disposition: merge] Under what conditions can you implement Copy for a union?
New RFCs
- Propose implicit named arguments for formatting macros.
- Announcing the FFI-unwinding Project Group.
- Environment variable sandboxing.
- Add
[T]::as_ptr_range()
. - Subslice-offset - Get the offset of references into a slice.
Upcoming Events
Africa
Asia Pacific
- Nov 4. Auckland, NZ - Rust AKL - Introduction to Rust (part 2 of 3).
- Nov 13. TBD, MY - Rust Malaysia Meetup November 2019.
Europe
- Nov 2. Lviv, UA - Peer Lab Lviv #Rust: Introduction.
- Nov 2. Kharkiv, UA - Peer Lab Kharkiv #Rust: Command-Line Applications in Rust.
- 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 15. Barcelona, ES - Rust GTK/GStreamer Workshop at Linux Application Summit 2019.
North America
- Nov 6. Indianapolis, IN, US - Indy.rs.
- Nov 13. Atlanta, GA, US - Grab a beer with fellow Rustaceans.
- Nov 12. Seattle, WA, US - Seattle Rust Meetup - Monthly meetup.
- 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.
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
- Embedded Software Engineer at Sense, Cambridge, MA, US.
- Rust Intern at RUDDER, Paris, FR.
- Software Engineer at Oso Security, New York, NY, US.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
…man, starting to dig through the source code of a really large open source program is so weird. It’s like wandering around a giant cathedral that’s being constantly renovated and repaired and maintained over the course of years by a giant team of invisible crafters and architects, who mostly communicate via notes and designs pinned to the walls in various places.
Thanks to Ralf Jung for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.