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.22 (and 1.22.1).
- GTK Rust tutorials - a series.
- Writing fast and safe native Node.js modules with Rust.
- Improving Ruby performance with Rust.
- This week in Rust docs 83.
- [podcast] New Rustacean News: Rust 1.21 and 1.22. Quality of life improvements, Failure, wasm, and rustdoc fun – or, a bunch of highlights from the new releases and the community since 1.20.
- [podcast] Rusty Spike Podcast - episode 9. We chat about impl trait, Rust/GNOME hackfest, memory layouts, Visual Studio, failure, suricata, wasm, and some feel-good news.
Crate of the Week
This week's crate is faster, a crate for zero-overhead, cross-platform, beautiful explicit SIMD code. Thanks to Vikrant 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.
- tera: Allow other type of quotes for strings in the parser. Tera is a template engine for Rust based on Jinja2/Django.
- tera: Sort filter (and possibly some others).
- smallvec: Dedup functionality. "Small vector" optimization for Rust: Smallvec lets you store up to a small number of items on the stack.
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
- rustbuild: Enable WebAssembly backend by default
- rustc: Add support for some more x86 SIMD ops
- rustc: don't mark lifetimes as early-bound in the presence of impl Trait
- implement in-band lifetime bindings
- impl Trait Lifetime Handling
- Display negative traits implementation
- Properly handle reexport of foreign items
- Make accesses to fields of packed structs unsafe
- support
::crate
in paths - allocators: don’t assume MIN_ALIGN for small sizes
- Kill the storage for all locals on returning terminators
- incr.comp.: Make sure we don't lose unused green results from the query cache
InstCombine Len([_; N]) => const N
in MIR- do match-check for consts
- rustc_trans: don't apply noalias on returned references
- allow filtering analysis by reachability
- typeck aggregate rvalues in MIR type checker
- add a MIR pass to lower 128-bit operators to lang item calls
- add a MIR-borrowck-only output mode
- MIR Borrowck: Parity with Ast for E0384 (Cannot assign twice to immutable)
- add structured suggestions for various "use" suggestions
- be more obvious when suggesting dereference
- add hints for the case of confusing enum with its variants
- dead code lint to say "never constructed" for variants
- add process::parent_id
- impl From for Mutex and RwLock
- optimize
read_to_end
- make float::from_bits transmute
- implement
Rc
/Arc
conversions for string-like types - add Box::leak<'a>(Box
) -> &'a mut T where T: 'a - move closure kind, signature into
ClosureSubsts
- add RefCell
::replace_with - rustdoc: Fix path search
- show in docs whether the return type of a function impls Iterator/Read/Write
- rustdoc: include external files in documentation (RFC #1990)
New Contributors
- colinmarsh19
- David Alber
- Julien Cretin
- Maxim Zholobak
- Mazdak
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
- Cargo publish with internal path dependencies.
- Hexadecimal integers with fmt::Debug, including within larger types.
Upcoming Events
- 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 Cologne: impl Glühwein.
- Dec 6. Rust Atlanta: Grab a beer with fellow Rustaceans.
- Dex 6. Rust Roma: Rust learning and hacking evening #4.
- 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 11. Seattle Rust Meetup.
- Dec 13. Rust Amsterdam: Theme night on Procedural Macros & Custom Derive
- Dec 13. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Dec 13. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Dec 13. OpenTechSchool Berlin - Rust Hack and Learn.
- Dec 14. Rust release triage.
- Dec 14. Rust DC - Mid-month Rustful: Falcon.
- Dec 14. 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
Indeed. I notice even when after some Rust I return to the “main day job” C, I start to think differently, and it is excellent. Rust is like a complement to good diet and exercise.
Thanks to juleskers for the suggestion!