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
- carol10cents has joined the Tooling and Infrastructure team.
- Rust is now the fastest language on k-nucleotide. Using OrderMap crate, Rust is now the fastest language at The Computer Language Benchmarks Game's k-nucleotide benchmark.
- Deploying Rust in a large codebase. Shipping Rust in Firefox.
- Non-lexical lifetimes using liveness and location.
- Demangling C++ symbols in Rust.
- Rust asynchronous HTTP server with tokio and hyper.
- Simulating LIDAR driving with Rust and OpenAI.
- Shar: One year with Rust. SHAR is an action combination of tactical and sports game in a destructible world.
- Objective-C from Rust: Statically verified type encodings without allocation.
- How we made our CSV processing 142x faster.
- One year with Rust - Developing a full featured application in Rust.
- The System Programming Enclosure Movement.
- How we made TensorFlow run on a Raspberry Pi using Rust.
- The first Crate polishing workshop: Report.
Other Weeklies from Rust Community
- This week in Rust docs 45.
- These weeks in Servo 93.
- These weeks in Redox 19. Visual refresh.
- Ferris makes emulators 22: Sample extraction.
- What's coming up in imag 23.
- This week in TiKV 2010-02-27.
Crate of the Week
This week's crate of the week is nalgebra, a linear algebra library in and for Rust. Thanks to nasa42 for the suggestion.
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.
- Rails Girls Summer of Code + Servo.
- [discussion] rust-book: Rust & OOP patterns.
- [easy] servo: Looking for something to work on.
- [medium] clippy: Lint
.into_iter()
if that only forwards to.iter()
. - [medium] clippy: Warn on
let _ = x.lock();
. - [hard] clippy: Lint crates that can be
#![no_std]
but aren't. - [easy/hard] clippy: Lint functions taking references as arguments but only use them to create an owned value.
- [easy] clippy: Lint for iterating over a slice with one (or zero) element.
- [easy] clippy: useless_transmute being raised when it's doing multiple casts.
- [easy] clippy: Lint to suggest
.saturating_add/sub(x)
for.checked_add/sub(x).unwrap_or(MAX/MIN)
. - [easy] clippy: Lint against const atomics.
- [easy] crates.io: Add rustfmt to run on travis and fail the build.
- [easy] crates.io: Run rustfmt on the whole codebase and send in the changes.
- [easy] crates.io: Document applying categories/adding new categories.
- [medium] crates.io: Yanking a crate should update its max_version.
- [medium] crates.io: Be able to search within a keyword or category.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
124 pull requests were merged in the last week.
- fix LLVM x86 interrupt calling convention
- fix ICE in trans
- properly display expected details on type mismatch
-C overflow-checks
option- stabilize
static_recursion
- allow tools to run test runners programmatically
- allow coercion of non-capturing closures to
fn
s - improved lib defaults handling
- make
Unique<T>
UnwindSafe
even for unsized types - set LLVM metadata for vtables (allows better optimizations)
- track the
-Z sanitizer
flag over incremental compilations - incremental compilation: detect bootstrap outputs
- adaptive hashmap: consider displacement instead of shift length
- don't treat privately uninhabited types as uninhabited
- improved type inference error reporting
- verify all sysroot crates are unstable
- Cargo: fix required features vs. dependencies' features interference
cargo check --all
- migrate Cargo from rustc-serialize to serde
- docs: port the reference to mkbook
New Contributors
- Daniel Xu
- er-1
- Hiroki Kobayashi
- Josef Brandl
- Paul Merrill
- Peter Wagenet
- Tom Anderson
- topecongiro
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:
- [disposition: postpone] Introduce pattern synonyms - used to create new patterns we can pattern match against from real patterns.
- [disposition: close] Add a
Transmute<T>
trait for representing types that can be transmuted toT
. - [disposition: merge] Write to standard error with
eprint!
andeprintln!
. - [disposition: merge] extend
?
to operate over other types. - [disposition: close] Add 'else match' blocks to if expressions.
- [disposition: postpone] Allow uncallable method impls to be omitted.
- [disposition: merge] Deprecate anonymous parameters.
- [disposition: postpone] Add the ability to define closures that are generic over types.
- [disposition: close] Add
&move
pointers, theDerefMove
trait, and the unsafeDerefPure
traits.
New RFCs
- dependent-types (also known as, Π-types and value-types).
- Introduce
with
bounds for pi types. - Fully dependent pi types.
- Allow an optional vert at the beginning of a match branch.
- Reduce the number of constraints repeated when writing
T: SomeTrait
. - Tuple-based variadic generics.
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!
PRs:
Issues in final comment period:
Other significant issues:
Upcoming Events
- Mar 1. Rust User Group Cologne - Web development in Rust.
- Mar 1. South Florida Rust - Intro to Ownership and Borrowing.
- Mar 1. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Mar 1. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Mar 2. GPU glyph rasterization, Rocket, and the orphan rules.
- Mar 7. Mozilla Meetup Switzerland - Rust on the Rumprun Unikernel.
- Mar 7. Rust Oslo - What's New - Focus on web services.
- Mar 8. OpenTechSchool Berlin - Rust Hack and Learn.
- Mar 8. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Mar 8. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Mar 9. Columbus Rust Society - Monthly Meeting.
- Mar 9. Rust release triage.
- Mar 11. Rust NYC - Rust Hack & Learn.
- Mar 13. Seattle Rust Meetup - Monthly meetup.
- Mar 15. Rust Meetup Hamburg - Rust/Ethereum Meetup.
- Mar 15. Rust Los Angeles - Rust LA Monthly Meetup - Hack Night.
- Mar 15. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Mar 15. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Mar 16. Rust - Modern Systems Programming in Leipzig.
- Mar 16. Thompson Rivers University, BC Canada - Get Rusty.
- Mar 29. GNOME+Rust Hackfest 2017, Mexico City.
- Mar 31. Underhanded Rust Contest Submission Deadline
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.
Rust Jobs
No jobs listed for this week.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
What about the Quote of the Week? I noticed it's missing quite often these days.
Thanks to tibodelor for the suggestion.