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
- Announcement: a new Release Team, and new leadership for the Infrastructure Team.
- Clap's new year's weight loss program with cargo-bloat.
- What’s Tokio and async IO all about?
- Writing complex macros in Rust: Reverse Polish notation.
- About the undefined behavior.
- Benchmarking in stable Rust with criterion.rs.
- Running Rust in browser: A tutorial with Turtle.
- Debugging Rust programs with lldb on MacOS.
- A year with Rust & game dev.
- Rust Enhanced: 2017 in review and what's coming in 2018. Rust Enhanced is the official Sublime Text 3 package for Rust.
- This week in Rust docs 88.
- [podcast] New Rustacean: Interview – Diesel 1.0, with Sean Griffin, part 1. On growing Diesel's community, self-imposed technical challenges, and some of the ways Diesel has contributed to the Rust ecosystem.
- [podcast] Rusty Spike Podcast - episode 14. #Rust2018 blogging, Rust 1.23, Rust 1.24, Diesel 1.0, cargo-bloat, Programming Rust O’Reilly book, mrustc, May, the final impl period, and the Rust year in review.
#Rust2018
Find all #Rust2018 posts at Read Rust.
Crate of the Week
This week's crate is cargo-bloat, a cargo subcommand to find out how much space crates/functions take up in an executable. 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.
- [doc] [good first issue] Help Rayon prepare for 1.0.
- Get started with these beginner-friendly issues.
- Tera: Allow filters in math operations in 0.11. Tera is a template engine for Rust based on Jinja2/Django.
- [good first issue] Gutenberg: Make content::Section hold references. Gutenberg is an opinionated static site generator with everything built-in.
- [good first issue] Aardwolf: Routing for web templates. Aardwolf is a platform for creating new social networks, connected across the web.
- [good first issue] miniz_oxide: Port CVE and other tests from zlib-ng. miniz_oxide is a Rust replacement for miniz deflate/zlib encoder/decoder.
- mdBook: Add not found page.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
158 pull requests were merged in the last week
- add a "-Z offline" flag to Cargo, altering it's dependency resolution behavior
auto trait Foo { .. }
- fix std breakage with custom libdir
- syntax: rewrite parsing of impls
- add error code for unstable feature errors
- type error method suggestions use whitelisted identity-like conversions
- avoid panicking when invalid argument is passed to
cfg(..)
- NLL: bad error message when converting anonymous lifetime to
'static
- NLL: resolve type and region variables in "NLL dropck"
- treat
#[path]
files as mod.rs files - shorten names of some compiler generated artifacts
- account for
pub
inconst
→static
suggestion - remove deprecated unstable attribute
#[simd]
- rustc: tweak
#[target_feature]
syntax - macros: improve 1.0/2.0 interaction
- make double ended searchers use dependent fingers
- add iterator method specialisations to
Range*
- fix built-in indexing not being used where index type wasn't "obviously"
usize
- add
slice::
{ExactChunks
,ExactChunksMut
} iterators - better Debug impl for io::Error
- fix nested imports not included in the save_analysis output
- implement AsRef
for Component BufRead
: only flush the internal buffer if seeking outside of it- pre-allocate in
fs::
{read
,read_string
} - implement
Write
forCursor<&mut Vec<T>>
- fix off-by-one error in
BufWriter
documentation - deprecate
[T]::rotate
in favor of[T]::rotate_
{left
,right
} - add
HashMap::remove_entry
New Contributors
- Alexander Regueiro
- Alexis Hunt
- Bulat Musin
- Dan Robertson
- Fenrir
- Kagamihime
- muvlon
- Neil Shen
- O01eg
- ritiek
- Ryan Cumming
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] Finalize syntax of
impl Trait
anddyn Trait
with multiple bounds. - [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
- Benchmarking / cargo bench.
- Associated type bounds of form
MyTrait<AssociatedType: Bounds>
. - Add
std::mem::zero
. - Allow
if let
guards inmatch
expressions.
Upcoming Events
- Jan 18. Rust DC - Mid-month Rustful.
- Jan 18. Cambridge Rust Meetup.
- Jan 20. Rust Bangalore - Rust for newbies (part 1 of 12).
- Jan 22. Durham, NC - Triangle Rustaceans - Rust 101.
- Jan 22. Lyon, France - TupperRust (registration required).
- Jan 23. A deep dive into Rust @ Facebook Developer Circle Ruhr.
- Jan 23. Boston Rust - January Meetup at Amazon.
- Jan 24. Milano - Overload di funzioni in Rust - Come ho imparato a vivere felicemente senza.
- Jan 24. Rust NYC - Traits.
- Jan 24. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jan 24. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Jan 25. Rust release triage.
- Jan 29. Rust London User Group - LDN Talks: January 2018.
- Jan 31. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jan 31. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
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
No jobs listed for this week.
Quote of the Week
Anything that will make wasm nicer will be awesome, but honestly, I’m thrilled with what we’ve got. It feels absolutely insane that I can just compile this language that’s basically the opposite of JavaScript and it’s running in the browser.
— Tomas Sedovic in a #Rust2018 post.
Thanks to ErichDonGubler and CAD97 for the suggestion!