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
- Announcing Rust 1.11.
- A year of Rust and DNS. Benjamin Fry talks about his experience developing trust-dns - a Rust based DNS server.
- GC support in Rust: API design.
- Writing a JPEG decoder in Rust - Part 2: Implementation I.
- A Tokio echo server in 35 lines. Tokio is a network application framework for Rust.
- Filters everywhere. Short intro to the "filters" crate and remaining issues.
- [ discussion] The
?operator will be harmful to Rust.
- [slides] Rust: Systems programming for everyone.
- [podcast] New Rustacean bonus episode 6. Building (and celebrating) all the little, not-so-glorious pieces of the Rust ecosystem.
New Crates & Project Updates
- rustup 0.6.0 released with bug fixes in manifest handling.
- aelitabot.xyz. bors-like commit checking for GitHub repositories.
- GilRs. GilRs abstract platform specific APIs to provide unified interfaces for working with gamepads.
- This week in Servo 75.
- This week in Rust docs 18.
- This week in Tock embedded OS 3.
- This week in TiKV 2016-08-21.
- This week in Ruma 2016-08-21.
- This month in Zone of Control 2016-08-22. ZoC is a turn-based hexagonal strategy game written in Rust.
Crate of the Week
No crate was selected for this week for lack of votes. Ain't that a pity?
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.
- [easy] tokei: Update existing languages with their String literals.
- [easy] servo: Change starting line of scripts from 0 to 1.
- [easy] servo: Remove the mako zip file and use proper python dependencies.
- [less easy] servo: Create a
- [easy] rust: Error code list which need to be updated to new format.
- [easy] rustup: Don't capture backtraces without RUST_BACKTRACE=1. An easy fix, done in two steps, first modifying error-chain, then upgrading it in rustup.
- [easy] rustup: Add command to install shell completions.
- [moderate] rust: improve error message when resolution via Deref actually required DerefMut. Good first type system bug.
- [hard] imag: implement bindings to lua/lisp (ketos)/rhai for the filter library
- [hard] filters: implement
Notfor all implementations of
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
167 pull requests were merged in the last two weeks.
- 1.11 Changelog
- 1.12 stabilizations
!is now a proper type
AsRefs to the underlying slice
Drains now covariant
vec::IntoIternow covariant again
- Extra methods on atomic types (implements RFC #1649)
panic::catch_unwindslightly faster (but still an antipattern in normal code)
- incremental compilation now obeys certain commandline args
- No more RUST_NEW_ERROR_FORMAT (the new format is now live everywhere)
- MIR early exit cache invalidation fixed (one of CS' hard problems, even for Rust)
- More groundwork for
item_like_imports (part of RFC #1560)
- LLVM backports to fix perf regressions
- MIPS-uclibc target added
- Cargo now allows
z} in profiles
- Cargo resolve no longer cares for the package root
- Cargo: OpenSSL is now correctly downloaded from www.openssl.org (formerly openssl.org, but they changed it apparently)
rustdocnow omits the
!in links to macros
- Alexandre Oliveira
- Amit Levy
- Dustin Bensing
- Erik Uggeldahl
- Michael Layne
- Nazım Can Altınova
- Neil Williams
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- RFC 1679: Add "panic-safe" or "total" alternatives to the existing panicking indexing syntax.
- RFC 1640: Add
checked_sub()already known from various primitive types to the
- RFC 1589: Define a best practices procedure for making bug fixes in the compiler.
- RFC 1561: Macro naming and modularisation.
- RFC 1623: Omit
'staticlifetimes to reference or generics lifetime values in
- RFC 1681: Procedural macros 1.1.
Final Comment Period
mem::discriminant(). Add a function that extracts the discriminant from an enum variant as a comparable, hashable, printable, but (for now) opaque and unorderable type.
- Eager expansion of macros.
- Add a compiler flag that emits crate dependencies on a best-effort basis.
- regex 1.0.
- Allow type aliases in enumeration repr attributes.
- Add a
macro_rules!that matches valid visibility annotations.
- Saturating and checking integer wrapper types.
libstd::sys, the great
- A process for establishing the Rust roadmap.
- Add two functions,
ptr::write_unaligned, which allows reading/writing to an unaligned pointer.
- Enable customizing the linkage of a platform's C runtime.
- Add std::function macro for getting the name of the current function.
- 8/24. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 8/25. Rust release triage at #rust-triage on irc.mozilla.org.
- 8/29. Rust Sthlm: Rust on the Web.
- 8/29. Rust on the web Rust Meetup Stockholm #2.
- 8/31. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 9/5. Rust Cologne/Bonn: Compiling Rust to your Browser.
- 9/5. Zurich / Switzerland: Rust Meetup - Lecture: Rust
- 9/9. RustConf 2016.
- 9/9. Rust Table of Regulars Darmstadt.
- 9/9. Tokio Hack Night.
fn work(on: RustProject) -> Money
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
No quote was selected for QotW.