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.38.0. ๐๐
- Security advisory for Cargo.
- Async-await hits beta.
- Accurate mental model for Rust's reference types.
- Fighting the Async fragmentation.
- Making a RISC-V Operating System using Rust.
- Plugins in Rust.
- Building the Azure IoT Edge Security Daemon in Rust.
- Adventures in motion control: FPS counter.
- Causal profiling Rust code.
- gfx-rs 2019 update.
- Announcing Drone OS - an embedded operating system for writing real-time applications in Rust.
Crate of the Week
This week's crate is pin-project, a proc-macro-derive for ergonomic and safe Pin
projections.
Thanks to Krishna Sannasi 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.
- vector: Update
stdin
source to use a thread instead of using the tokio version. Vector is a high-performance observability data router. - mundane: Build docs.rs documentation with all features enabled. Mundane is a Rust cryptography library backed by BoringSSL.
- rustfm-scrobble: Issues for Hacktoberfest. rustfm-scrobble is a Last.fm scrobble API library in Rust.
- Tokamak is looking for maintainers. Tokamak is a Rust IDE for Atom.
- Bastion is looking for maintainers. Bastion is a fault-tolerant runtime for Rust applications
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
278 pull requests were merged in the last week
- Rest In Peace, AST borrowck (2012-2019)
- Fix double panic when printing query stack during an ICE
- or-patterns: Push
PatKind/PatternKind::Or
at top level to HIR & HAIR - Fix format macro expansions spans to be macro-generated
- Remove blanket silencing of "type annotation needed" errors
- Include message on tests that should panic but do not
- Point at definition when misusing ADT
- Account for tail expressions when pointing at return type
- On obligation errors point at the unfulfilled binding when possible
- Fix coherence checking for impl trait in type aliases
- Propagate
types.err
in locals further to avoid spurious knock-down errors - check_match: Improve diagnostics for
let A = 2;
withconst A: i32 = 3
- Point at enclosing match when expecting
()
in arm - Add a cycle detector for generic
Graph
s andmir::Body
s - Add const-eval support for SIMD types, insert, and extract
- Implement dataflow-based const validation
- Optimize
try_eval_bits
to avoid layout queries - Even more
ObligationForest
improvements - A more explanatory thread local storage panic message
- Stabilize
str::len
,[T]::len
andstr::as_bytes
as const fn - Reserve
impl<T> From<!> for T
- Remove manual unrolling from
slice::Iter
(Mut
)::try_fold
- compiler-builtins: Implement bcmp
- cargo: Improve test output with
--quiet
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
- [disposition: merge] Minimum supported Rust version.
- [disposition: close] Project-based Examples for Cargo Projects.
Tracking Issues & PRs
- [disposition: merge] Tracking issue for RFC 2008: Future-proofing enums/structs with #[non_exhaustive] attribute.
- [disposition: merge] Stabilize
Option::as_deref
andOption::as_deref_mut
. - [disposition: merge] Stabilize mem::take (mem_take).
- [disposition: merge] Stabilize
slice::repeat
(featurerepeat_generic_slice
).
New RFCs
Upcoming Events
Asia Pacific
Europe
- Oct 4. Toulouse, FR - Toulouse Rust Meetup - Future.
- Oct 4. Darmstadt, DE - Hacktoberfest for Rustaceans.
- Oct 5. Kharkiv, UA - PeerLab Kharkiv #Rust: AsyncIO.
- Oct 9. Zagreb, HR - impl Zagreb for Rust: Rust, FFmpeg i TensorFlow.
- Oct 10. Helsinki, FI - Finland Rust-lang Group - October meetup.
- Oct 10. Warsaw, PL - Rust Warsaw - reboot.
- Oct 16. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
North America
- Oct 5. Cleveland, OH, US - Cleveland RustBridge.
- Oct 8. Detroit, MI, US - Detroit Rust - Diving into Rust web frameworks.
- Oct 9. Atlanta, GA, US - Grab a beer with fellow Rustaceans.
- Oct 10. Columbus, OH, US - Columbus Rust Society - Monthly Meeting.
- Oct 10. Arlington, VA, US - Rust DC โ Mid-month Rustful.
- Oct 16. Vancouver, BC, CA - Vancouver Rust meetup.
- Oct 18 & 19. Dayton, OH, US - Rust Belt Rust.
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.38].
- Software engineer (New grad) at Embark Studios, Stockholm, SE.
- Multiple Rust jobs at Matter Labs (Berlin, Kiev, remote).
- Rust internship at Tsuru Capital, Tokyo, JP.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Sadly, there were no nominations this week.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.