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: Vikrant and llogiq.
Updates from Rust Community
News & Blog Posts
- Announcing Rust 1.9.
- The Path to Rust. Why Rust might be right for you.
- How do I convert a
&str
to aString
in Rust? A series of "How do I do X in Rust?" articles aimed at beginners. - Catching Exceptions. Part of the series Writing an OS in Rust.
- Connecting a webservice to a database in Rust.
- Unsafe abstractions. Understanding
unsafe
code and the idea of unsafety boundaries. - The 'Tootsie Pop' model for unsafe code. Niko Matsakis outlines a high-level approach to defining a memory model. Follow-up to "Unsafe abstractions".
- Async generators. Making a case for generators based async I/O in Rust.
- Using Wayland from Rust, Part 2.
- Using Rust 1.8 stable for building embedded firmware.
- Attempting to use Rust's type system for statically checked dependency tracking.
- This week in Servo 64.
- This week in Rust docs 5.
- This week in Parity 2.
- This week in Ruma 2016-06-29.
- [podcast] Rust with Steve Klabnik.
- The Rust community. What it gets right and what it gets wrong.
New Crates & Project Updates
- Redox OS: Survey Results.
- bindgen 0.17.0, a C binding generator. Lots of new features and fixes, with a much cleaner generated code. See the changelog for a complete list.
- wsta. A CLI development tool for WebSocket APIs.
- keygen. An algorithm for generating optimal keyboard layouts.
- apply_attr. A syntax extension providing higher-order attributes to Rust.
- bytevec. A Rust serialization library that uses byte vectors.
Crate of the Week
Sadly, there was no suggestion for this week's Crate of the Week.
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: Participate in 2016 State of Rust Survey.
- [easy] clippy: Participate in Rust Clippy Survey.
- [easy] rust: Add error explanations for all error codes.
- [medium] rustup: Make
rustup default x86_64-unknown-linux-gnu
do something smarter. - [easy] servo: Implement more
DOMParser::parseFromString
arguments.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
90 pull requests were merged in the last two weeks.
- abort with SIGABRT instead of SIGILL on Linux (breaking change!)
- process
cfg_attr(..)
s during macro expansion (breaking change!) - allow
concat_idents!(..)
in type position - don't expand erroneous macros (reduces duplicate error messages)
- 1.10 stabilizations
- MIR dataflow fixes (changed 22 files, merged on first try. Kudos, pnkfelix!)
- deprecate
f32
/f64.abs_sub(_)
- remove ExplicitSelf from AST (plugin-breaking change)
- implement
..
in tuple (struct) patterns (plugin-breaking, RFC #1492) - HIR spans for loop labels (plugin-breaking)
- speed up unicode property lookup
- refactor autoderef obligation handling (fixes epic number of issues)
- make
EscapeUnicode
anExactSizeIterator
- use
memalign
instead ofposix_memalign
on older Androids (yay for portability) - cleanup macro expansion
- fix FFI argument handling
- fix ANTLR grammar verification script (though there's a newer yacc grammar)
fmt::Error
now implements theError
trait- speed up
Ipv4Addr
comparisons
New Contributors
- Aaklo Xu
- Alexander Polyakov
- Carlo Teubner
- Daniel Firth
- kennytm
- Sebastian Thiel
- Srinivas Reddy Thatiparthy
- Tamir Bahar
- Ty Coghlan
Approved RFCs
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
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. - Standardise stream wrappers like compression, encryption.
- Change thread local variables to only accept async-signal-safe types.
- Implement new methods for checked and wrapping casts for potentially lossy integer conversions.
- Normalization for long error codes explanations.
- Add a
lifetime
specifier tomacro_rules!
.
New RFCs
- Eager expansion of macros.
- Replace synchronization primitives with those from parking_lot.
- Make
mem::uninitialized()
andmem::zeroed()
const fn
.
Upcoming Events
- 6/1. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 6/1. OpenTechSchool Berlin: Rust Hack and Learn.
- 6/6. Cologne / Germany: Rust Anniversary Meetup - Part II.
- 6/8. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 6/8. Rust Berlin Meetup.
- 6/8. Rust Boulder/Denver Monthly Meeting.
- 6/9. Columbus Rust Society.
- 6/13. Seattle Rust Meetup.
- 6/14. Eat – Drink – Rust! Downtown Rust Meetup (San Diego)
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
Rust is like doing parkour while suspended on strings & wearing protective gear. Yes, it will sometimes look a little ridiculous, but you'll be able to do all sorts of cool moves without hurting yourself.
Thanks to aochagavia for the suggestion.