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
Blog Posts
- Compiling to the web with Rust and emscripten.
- How to speed up the Rust compiler.
- Exploring ARM inline assembly in Rust. Usefulness and pitfalls of
asm!
. - Pretty state machine patterns in Rust.
- What makes slog fast. Tips on writing efficient Rust code.
- Control flow for visitor callbacks. New pattern for visitor callbacks that hits the sweet spot for both convenience and the “pay for what you use” principle.
- How Rust do? Devlog of learning Rust by developing a small project in it.
- Using Haskell in Rust. Follow-up to Rust in Haskell.
- Game of Life implemented in Rust-sdl2.
News & Project Updates
- @withoutboats joins language design team!
- Future updates to the rustup distribution format. Solving checksum failures and more!
Other Weeklies from Rust Community
Crate of the Week
This week's Create of the Week is xargo - for effortless cross compilation of Rust programs to custom bare-metal targets like ARM Cortex-M. It recently reached version 0.2.0 and you can read the announcement here.
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] rust: Provide a better error message when the target sysroot is not installed.
- [less easy] servo: Implement HTMLTimeElement#dateTime.
- [hard] rust: Optimize emscripten targets with emcc.
- [hard] rust: Tell emscripten to remove exception handling code when the panic runtime is used.
- [easy] imag: Iterator for
Iterator<Item = Result<T, Error>>
tracing (wanna learn how to implement iterators?. - [easy] maud: Support "while" and "while let". Maud is an HTML template engine for Rust.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
106 pull requests were merged in the last week.
- Implement
read_offset
andwrite_offset
. - Add ThreadId for comparing threads.
- Cache conscious hashmap table.
- Add
method str::repeat(self, usize) -> String
. - Add two functions to check type of given address.
- Add
Vec::dedup_by
andVec::dedup_by_key
. - Add two functions to check type of
SockAddr
. - Add
println!()
macro with out any arguments. - stabilise
?
, attributes on stmts, deprecate Reflect. - Error monitor should emit error to stderr instead of stdout.
- Make the AF_NETLINK constant available for Android.
- Specialize
Vec::extend
toVec::extend_from_slice
. - Lint against lowercase static mut.
New Contributors
- Danny Hua
- Fabian Frei
- Mikko Rantanen
- Nabeel Omer
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:
- Use
#[link(kind)]
to fix imports from native libs on Windows. - Enable customizing the linkage of a platform's C runtime.
- Propose a shorthand syntax for constructing struct-like values with named fields.
- Let a
loop { ... }
expression return a value viabreak my_value;
.
New RFCs
Style RFCs
Style RFCs are part of the process for deciding on style guidelines for the Rust community and defaults for Rustfmt. The process is similar to the RFC process, but we try to reach rough consensus on issues (including a final comment period) before progressing to PRs. Just like the RFC process, all users are welcome to comment and submit RFCs. If you want to help decide what Rust code should look like, come get involved!
FCP issues:
Other issues getting a lot of discussion:
No PRs this week.
Upcoming Events
- 10/19. Los Angeles Rust Meetup.
- 10/19. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 10/19. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- 10/20. Rust release triage.
- 10/27 and 10/28 Rust Belt Rust in Pittsburgh, US. Tickets still available.
- 10/26. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 10/26. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Rust Belt Rust Conference - Pittsburgh.
- 10/31. Rust Paris.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email the Rust Community Team for access.
fn work(on: RustProject) -> Money
No jobs listed for this week.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Friends of the Forest
Our community likes to recognize people who have made outstanding contributions to the Rust Project, its ecosystem, and its community. These people are 'friends of the forest'.
This week's friends of the forest are:
- From AtheMathmo:
I'd like to nominate bluss for his work on scientific programming in Rust. ndarray is a monumental project but in addition to that he has worked (really) hard to share that knowledge among others and provided easy-to-use libraries like matrixmultiply. Without bluss' assistance rulinalg would be in a far worse state.
- From nasa42:
I'd like to nominate Yehuda Katz, the lord of package managers.
Submit your Friends-of-the-Forest nominations for next week!
Quote of the Week
<dRk> that gives a new array of errors, guess that's a good thing <misdreavus> you passed one layer of tests, and hit the next layer :P <misdreavus> rustc is like onions <dRk> it makes you cry?
— From #rust-beginners.
Thanks to Quiet Misdreavus for the suggestion.