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.
Updates from Rust Community
News & Blog Posts
- Announcing Rust 1.10.
- Refining Rust's RFCs.
- Translating C to Rust using Corrode (and how you can help).
- Rust and Rest. Lessons Learned from talking to Sentry's HTTP API from Rust.
- Pairing cryptography in Rust.
- Shave some time from your Travis builds.
- Overview of open source game engines in Rust.
- Rust & Docker in production @ Coursera.
- Integer 32, a Rust consultancy startup by Carol Nichols and Jake Goulding.
New Crates & Project Updates
- Dyon 0.8 is released.
- Corrode. Automatic semantics-preserving translation from C to Rust.
- Rustls. A new, modern TLS library written in Rust.
- rulinalg. A linear algebra library in Rust designed for machine learning, extracted from rusty-machine.
- task-hookrs. A Rust library for writing taskwarrior hooks and general interfacing with taskwarrior.
- jsf. A simple JSON file store.
- This week in Rust docs 12.
Crate of the Week
No crate was selected for CotW.
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] cargo: Warn on duplicate entry points for libs and bins.
- [easy] cargo: Can't specify precise crate version if there are multiple versions.
- [easy] cargo: Add
--dry-run
tocargo publish
. - [easy] rust: E0502 not rendered correctly.
- [easy] rust: Move some tests into run-pass-valgrind.
- [moderate] rust: Convert compiler-rt builtins to a Rust crate.
- [moderate] rust: Teach rustc to print CPU, etc. features.
- [easy] rustfmt: Overlong function signatures.
- [easy] rustfmt: Overlong impl signatures.
- [easy] rust-by-example: Add a Mutex chapter.
- [easy] rust-by-example: Add an Arc chapter.
- [easy] imag: Make
imag
forward--debug
and--verbose
to subcommands. - [moderate] imag: Add Iterator-shortcut for
iter.fold(Ok(()), ...)
.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
100 pull requests were merged in the last two weeks.
- Implement workspaces in Cargo.
- Drive trans from the output of the translation item collector.
- std: Stabilize APIs for the 1.11.0 release.
- Update jemalloc to include a fix for startup issues on OSX 10.12.
- Cargo: Add support for RUSTDOCFLAGS.
- Add x86 intrinsics for bit manipulation (BMI 1.0, BMI 2.0, and TBM).
- Added a pretty printer for &mut slices.
- Use lazy iterator in vec/slice gdb pretty printers.
- Introducing TokenStreams and TokenSlices for procedural macros.
New Contributors
- CrLF0710
- Hariharan R
- Ivan Nejgebauer
- Jared Manning
- Kaivo Anastetiks
- Mike Hommey
- Phlogistic Fugu
- Sam Payson
- Ximin Luo
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 1327: Dropck Eyepatch. Refine the unguarded-escape-hatch from RFC 1238 (nonparametric dropck).
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:
- Default and expanded errors for rustc.
- Dedicated strike team to resolve unsafe code guidelines.
- RFC process for formatting style and Rustfmt defaults.
- Introduce more conventions around documenting Rust projects.
- Allow all literals in attributes.
- Add
global_asm!
for module-level inline assembly. - Exclude macros from importing with
#[macro_use(not(...))]
. - Add space-friendly arguments. Add
-C link-arg
and-C llvm-arg
which allow you to pass along argument with spaces. - Add support for 128-bit integers.
- Add a used attribute to prevent symbols from being discarded.
- Add language support for bitfields.
New RFCs
- Add an
unwrap!
macro. - Semantic "private in public" enforcement. Enforce that public APIs do not expose private definitions at the semantic level, while allowing the use of private aliases and blanket implementations for convenience and automation.
- Disjointness based on associated types. During coherence checking, when determining if the receivers of two impls are disjoint, treat bounds with disjoint associated types as mutually exclusive bounds.
Upcoming Events
- 7/13. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 7/13. Rust Boulder/Denver - Hello, Rust!.
- 7/14. Rust release triage at #rust-triage on irc.mozilla.org.
- 7/14. Columbus Rust Society: Monthly Meeting.
- 7/18. Rust Paris Meetup #30.
- 7/20. Rust Community Team Meeting at #rust-community 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
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
No quote was selected for QotW.