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? 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.
This week's edition was edited by: Brian Anderson.
Notable Links
- A graph-based higher-order intermediate representation. A novel intermediate representation for a dialect of Rust.
- Interview with Mozilla's Aaron Turon.
- Out of curiosity - Who is currently focusing on improving compile times? If so, how is it coming along?. People are working on compile time.
- Hodor esolang as a Rust macro.
- dispatcher. Many-to-many channels.
- 'When you have no room for error'. The CommitStrip comic mentions Rust.
- Fundraiser for a multi-language (incl. Rust) teaching tent at Chaos Communication Camp.
Project Updates
- Homu, a gatekeeper for your commits. Barosl is now offering homu-as-a-service. This is the CI system Rust and Servo both use, and it is compatible with Travis CI.
- rustorm. A simple ORM.
- snake-piston. A snake game written with Piston.
- yaml-rust. A pure-Rust YAML 1.2 parser.
- crust. Reliable p2p with NAT traversal.
- aho-corasick. Fast multi-substring nmatching.
- pcapng-rs. A pcapng parser written with nom.
- deuterium. A fully-typed SQL query builder.
- regex. It got faster. A lot faster.
What's cooking on master?
160 pull requests were merged in the last week.
Now you can follow breaking changes as they happen!
Breaking Changes
- Prevent raw pointers from being used as explicit self. Probably nobody has ever tried to write such code, and the current implemented behavior is bonkers.
Other Changes
- Add
Result::expect
. - Add
CString::from_ptr/into_ptr
. For transfering ownership of C strings across the FFI. - Implement
str::split_at
. - Stabilize a number of new
fs
features. - Parallel code generation works
again. Pass
rustc -C codegen-units=4
to try. - The
to_uppercase
andto_lowercase
functions now support complex case mapping. This changes the behavior of the stablechar::to_uppercase/to_lowercase
and also stabilizesstr::to_uppercase/to_lowercase
. - Implement
Extend<&T> where: T: Copy
for a variety of collection types. - The unstable
String::from_str
is deprecated. UseString::from
. - Heuristics for detecting identifier typos are improved.
New Contributors
- ben fleis
- David Voit
- Eli Friedman
- frankamp
- funkill
- Johann Tuffe
- joliv
- Joshua Landau
- Leo Correa
- marcell
- Marcel Müller
- Matthew Astley
- Nathan Long
- Nick Fitzgerald
- Russell McClellan
- saml
- simplex
- swgillespie
Approved RFCs
- RFC 1105. Policy on API evolution. Describes how the Rust project evaluates changes to the libraries, and which are allowed when.
- RFC 1119.
Result::expect
. - RFC 1122. Semantic versioning. Describes how the language itself is allowed to change.
- RFC 1123. Introduce
str::split_at
- RFC 1131.
likely
intrinsic. For hinting hot and cold branches.
New RFCs
- Adjust default object bounds. This fixes some dumb rules that made it into 1.0, but is a breaking change that affects relatively little code.
- Expand the
std::net
module.
Upcoming Events
If you are running a Rust event please add it to the calendar to get it mentioned here. Email Erick Tryzelaar or Brian Anderson for access.
Quote of the Week
<Quxxy> I had a fun one in cargo script: there's currently no way in Rust
to get a file's mtime and the system time in the same time format
<Quxxy> (On Windows)
<Quxxy> You can get one in UNIX time, the other in Windows time
<Quxxy> Which have different scales and different epochs
<Quxxy> Rust: Buy Your Own Damn Batteries; What Are You, A Communist?
Quxxy discovers Rust's stance toward the inclusion of batteries.
Thanks to cmr for the tip. Submit your quotes for next week!.