Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safe, concurrent, and fast. This is a weekly summary of its progress and community. Want something mentioned? Send me an email! Want to get involved? We love contributions.
This Week in Rust is openly developed on Github. If you find any errors or omissions in this week's issue, please submit a PR.
What's cooking on master?
58 pull requests were merged in the last week.
Now you can follow breaking changes as they happen!
Breaking Changes
- The definitions of operators have changed to be more flexible. RFC.
std::sync
has been redesigned and rewritten for the nth time as a result of the ongoing runtime decimation.HashMap
no longer shrinks automatically, and some methods for managing the capacity have changed.
Other Changes
if let
,while let
, and tuple indexing are no longer feature-gated. RFC.- There's a new syntax for escaping unicode characters. The old will be deprecated briefly. RFC.
&[u8]
implementsReader
.- Typechecking has been moved into its own crate.
- Many
match
expressions in the compiler were replaced byif let
, which appears to be a nice improvement in readability. - The 'expected foo, found bar' parse errors are much more accurate about what they actually expect.
New Contributors
- Aaron Liblong
- jbranchaud
- jfager
- Jim Apple
- kulakowski
- Mukilan Thiyagarajan
- Oliver Schneider
- Paul Collier
- Victor van den Elzen
Approved RFC's
- 450: Un-feature-gate
if let
,while let
and tuple indexing. - 490: Change
Sized?
syntax. FromSized? T
toT: Sized?
.
New RFC's
- 495: Array pattern adjustments. Fixes several limitations.
- Ammendment to RFC 439 for grammar ambiguity. There's an
ambiguity with
..foo
in the previously-accepted slicing RFC. - 499: NonZero lang item. A way to tell the compiler that a value is not 0.
- 501: Consistent no-prelude attribute. Reworks the mechanism for opting out of the prelude.
- 502: Remove blanket extension impls. Blanket implementations make it impossible to override default methods.
- 503: Stabilize std::prelude. Scrutinizes what is included in the prelude, removing many traits.
- 504: Split
Show
intoString
andShow
. Repurposes{:?}
.
Community
Get your (unofficial) rustacean t-shirts!
From the Team
There was no weekly meeting as the team was at a workweek in Portland. There weren't a lot of coherent minutes taken this time, but any discussions of substance will result in RFCs. Topics were largely around stabilization in preparation for 1.0, and this workweek featured a greater ratio of hacking to talking than previous ones.
Blog Posts
Zbigniew Siciarz has been writing an informative (and ambitious) series called "24 Days of Rust". Nice work, Zbigniew!
- 24 Days of Rust - Cargo and crates.io. Reddit.
- 24 Days of Rust - slow_primes. Reddit.
- 24 Days of Rust - CSV. Reddit.
- 24 Days of Rust - docopt. Reddit.
- 24 Days of Rust - hyper. Reddit.
- 24 Days of Rust - working with JSON. Reddit.
- 24 Days of Rust - itertools. Reddit.
But that's not all that's going on!
- The story of my childhood, or: Rust on the PSP. Reddit.
- Progress on Rustdoc source link problems. lifthrasiir spreads the love of rustc metadata. Reddit.
- A Beginner's Thoughts on Programming Languages (Part 1). Some mentions of Rust.
Discussions
- Reading Rust aloud.
- Clarification on standard library stability and the push to 1.0.
- Brainf*uck in Rust's type system (aka type system is Turing complete). Rust is serious business now.
- How does
Cow
work. - Package naming and grouped packages.
- D's proposal for escape-proof references, with some similarities to Rust's borrowed references. In which Walter Bright graces our subreddit and we totally fail to capitalize.
- Aren't exceptions mostly implemented for dtors?
- C++'s rvalue
&&
references correspond to&mut
. "But then life is pain, and C++ doubly so." - Why Rust started rather than Ada? No authoritative answers here but some interesting discussion.
- PSA: Copy is becoming opt-in. Reddit.
- Could the GC case be made noise-free by default?
- Rustdoc: reStructuredText vs. Markdown. Another round of the age-old debate.
- Repr formatter with ShowRepr trait.
New Projects
- BitRust. A live breaking changes log!
- Sea Birds' Breakfast. long_void's Ludum Dare 31 entry.
- speedtest-rust. Command-line tool for testing Internet speed. Reddit.
- rust-once-mutex. A mutex providing one-time lock and subsequent fast access. Reddit.
- osmpbfreader-rs. OpenStreetMap BPF file reader. Reddit.
- rust-promise. A basic promise type. Reddit.
- rust-buildbot. The scripts running Rust's buildbot instance.
- matches. The
matches!
macro is on crates.io. - time_calc. Music and DSP time conversion. Reddit.
- rust-jwt. JSON Web Token. Reddit.
- rust-beanstalkd. A beanstalkd client. Reddit.
- rusty-tags. tags generator for cargo projects. Reddit.
- acacia. Generic spatial tree library. Reddit.
- doc_file. Write crate documentation in an external file. Reddit.
Project Updates
- New graphics library design - Piston.
- The Rust implementation of docopt now offers tab completion.