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.
This week's edition was edited by: nasa42 and llogiq.
Updates from Rust Community
News & Blog Posts
- Writing a simple REST app in Rust.
- Paradigms of Rust for the Go developer.
- Using ltrace to debug a memory leak.
- Scheduling timers on OS X with Rust and Kqueue.
- Problem in Rust adoption.
- [podcast] New Rustacean podcast episode 15.
Box
,String
,Vec
,Rc
, andArc
have this in common: they're not dumb.
New Crates & Project Updates
- cargo-deb. A cargo subcommand that generates Debian packages from information in Cargo.toml.
- Habitat. Build modern applications with built-in automation.
- Ruru. Native Ruby extensions written in Rust.
- FasterPath. Faster Pathname handling for Ruby written in Rust.
- Polydraw. 2D graphics engine written in Rust.
- Lia. A High-Level Language for Rust.
- json-rust. JSON implementation in Rust.
- OxideNES. NES emulator written in Rust.
- jamal. Bi-directional interface for transformations between JSON and YAML.
- atarashii_imap. IMAP client in Rust.
- This week in Servo 67.
- This week in Rust docs 8.
- This week in Ruma 2016-06-12.
Crate of the Week
This week's Crate of the Week is error-chain which feels like the missing piece in Rust's Result
-based error-handling puzzle. Thanks to KodrAus for the suggestion.
Submit your suggestions for next week!
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] rust: Add error explanations for all error codes.
- [easy] rust: List all available ABI strings in reference.md.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
73 pull requests were merged in the last two weeks.
- The pretty-printer will now
try!
again instead of questioning (since?
isn't stable, this eases backporting) - MIR drop handling got a little easier by caching in some cases and dropping less
-Z dump_mir
now writes parent- and promoted MIR to different files- Creating a file can now
Err(ERROR_FILE_EXISTS)
on Windows, too - Fixed macro call site spans
- Fixed a macro scoping error introduced last week
- Process
#[cfg..]
attributes in decorator-generated items - Support nested
#[cfg..]
s - HIR no longer concerned with identifier hygiene (lint-breaking change)
- Debuginfo now contains absolute file paths
- More helpful errors when mixing up function arguments (also arbitrary milestone #34000)
- Map entries can now remove key or both key and value (and are still underused IMHO)
- Faster
.zip(_)
via specialization
New Contributors
- Esteban Küber
- marudor
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- RFC 1567: Normalization for long error codes explanations.
- RFC 1590: Add a
lifetime
specifier tomacro_rules!
.
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:
- Remove the one-type-only restriction on
format_args!
arguments. - Introduce more conventions around documenting Rust projects.
- Standardise stream wrappers like compression, encryption.
- Add a initial, minimal form of
impl Trait
. - Change thread local variables to only accept async-signal-safe types.
- Implement new methods for checked and wrapping casts for potentially lossy integer conversions.
New RFCs
- Add extra access methods for atomic types.
- Add the ability to define closures that are generic over types.
- Extend
Cell
to work with non-Copy
types. - Add
assert_ne
to complimentassert_eq
.
Upcoming Events
- 6/22. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 6/23. Rust release triage at #rust-triage on irc.mozilla.org.
- 6/29. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 6/30. Zurich, Switzerland - Introduction to Rust.
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
No jobs listed for this week.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
The Rust standard libs aren't quite batteries included, but they come with a pile of adaptor cables and an optional chemistry lab.
Thanks to llogiq for the suggestion.