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
- Rust's vision for the 2017 cycle.
- One year of Rust. How Rust and its community has changed in last one year and what we as a community can do differently.
- The next version of Fedora picks up Rust.
- Thoughts on conducting a beginner level Rust workshop.
- Wasted. @llogiq has ideas on reducing network bandwidth when using rustup & Cargo.
- Porting cargo benchcmp from Python to Rust.
- Porting a Raspberry Pi GPIO programming library from Python to Rust.
- Rust merge process for new contributors.
New Crates & Project Updates
- libfringe. A Rust library implementing safe, lightweight context switches, without relying on kernel services.
- lewton. Vorbis decoder written in pure Rust.
- Are we game yet?. The state of game development in Rust.
- Scaproust. Scaproust is an implementation of the nanomsg "Scalability Protocols" in the Rust programming language.
- log_buffer. A zero-allocation ring buffer for storing text logs.
- query_interface. Dynamically query a type-erased object for any trait implementation.
- Plantex. Open-world exploration game with procedurally generated content.
- ref_eq. Determine if two borrowed pointers point to the same thing.
- releasetag. Define release-tags for postmortem analysis, extractable from core-files.
- bytestool. Compiler plugins, compile time evaluation, eg.
byte_size_of!(b"HELLO")
,concat_bytes!(b"HEL", b"LO")
. - Videos about Rust. Videos about Rust language found in the Web.
- spectral. Fluent test assertions.
- This Week in Rust Docs 20.
- This week in TiKV 2016-09-05.
Crate of the Week
You suggested, you voted, and here you have your crate of the week: accurate, a way to do accurate floating point sums. Thanks to lifthrasir 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.
- [easy] rust: Document what
Default
does for each type in libstd. - [easy] rust: Silent overflow on debug beta/nightly.
- [easy] rust:
mem::replace
andmem::swap
say they don't copy, but they do. - [hard] rust: Support Apple app store bitcode.
- [hard] rust: Missed opportunities to eliminate bounds checks.
- [easy] tera: Filters to implement (has examples).
- [easy] tokei: Update existing languages with their String litreals.
- [easy] tempdir: make directory removal robust on windows. This bug lets you
publish a replacement for the unreliable
std::fs::remove_dir_all
fn. - [moderate] rust: Create official .deb packages.
- [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
146 pull requests were merged in the last two weeks.
- Implement untagged unions (RFC #1444)
- Implement custom derive (RFC #1681: Macros 1.1)
- Implement item-like imports (RFC #1560)
- Default lifetimes in
static
/const
s to `'static (RFC #1623, missing a feature gate for now. Llogiq apologizes profusely) - Allow all literals in attributes (RFC #1559)
- Unsized tuple warnings are now errors (RFC #1592 finally in effect)
- LLVM: Invalidate metadata on SimplifyCFG hoisting (fixes segfaults)
- Improved Rust symbol demangling
- Fix illegal instruction on overflow in channel cloning
- Fix perf regression when working on arrays
- Better lifetime error messages with temporary variables
- Rust now warns about conflicting
#[repr(..)]
s - Fix
#[derive(..)]
for empty tuple structs/variants - Syntax/HIR: Generics now have their own Span (plugin-breaking change)
- Cache projections in trans (speeds up rustc)
- Copy-on-Write for incremental compilation caches
Iterator::
{min
,max
}_by
impl Debug for std::path::
{Components
,Iter
}std::convert
traits implemented forchar
- Condition Variables hardened against time travel (Remember kids, it's dangerous!)
- Fix GDB pretty-printing special-cased Rust types
- New
rustc --Zsave-analysis-api
option cargo --all-features
(surprisingly builds with all features enabled)
New Contributors
- Abhishek Kumar
- Andrea Corradi
- athulappadan
- Eugene R Gonzalez
- Fabian Zaiser
- johnthagen
- Keunhong Lee
- king6cong
- Matt Ickstadt
- philipp
- QuietMisdreavus
- Sebastian Ullrich
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.- Add a compiler flag that emits crate dependencies on a best-effort basis.
- regex 1.0.
- Saturating and checking integer wrapper types.
libstd::sys
, the greatlibstd
refactor.
New RFCs
- Rename the current
?
operator to?!
to improve code readability and language consistency. core::mem::replace_with
for temporarily moving out of ownership.- Traits should be aliased the same way types can be aliased with the
type
keyword.
Upcoming Events
- 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.
- 9/14. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 9/17. Rustfest Europe Conference.
- 9/19. Paris - Rust Paris.
- 9/20. Rust NYC Meetup.
- 9/21. Rust Boulder/Denver Monthly Meeting.
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.