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
- Nightly Rust compiler and Cargo now run on Redox.
- Announcing Failure.
- Speed up your Python using Rust.
- Evolving Rust with Milksnake.
- Crates.io ecosystem not ready for embedded Rust.
- This week in Rust docs 82.
- Notes from Rust+GNOME Hackfest in Berlin - by Federico, Guillaume, and Antoyo.
- [podcast] Rusty Spike Podcast - episode 8. Firefox Quantum, Lin’s Quantum post, fearless concurrency, incremental typecheck, better wasm support, and Cargo on Redox.
Crate of the Week
This week's crate is Ammonia, a crate for sanitizing HTML to prevent cross-site scripting (XSS), layout breaking and clickjacking. Thanks to Jules Kerssemakers 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.
- Contribute to Rust's 2017 impl period.
- Molten - "a style-preserving TOML parser" has some easy and accessible issues for beginners.
- [easy] mdbook: Select default theme.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
110 pull requests were merged in the last week
- implement
impl Trait
in argument position (RFC #1951) - trait object debug
- refactor type memory layouts and ABIs, to be more general and easier to optimize
- enable TrapUnreachable in LLVM
- incr.comp.: Implement query result cache and use it to cache type checking tables
- incr.comp. Collect stats about duplicated edge reads from queries
- set short-message feature unstable
- std: Add a new wasm32-unknown-unknown target
- always add an unreachable branch on matches to give more info to llvm
- MIR: hardcode pass list internally and remove premature pluggability
- handle closures correctly in MIR inlining
- normalize inlined function in MIR inliner
- fix MIR borrowck EndRegion not found
- add
StorageDead
handling - ignore borrowck for static lvalues and allow assignment to static muts
- integrate MIR type-checker with NLL inference
- MIR-borrowck: don't ICE for cannot move from array error
- rustc_trans: atomically write .rmeta outputs to avoid races
- simplify higher-ranked LUB/GLB
- short-circuiting internal iteration with Iterator::try_fold & try_rfold
- rustc_driver: expose a way to override query providers in CompileController
- cargo: Add support for publish to optionally take the index that can be used
- start shipping the Cargo book
- support
extern type
in rustdoc - make rustdoc not include self-by-value methods from Deref target
- rustdoc: Fix primitive types not showing up
New Contributors
- Alexey Orlenko
- Benjamin Hoffmeyer
- Chris Vittal
- Collin Anderson
- Dan Gohman
- Jeff Crocker
- Laurentiu Nicola
- loomaclin
- Martin Lindhe
- Michael Lamparski
- Ramana Venkata
- Ritiek Malhotra
- Robert T Baldwin
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
- Nov 24. Monkey Tech Days Toulouse, France - Explore Languages (Go Vs Rust) - MKTD#5.
- Nov 25. Rust Bangalore - Rust Concurrency (part 2 of 2).
- Nov 27. Triangle Rustaceans Durham, NC - Algebraic Data Types in Practice and Theory.
- Nov 29. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Nov 29. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Nov 29. OpenTechSchool Berlin - Rust Hack and Learn.
- Nov 30. Rust Munich: Rust Machine Learning with Juice.
- Nov 30. Rust Detroit - Introducing Tock OS 1.0.
- Nov 30. Rust release triage.
- Dec 6. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Dec 6. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Dec 6. Rust Cologne: impl Glühwein.
- Dec 6. Rust Atlanta: Grab a beer with fellow Rustaceans.
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
Rust's abstraction layers feel both transparent and productive. It's like being on a glass-bottomed boat, you see the sharks, but they can't get you. It's like a teaching language that you can also use in production. Rust helped me understand C. Also Rust people are amazing.
Thanks to @sebasmagri for the suggestion!