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.
Updates from Rust Community
News & Blog Posts
- When Rust makes sense, or the state of typed languages.
- [podcast] Rusty radio: Episode 4. Raft, Paxos, and Distributed Systems in Rust.
- This week in Servo 35.
- Resurrecting impl Trait.
- Combining Rust and Haskell.
- [video] Using Rust with Ruby, a deep dive with Yehuda Katz.
- How to print a struct in Rust.
- Trying Rust for web services.
- An introduction to differential dataflow, part 1.
- Experiences building an OS in Rust.
- Ownership is theft: Experiences building an embedded OS in Rust.
- Rust faster!
- [podcast] New Rustacean podcast episode 01. Documentation in general, and
cargo docin particular.
- Rusty queens. An n-queens solver in Rust.
Notable New Crates & Projects
- Redox. A Rust Operating System.
- Webrender. An experimental renderer for Servo that aims to draw web content like a modern game engine.
- Coroutine I/O. Coroutine scheduling with work-stealing algorithm.
- Rustation. PlayStation emulator in Rust.
Updates from Rust Core
102 pull requests were merged in the last week.
See the subteam report for 2015-10-02 for details.
- Backporting accepted PRs to beta.
- Use the adjusted callee type in effect checking.
fs::canonicalizework on directories on Windows.
- Don't crash on non-existent path in constant.
- Un-regress conflicting destructors.
- Don't use jemalloc when crossing to MSVC.
- Fix Cygwin support on Windows 10.
- Don't display duplicate trait errors.
- Early-prohibit objects with Self-containing supertraits.
- Swap link order of native libs/rust deps.
- Add support for the rumprun unikernel.
- Don't ICE if an archive isn't actually an archive.
- Avoid unnecessary temporaries when ref'ing a DST value.
- Cargo: Do not skip the root path if it's a dotdir.
- Andreas Sommer
- Dato Simó
- James Bell
- Jethro Beekman
- Ted Mielczarek
- Will Speak
- Willy Aguirre
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
- Amend #911 const-fn to allow unsafe const functions.
- Place left arrow syntax (
place <- expr).
- Allow a re-export for
- Incremental compilation.
- Add a
- Define the general semantics of intrinsic functions.
- Add a
let...elseexpression, similar to Swift's
- Abstract output type parameters.
- Add some additional utility methods to
- 10/12. Seattle Rust Meetup.
- 10/13. San Diego Rust Meetup #9.
- 10/14. RustBerlin Hack and Learn.
- 10/19. Rust Paris.
fn work(on: RustProject) -> Money
No jobs listed for this week. Tweet us at @ThisWeekInRust to get your job offers listed here!
Crate of the Week
So today I'll write about Itertools. Because iterators in Rust are awesome, and this crates makes them even awesome-r. If you want to do something with iterators that seems to be slightly impossible using the
stdAPIs, chances are Itertools already implements a way that is both fast and elegant. Knowing your itertools APIs will level up your Rust-fu.
For a (very small and simple) example, haven't you wished to zip two iterators, but don't stop iteration after the shorter iterator has run out? With Itertools you can just say
x.zip_longest(y)and get an iterator of
Quote of the Week
In programming (as opposed to politics), safety=freedom. — llogiq on /r/rust.