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
- New Tokio release, now with filesystem support.
- Encapsulating lifetime of the field.
- Rust in production at Figma.
- How fast can we compile Rust hello world?
- Refactoring Apache Arrow to use traits and generics.
- Introducing gtk-test - a framework to test GTK UI.
- Introducing seiri — a music manager written in Rust.
- sudo_pair: A sudo plugin from Square that requires another human to approve and monitor privileged sudo sessions.
- Announcing the codegen working group.
- This week in Rust docs 104.
- Networking WG newsletter 1.
- [podcast] Rusty Spike Podcast - episode 28. Figma, Sentry, Polysync, Nokia, Maryland, regex, compilers, and the borrow checker.
Crate of the Week
This week's crate is semverver, a currently nightly-only cargo subcommand to detect semver violations. Thanks to Dzmitry Malyshau 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.
- Sodium Oxide: Call for maintainers. Sodium Oxide is a fast cryptographic library for Rust (bindings to libsodium).
- [easy] gfx-rs: Set buffers mutability qualifiers on Metal compute pipelines. gfx-rs is a high-performance, bindless graphics API for Rust.
- [easy] gfx-rs: Set threadGroupSizeIsMultipleOfThreadExecutionWidth on Metal compute pipelines.
- [easy] gfx-rs: Use set_bytes for short temporary data in Metal internal shaders.
- mutagen has some 'good first issues'.
- Get started with these beginner-friendly issues.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
145 pull requests were merged in the last week
- stable release 1.26.0
- add some groundwork for cross-language LTO
- fix ICE in assertion macro
- fix ICE when using
a..=b
in a closure - forbid constructing empty identifiers from concat_idents
- proc_macro: explicitly make everything !Send/Sync
- introduce
-Znll-facts
to dump base-facts for the NLL analysis - immutably and implicitly borrow all pattern ids for their guards (NLL only)
- fix a warning in libcore on 16bit targets
- stabilize
#[must_use]
for functions and must-use comparison operators (RFC #1940) - reduce maximum repr(align(N)) to 2^29
- correct initial field alignment for
repr(C)
/repr(int)
- use
escape_default()
for strings inLitKind::token()
- extend
Printer::buf
on demand - always inline simple
BytePos
andCharPos
methods - rustc: return iterators from
Terminator(Kind)::successors(_mut)
- treat generators as if they have an arbitrary destructor
RangeInclusive::{new, start, end}
methods- use
ManuallyDrop
instead ofOption
inBinaryHeap
Hole implementation - remove the deprecated
std::net::
{lookup_host
,LookupHost
} - cargo: show elapsed time in minutes if >= 60 secs
- rustdoc: resolve nested
impl Trait
s - rustbuild: allow quick testing of libstd and libcore at stage0
New Contributors
- Harm Berntsen
- rleungx
- Samuel Wilson
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation 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: merge] Unreserve
proc
. - [disposition: close]
Result::pass()
, turningResult<T,E>
intoResult<U,F>
, ifFrom
is set up. - [disposition: close] The ConstDefault trait.
New RFCs
Upcoming Events
The community team is trying to improve outreach to meetup organisers. Please fill out their call for contact info if you are running or used to run a meetup.
- May 10. Redwood City, US - Bay Area - Where "Self-Driving" Database Meets a "Rusty" Distributed Key-Value Store.
- May 10. Arlington, US - Rust DC - Learn+Try: parsing with nom.
- May 10. Columbus, US - Columbus Rust Society - Monthly Meeting.
- May 10. San Diego, US - San Diego Rust May Meetup.
- May 13. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- May 14. Seattle, US - Seattle Rust Monthly Meetup.
- May 15. Rome, IT - Rust learning and hacking evening #8.
- May 15. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- May 16. Orange County, US - Coding Session and Discussion.
- May 16. Denver, US - Rust Boulder/Denver - Rust Denver May Meetup.
- May 16. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- May 16. Vancouver, CA - Rust Study/Hack/Hang-out night.
- May 17. Cambridge, GB - Cambridge Rust Meetup.
- May 20. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- May 22. Paris, FR - Rust Paris meetup #42.
- May 22. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- May 23. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- May 23. Rust Events Team Meeting.
- May 27. Paris, FR - RustFest Paris 2018.
- May 30/31. Rust/WASM course around JSConf.EU.
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
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
No quote was selected for QotW.