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.9.
- The Path to Rust. Why Rust might be right for you.
- How do I convert a
Stringin 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
unsafecode 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.
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-gnudo something smarter.
- [easy] servo: Implement more
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!)
cfg_attr(..)s during macro expansion (breaking change!)
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!)
- remove ExplicitSelf from AST (plugin-breaking change)
..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)
posix_memalignon 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::Errornow implements the
- speed up
- Aaklo Xu
- Alexander Polyakov
- Carlo Teubner
- Daniel Firth
- Sebastian Thiel
- Srinivas Reddy Thatiparthy
- Tamir Bahar
- Ty Coghlan
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
- Remove the one-type-only restriction on
- 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
- Eager expansion of macros.
- Replace synchronization primitives with those from parking_lot.
- 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)
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.