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 an email! 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.
From the Blogosphere
- A Rusting Rubyist IV. Rust Structs and Arrays in Ruby.
- Rust's Built-in Traits, the When, How & Why.
- Type-checked matrix operations in Rust.
- Visualizing Rust's type-system.
- A web app with Nickel: From first line to Heroku deployment.
- Why you should take a closer look at Rust 1.0.
- My First PR for the Rust compiler.
- [book] The Advanced Rust Programming Language.
- Abstracted Algebra in Rust, part I and part II.
New Releases & Project Updates
- Racer is now at v1.0
- Raft implementation is ready to start experimenting with.
- annotated-std-rs. An annotation of the Rust standard library.
- rust-syslog. Send syslog messages from Rust.
- unrar.rs. Rust library for extracting, listing and testing RAR archives.
- msgpack-rust. MessagePack implementation for Rust.
Slides and talks from RustCamp!
RustCamp was on Saturday, August 1st. It was lovely event populated by lovely people. If you couldn't make it here are the slides from some of the talks. Hopefully the remainder of slides will become available this week. Video recordings will be available at an indeterminate future date.
- [pdf] Keynote by Aaron Turon and Niko Matsakis.
- [notes] Navigating the Open Seas by Carol (Nichols || Goulding).
- [pdf] Making tools for Rust by Nick Cameron.
- [pdf] Mio: Fast Async IO for Rust by Carl Lerche.
- [slides] Who Owns This Stream of Data? by Alexis Beingessner.
What's cooking on nightly?
130 pull requests were merged in the last week.
- Gankro landed The Advanced Rust Programming Language, which was quickly renamed to The Rustonomicon. This book is about unsafe Rust and will become Gankro's master's thesis. Read it online.
- Nonzeroing move hints. This patch adds drop flags to the stack as part of the non-zeroing drop RFC. It does not yet remove the drop flag from objects.
- @azerupi cleaned up the design of gitbook, the tool that generates The Book.
- Deprecated
VecMap
. This little-used unstable collection has been moved to thevec_map
crate. - Deprecate a number of unstable features. The list is sizable.
- Implement
Clone
forBox<[T]> where T: Clone
- Make
AtomicPtr
Send
- Make
Rc
andArc
mem::forget
safe. This closes some corner-case soundness holes in reference counting. - More extended errors!.
- Add a
--cap-lints
flag to the compiler. This flag will be used by Cargo to avoid breaking dependencies when lints change. - Rewrite dropck to be more correct.
- Improve SipHash performance for longer data.
- Stabilize a number of small APIs.
- Implement
Clone
forBox<str>
. - Gate associated type defaults. 1.1 stable mistakenly allowed default associated types to be written, but their use was completely broken. With other outstanding questions about the feature it has been gated for 1.2.
New Contributors
- Agoston Szepessy
- Andrew
- Andrew Kuchev
- Blake Loring
- Daniel Albert
- diaphore
- Jeehoon Kang
- Kieran Hunt
- krumelmonster
- Mark Buer
- Nicolette Verlinden
- Ralf Jung
- Taliesin Beynon
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:
- Allow renaming imports when importing a group of symbols from a module..
- Clarify rules for projections and well-formedness.
- Introduce a mid-level IR (MIR) in the compiler.
- Update FOLLOW set for
ty
tokens. - Add
cargo install
. - Improve ordered query API.
- Add item recovery collection APIs.
- Implement raw fat pointer comparisons.
- Add
read_exact
toRead
trait. - Allow
#[must_use]
on functions, rather than just types..
New RFCs
- Place left arrow syntax (
place <- expr
). Another attempt at coming up with a pleasing 'placement new' syntax. - Turn statically-known erroneous code into a warning and unconditional panic.
- Add
Box::leak
to leakBox<T>
to a&'static mut T
. - Specify that
CoerceUnsized
should ignorePhantomData
fields.
Internals discussions
Upcoming Events
- 8/5. Montreal.
- 8/10. Seattle.
- 8/11. San Diego.
- 8/19. Los Angeles.
- 8/26. Columbus Rust Society.
- 8/31. Paris.
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.
fn work(on: RustProject) -> Money
There are some jobs writing Rust! This week's listings:
- Assistant Researcher in Karlsruhe, Germany for embedded development on ARM stm32. Contact Oliver Schneider
Quote of the Week
It should be noted that the authentic Rust learning experience involves writing code, having the compiler scream at you, and trying to figure out what the heck that means. I will be carefully ensuring that this occurs as frequently as possible.
From @Gankro's Learning Rust With Entirely Too Many Linked Lists.
Thanks to @carols10cents for the tip. Submit your quotes for next week!.