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
- 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
- This week in Rust docs 41.
- This week in Servo 90.
- [video] Ferris makes Emulators 18: Sweep and Mod.
Crate of the Week
This week's crate of the week is tantivy, a full text search engine, akin to Lucene. Thanks to Jos van den Oever 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.
- 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
from boxed_local . - [easy] clippy: Writing out a
&Box<T>
type. - [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
- stabilize
Self
and associated types in struct exprs and patterns Self
in impl headers (Partially implements RFC #1647)- More lenient bounds parsing (to ease macros writing)
- add
std::process::Command::envs(_)
impl ToSocketAddrs for String
- binary ops will now note invalid double refs
- remove frequently wrong "add lifetime parameter" suggestion
- remove obsolete
Reflect
trait - remove recursive
PartialEq
impl - fix another endianness issue with 128 bit integers
- use
__SIZEOF__INT128__
to detect 128 bit integer support - fix parsing inconsistency with
return
x..y
exclusive range patterns- fix ICE when unprettying MIR
tcx.map
is nowtcx.hir
(possibly plugin-breaking)- make lifetime elision syntactic
- remove temporary lifetime extension borrow hints
save-analysis
now visits paths explicitlysave-analysis
: ICE after error avertedcfg-mods
option to parsecfg
d out modules- hide more internal symbols
- make incremental compilation cross-crate-tracking optional
- improve cargo error message on different dependency source paths
New Contributors
- Bryant Mairs
- Caleb Reach
- Collin J. Sutton
- Denis Andrejew
- Ömer Sinan Ağacan
- Raphael Das Gupta
- Segev Finer
- Tatsuyuki Ishi
- Zack Weinberg
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:
- Rust bookshelf. Create a "Rust Bookshelf" of learning resources for Rust.
- Variant types and untagged enums.
- Allow uncallable method impls to be omitted.
Closed RFCs
Following proposals were rejected by the team after their 'final comment period' elapsed.
No RFCs were closed this week!
New RFCs
- Fix the handling of uninhabited types in pattern matching.
- Add
SafeDeref
andSafeDerefMut
, equivalent toDeref
andDerefMut
but which are guaranteed to always return the same object. - Allow
extern crate
to take a list of crates.
Style RFCs
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!
PRs:
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.
..
vs_
.- function declarations.
- enum declarations.
- generics declarations.
Other significant issues:
Upcoming Events
- 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.
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
- Postdoc positions for RustBelt project at MPI-SWS.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Training opportunities
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.