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
- Rust in 2017: what we achieved.
- Five years with Rust.
- mrustc - a Rust compiler written in C++ can now build rustc from a source tarball.
- Introducing May - a stackful coroutine library in Rust.
- Introducing YEW - a framework for making Elm/React/Angular-like client web-apps with Rust.
- Debugging a segfault in a Rust program.
- Undefined vs unsafe in Rust.
- The final impl period newsletter.
- [podcast] Rusty Spike Podcast - episode 13. Debugging WASM->Rust, more Google tools, stdweb, NLL, and tokio.
- [podcast] New Rustacean: Increasing Rust's reach – Anna Liao, on Anna's experience learning Rust while porting a Raspberry Pi Python project as part of the Increasing Rust’s Reach 2017 program.
- [podcast] New Rustacean: Increasing Rust's reach – Lee Baillie, on Lee's experience designing a new website for Rust.
Crate of the Week
This week's crate is crossbeam-channel, a crate that improves multi-producer multi-consumer channels compared to what the standard library offers. Thanks to leodasvacas 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
118 pull requests were merged in the last week
feature(nll)
- non-lexical lifetimes- prevent unwinding past FFI boundaries (finally!)
- prevent rustc overwriting input files
-C incremental
and enable incremental by default (this effectively stabilizes incremental compilation)- do not emit type errors on recovered blocks
- kill borrows on a local variable whenever we assign over it
- MIR borrowck: no "move occurs because
X
is not Copy` error - MIR: terminate unreachable blocks in
construct_const
- rustc: set release mode cgus to 16 by default
- rustc: sort codegen units before merging (fix non-determinism)
- rustc: do not raise the alignment of optimized enums to the niche's alignment
- rustc: ensure optimized enums have a properly aligned size
- rustc: work around
DICompileUnit
bugs in LLVM - fix ICE when calling non-functions within closures
- work towards thread safety in rustc
- fix -Z lower_128bit_ops handling of statics
- type privacy polishing
- only mark unions as uninhabited if all of their fields are uninhabited
visible_parent_map
now sorts by crate num- convert warning about
*const _
to a future-compat lint - lint against single-use lifetime names
- set the dwarf linkage_name to the mangled name
- fix debuginfo scoping of let-statements
- add a feature gate for nested uses of
impl Trait
- ensure separate activations only occur for assignments to locals
- move
PhantomData<T>
fromShared<T>
to users of bothShared
and#[may_dangle]
- add Hash impl for SystemTime and Instant
- capture
Command
environment at spawn - add more Duration methods for consistency
- reject superfluous
::
in IPv6 addresses - stablize
RefCell::
{replace
,swap
} - rustdoc: const-eval array lengths
New Contributors
- Antal Szabó
- Christopher Durham
- Ed Schouten
- Florian Keller
- Jonas Platte
- Matti Niemenmaa
- Sam Green
- Scott Abbey
- Wilco Kusee
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. This week's FCPs are:
- [disposition: merge] Fallible collection allocation 1.0.
- [disposition: merge] Implicit caller location (third try to the unwrap/expect line info problem).
- [disposition: merge] Unsized rvalues.
- [disposition: merge] eRFC: Cargo build system integration.
- [disposition: merge] Type privacy and private-in-public lints.
New RFCs
Upcoming Events
- Dec 28. Rust release triage.
- Jan 2. Monthly Meetup of the Johannesburg Rustaceans.
- Jan 3. Indy.rs - 2018 kickoff - Indianapolis.
- Jan 3. Rust Atlanta - Grab a beer with fellow Rustaceans.
- Jan 3. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jan 3. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Jan 7. Dive into Rust @ Guna, MP India.
- Jan 8. Seattle Rust Monthly Meetup.
- Jan 9. Downtown Community Hack Night at nordstromrack.com | Hautelook - Los Angeles.
- Jan 10. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jan 10. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Jan 11. Rust release triage.
- Jan 11. San Diego Rust January Meetup.
- Jan 11. Columbus Rust Society - Monthly Meeting.
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
Every great language needs a Steve.
— aaron-lebo on Hacker News about @steveklabnik.
Thanks to Aleksey Kladov for the suggestion!