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 a pull request. 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
- Expanding the Tokio project. Announcing the formation of the Tokio Core Team, as well as an overall plan for the two projects (Tokio & Futures) and how they fit together.
- Moving, cloning, and copying coloring books in Rust.
- Optimizing Threshold Secret Sharing. Playing with Fourier transform in Rust.
- Running rustfmt on Travis CI.
- Chomp and impl Trait, revisited.
- nRF51 support for Tock Operating System.
- In-place transposition in Rust. Getting an optimized in-place transposition algorithm working in rulinalg - a pure Rust linear algebra library.
- Rustdoc meets the self-documenting editor. racer.el for Emacs can now render rustdoc comments.
- An unmatched left parenthesis.... Should error messages take code indentation into account for better reporting?
- 'StoreId' - The biggest imag design flaw by now.
New Crates & Project Updates
- redox/kernel. A collaborative effort to rewrite the kernel with focus on correctness and code quality.
- rustup 0.6.0, 0.6.1, and 0.6.2 were released in rapid succession (to fix horrible bugs). This release has the ability to install source code for std.
- Are we learning yet?. Cataloging the Rust machine learning ecosystem.
- Docs.rs builds and hosts documentation for all crates hosted on crates.io.
- Parallel. A Command-line CPU Load Balancer Written in Rust.
- Dynasm-rs. A compiler plugin for assembling and executing code at runtime.
- serde_wat. Macros for easily accessing serde_json values in JavaScript like fashion.
- luminance. Type-safe, type-level and stateless Rust graphics framework.
- linefeed. Configurable, extensible, interactive input reader for Unix terminals and Windows console.
- This week in Rust docs 19.
- This week in TiKV 2016-08-29.
- This week in Ruma 2016-08-28.
- What's coming up in imag (14).
Crate of the Week
No crate was suggested for this week. So I unilaterally declare ring, Brian Smith's Rust crypto implementation, which is finally on crates.io as this week's crate.
Can we have suggestions and votes next week? Pretty please?
Submit your suggestions and votes 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] tera: Filters to implement (has examples).
- [easy] tokei: Update existing languages with their String litreals.
- [easy] rust: Error code list which need to be updated to new format.
- [easy] rustup: Don't capture backtraces without RUST_BACKTRACE=1. An easy fix, done in two steps, first modifying error-chain, then upgrading it in rustup.
- [hard] imag: implement bindings to lua/lisp (ketos)/rhai for the filter library
- [hard] filters: implement
BitAnd
,BitOr
,BitXor
andNot
for all implementations ofFilter<N>
- [easy] tempdir: make directory removal robust on windows. This bug lets you
publish a replacement for the unreliable
std::fs::remove_dir_all
fn. - [easy] rust: Add version info to source tarball. Do you love makefiles?
- [moderate] rust: Create official .deb packages.
- [easy] rustup: Fix PATH order for proxy binaries. Simple task for an important tool.
- [moderate] rustup: Check for unexpected cargo/rustc during install.
- [easy] rust-www: Errors displayed after running front-page code look bad. Important bug - first impressions matter.
- [easy] rust-www: Better front-page example. The front page example on the website isn't so special. Make it shine.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
138 pull requests were merged in the last two weeks.
- Don't round up DST prefix size to alignment
- Stabilize type macros
- Fix line numbers in macro expansion
- Fixed lifetime rules for
if
conditions - Borrowck no longer hashes types in loan paths
- Substs now interleave types and regions
char::decode_utf8
now yields errors per Unicode- Trans no longer generates
alloca
s for unused locals - Typeck now uses
NoExpectation
to check type of divergingfn
- Fixed ICE in typeck on missing arg types in impl/trait methods
- Corrected memrchr alignment computation (lead to crashes on non-linux ARMv7 before)
- Avoid
Vec
growth to 0-terminateCString
- Hash HIR elements only once at the beginning
- Trans: Removed AST backend (MIR point of no return reached)
- Improved demangling of Rust symbols
FusedIterator
(implements RFC #1581)impl CoerceUnsized for
{Cell
,RefCell
,UnsafeCell
}`- Transmuting from
fn
item to pointer-sized types is now an error cargo metadata
now works with workspaces
New Contributors
- changchun.fan
- Daniele Baracchi
- Mohit Agarwal
- Paul Fanelli
- Shyam Sundar B
- zjhmale
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:
mem::discriminant()
. Add a function that extracts the discriminant from an enum variant as a comparable, hashable, printable, but (for now) opaque and unorderable type.- Eager expansion of macros.
- Add a compiler flag that emits crate dependencies on a best-effort basis.
- regex 1.0.
- Allow type aliases in enumeration repr attributes.
- Introduce
dyn
keyword. - Add a
vis
matcher tomacro_rules!
that matches valid visibility annotations. - Saturating and checking integer wrapper types.
libstd::sys
, the greatlibstd
refactor.
New RFCs
No new RFCs were proposed this week.
Upcoming Events
- 8/31. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 9/5. Rust Cologne/Bonn: Compiling Rust to your Browser.
- 9/5. Zurich / Switzerland: Rust Meetup - Lecture: Rust
. - 9/7. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 9/8. Rust release triage at #rust-triage on irc.mozilla.org.
- 9/8. Columbus Rust Society.
- 9/9. RustConf 2016.
- 9/9. Rust Table of Regulars Darmstadt.
- 9/9. Tokio Hack Night.
- 9/12. Seattle Rust Meetup.
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
My Rust memoirs will be called "Once in 'a lifetime".
Thanks to Vincent Esche for the suggestion.