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
- Async/Await I: Self-referential structs.
- Seamless Rust integration into JavaScript with Parcel.
- Rust lifetimes for the uninitialised.
- Unfolding a Stream of paginated items. How to use the
Stream
interface and functions from futures crate. - [opinion] Maybe it's time for a crates team.
- This week in Rust docs 90.
- [podcast] Rusty Spike Podcast - episode 16. Parcel, Mozilla, Lyon, a Redox interview and hackfest, Mercurial, and HackerRank.
#Rust2018
Find all #Rust2018 posts at Read Rust.
Crate of the Week
This week's crate is rust-semverver, an as-of-yet buggy, but already useful semantic versioning (semver) checking tool. Thanks to Philipp Hansch 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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
135 pull requests were merged in the last week
- stabilized
#[repr(align(x))]
attribute (RFC #1358) - implement intra-rustdoc links (RFC #1946)
- fix type inhabitedness check for arrays
- fix ICE on const eval of union field
- fix ICE when return type includes unconstrained anon region
- fix ICE when use trees have multiple empty nested groups
- fix ICE with
use self;
- fix never-type rvalue ICE
- track recursion limit when expanding existential impl trait
- rustc: SIMD types use pointers in Rust's ABI
- add CGU size heuristic for partitioning
- first round of LLVM 6.0.0 compatibility
- let LLVM 5 add DW_OP_deref to indirect args itself
- LLVM5: update DW_OP_plus to DW_OP_plus_uconst
- rustc: load the
rustc_trans
crate at runtime - rustc: add
-C lto=
{thin
,fat
} option - properly pass down immutability info for thread-locals
- simplify irrefutable slice patterns
- make use of the implemented red/green algorithm for variance
- do not capture stderr in the compiler. Instead just panic silently for fatal errors
- fix spans in unused import lint for nested groups
- add
-Z teach
flag to provide extended diagnostic help - on missing method do not suggest private traits
- immovable generators
- NLL test for mutating &mut references
- make the constructors of Duration const fns
- make core::ops::Place an unsafe trait
- make UnsafeCell::into_inner safe
- expose float
from_bits
andto_bits
in libcore - use the slice length to hint the optimizer about iter.position result
- add rustc-args option to test runner
- rustdoc: show when traits are auto traits
New Contributors
- evelynmitchell
- Gilad Naaman
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. This week's FCPs are:
- [disposition: merge] impl-only-use. The
use …::{… as …}
syntax can now accept_
as alias to a trait to only import the implementations of such a trait. - [disposition: merge] or-patterns in if / while let expressions.
- [disposition: merge] Finalize syntax of
impl Trait
anddyn Trait
with multiple bounds. - [disposition: merge] Fallible collection allocation 1.0.
- [disposition: merge] Unsized rvalues.
- [disposition: merge] eRFC: Cargo build system integration.
- [disposition: merge] Type privacy and private-in-public lints.
New RFCs
- Rust 2018 roadmap.
- Tighter coupling of Cargo workspaces.
- DynSized without ?DynSized — Lint against use of
extern type
insize_of_val
, and more. - Overconstraining and omitting
unsafe
in impls ofunsafe
trait methods.
Upcoming Events
- Feb 2 - Feb 4. Multiple locations - Rust Roadshow Brazil 2018.
- Feb 3 - Feb 4. Brussels - FOSDEM Rust Devroom
- Feb 4. Rust Bangalore - Rust for newbies (Part 2 of 12).
- Feb 6. Johannesburg Rust Meetup.
- Feb 7. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Feb 7. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Feb 7. Indianapolis - Indy.rs - February 2018.
- Feb 7. Rust Atlanta - Grab a beer with fellow Rustaceans.
- Feb 8. Helsinki - Finland Rust-lang Group.
- Feb 8. Columbus Rust Society - Monthly Meeting.
- Feb 8. San Diego Rust February Meetup.
- Feb 8. Rust release triage.
- Feb 9. Rust Table of Regulars Darmstadt / Germany
- Feb 10. Mangalore, India - RUSTCON2k18.
- Feb 12. Rust London User Group - LDN Talks: February 2018.
- Feb 12. Rust Amsterdam - Perl FFI && Long-term reliability in Rust projects.
- Feb 12. Seattle Rust Meetup - Monthly meetup.
- Feb 14. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Feb 14. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Feb 15. Cambridge Rust Meetup.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email the Rust Community Team for access.
Rust Jobs
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Failure is not an OPTION<T>. It’s a Result<T, E>.
Thanks to nasa42 for the suggestion!