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
- Baby steps: Slowly porting musl to Rust.
- Why Rust for Low-level Linux programming?
- Lambda crabs (part 1): A mathematical introduction to lifetimes and regions.
- Lambda crabs (part 2): Region inference is (not) magic.
- Lambda crabs (part 3): Region-based alias analysis.
- Interior mutability in Rust: what, why, how?
- Heterogeneous linked lists in Rust.
- Procedural macros vs. macros.
- Beware upcoming Dyon v0.8 - It will be awesome! Dyon is a dynamically typed programming language written in Rust.
- Sandboxing code in Rust.
- Recordings & slides from Rust Anniversary – Part II meetup. Featuring alexcrichton, llogiq, and flanfly.
- Rust out your C. Carol talks about her experience in rewriting Zopfli from C to Rust.
New Crates & Project Updates
- Rust Project changelog for 2016-06-10. Updates to bitflags, libc, nano-config, regex, rustfmt, rust-mode, rustup, rust.vim, sublime-rust, uuid, www.rustbyexample.com, www.rust-lang.org.
- error-chain, a library for consistent and reliable error handling. Initial release.
- rust-skeptic 0.5 released. A tool for testing Rust documentation.
- mayda. A Rust library to compress integer arrays.
- rust-metrics. Multi reporter metrics library.
- process-viewer. A process viewer GUI in Rust.
- strfmt. Rust library for formatting dynamic strings.
- This week in Servo 66.
- This week in Rust docs 7.
- This week in Ruma 2016-06-05.
Crate of the Week
This week's Crate of the Week is petgraph, which provides graph structures and algorithms. Thanks to /u/diwic 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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
110 pull requests were merged in the last two weeks.
- Implement RFC #495 for slice patterns (RFC text)
- Rust now requires LLVM3.7 or newer (3.6 was also removed from wrappers)
- Outdated -Z gc and -Z count_type_sizes no longer exist (potential script-breaking change)
- Some MIR edge case fixes
- ABI return casts now always use memcpy (will be in next beta)
- MIR now supports 16-bit pointers
- Visitors now visit Statement and Expression Attributes
- Support
#[macro_use]
on macro-expanded crates - Skip
#[test]
-annotated elements during non-test build - MIR no longer double-rounds float consts (also TIL that NaNs are signed)
- Decorators are now run post-expansion
- Old follow checking removed (So we'll get errors instead of warnings for things like
$($x:expr),* ...
in macros) - MIR scopes are now more similar to the lexical structure
New Contributors
- Andrew Brinker
- Chris Tomlinson
- Hendrik Sollich
- Horace Abenga
- Jacob Clark
- Jakob Demler
- James Alan Preiss
- James Lucas
- Joachim Viide
- Mark Côté
- Mathieu De Coster
- Michael Necio
- Morten H. Solvang
- Wojciech Nawrocki
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:
- Implement new methods for checked and wrapping casts for potentially lossy integer conversions.
- Change thread local variables to only accept async-signal-safe types.
- Add a initial, minimal form of
impl Trait
. - Normalization for long error codes explanations.
- Standardise stream wrappers like compression, encryption.
- Add a
lifetime
specifier tomacro_rules!
. - Remove the one-type-only restriction on
format_args!
arguments.
New RFCs
- Add
CStr::with_ptr
and deprecateCStr::as_ptr
. - Dedicated strike team to resolve unsafe code guidelines.
- Default and expanded errors for rustc.
- Add Cortex-M targets to the compiler + binary releases of
core
. - Add
&move
pointers, theDerefMove
trait, and the unsafeDerefPure
traits. - Allow
Self
to appear in the where clause of trait impls.
Upcoming Events
- 6/14. Eat – Drink – Rust! Downtown Rust Meetup (San Diego)
- 6/15. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 6/15. Rust Los Angeles Monthly Meetup - Hack Night.
- 6/16. London Rust Meetup.
- 6/17. Rhein-Main Rust Regulars' Table.
- 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.
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
Isn’t rust too difficult to be widely adopted?
I believe in people.
Thanks to Steven Allen for the suggestion.