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.
Updates from Rust Community
News & Blog Posts
- An overview of macros in Rust.
- Lowering Rust traits to logic.
- Lazy initialization in Rust.
- How-to optimize Rust programs on Linux.
- A guide to porting C/C++ to Rust.
- Building high performance REST APIs with Rust and Rocket.
- Building an asynchronous Hyper server.
- The struggle with Rust.
- Setting expectations for Rust's difficulty.
- Initial Rust support has landed in Apache Thrift.
- Serde 0.9.0 and serde_json 0.9.0 released with redesigned error-reporting API, better no_std support, a
json!macro, and some important breaking changes.
Other Weeklies from Rust Community
Crate of the 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.
- kafka-rust: Parallel communication to brokers.
- kafka-rust: Integration testing.
- [easy] clippy: Lint for redundant cast.
- [easy] clippy: Exclude self-by-value trait methods implemented on Box
- [easy] clippy: Writing out a
- [easy] clippy: Lint on method/struct fields sharing the same name.
- [easy] Diesel: Refactorings using macros in type position.
- android-rs-glue: Add more arguments and use clap to parse the arguments.
- tokei: Add package repositories.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
103 pull requests were merged in the last week.
- stabilizations for the 1.16.0 release
Selfand associated types in struct exprs and patterns
Selfin impl headers (Partially implements RFC #1647)
- More lenient bounds parsing (to ease macros writing)
impl ToSocketAddrs for String
- binary ops will now note invalid double refs
- remove frequently wrong "add lifetime parameter" suggestion
- remove obsolete
- remove recursive
- fix another endianness issue with 128 bit integers
__SIZEOF__INT128__to detect 128 bit integer support
- fix parsing inconsistency with
x..yexclusive range patterns
- fix ICE when unprettying MIR
- make lifetime elision syntactic
- remove temporary lifetime extension borrow hints
save-analysisnow visits paths explicitly
save-analysis: ICE after error averted
cfg-modsoption to parse
cfgd out modules
- hide more internal symbols
- make incremental compilation cross-crate-tracking optional
- improve cargo error message on different dependency source paths
- Bryant Mairs
- Caleb Reach
- Collin J. Sutton
- Denis Andrejew
- Ömer Sinan Ağacan
- Raphael Das Gupta
- Segev Finer
- Tatsuyuki Ishi
- Zack Weinberg
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
- Rust bookshelf. Create a "Rust Bookshelf" of learning resources for Rust.
- Variant types and untagged enums.
- Allow uncallable method impls to be omitted.
Following proposals were rejected by the team after their 'final comment period' elapsed.
No RFCs were closed this week!
- Fix the handling of uninhabited types in pattern matching.
SafeDerefMut, equivalent to
DerefMutbut which are guaranteed to always return the same object.
extern crateto take a list of crates.
Style RFCs are part of the process for deciding on style guidelines for the Rust community and defaults for Rustfmt. The process is similar to the RFC process, but we try to reach rough consensus on issues (including a final comment period) before progressing to PRs. Just like the RFC process, all users are welcome to comment and submit RFCs. If you want to help decide what Rust code should look like, come get involved!
Ready for PR:
There's a lot of them right now, contributions here would be very welcome. If you want advice or help getting started, please ping nrc, or any other member of the style team, in #rust-style.
Issues in final comment period:
- Whitespace in associated type syntax.
- function declarations.
- enum declarations.
- generics declarations.
Other significant issues:
- 2/1. Rust User Group Cologne - Macros 1.1.
- 2/1. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 2/1. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- 2/2. TupperRust - Lyon, France.
- 2/2. Stockholm Google Developer Group - Rust Talk.
- 2/4 - 2/5: FOSDEM 2017 Belgium - Meeting for Rustaceans.
- 2/8. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 2/8. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- 2/9. Rust Bay Area: Security and Crypto with RustTLS and Macaroons.
- 2/9. Rust Boulder/Denver - Redox OS with Denver Open Source OS.
- 2/9. Columbus Rust Society - Monthly Meeting.
- 2/9. Rust release triage.
- 2/13. Seattle Rust Meetup.
- 2/15. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 2/15. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- 2/16. Rust DC Learn + Try: clap.rs.
- Postdoc positions for RustBelt project at MPI-SWS.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Three day Rust course at LinuxHotel. (German)
Quote of the Week
Clippy is for those of you who have become desensitized to the constant whining of the Rust compiler and need a higher dosage of whininess to be kept on their toes. Clippy is for those perfectionists amongst you who want to know every minute thing wrong with their code so that they can fix it. But really, Clippy is for everyone.
Thanks to Johan Sigfrids for the suggestion.