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
- Async/Await VI: 6 weeks of great progress.
- Python idioms in Rust.
- Dora: Implementing a JIT-compiler with Rust.
- Atomics and memory ordering.
- Talks I'd love to see at RustConf.
- Designing a fast CLI join tool with rust.
- Building a Restful CRUD API with Rust.
- Touring a fast, safe, and complete(ish) web service in Rust.
- Putting bors on a performance improvement plan.
- Mutation based testing & code coverage.
- Redox OS 0.3.5 is released with a new network stack.
- Announcing the Ecosystem Working Group.
- Rust 2018 All Hands is under way in Berlin.
- This Week in Rust Docs 98.
- [podcast] Rusty Spike Podcast - episode 24. Latin America, async/await, electron, and behind the scenes on Rust 2018.
Crate of the Week
This week's crate is fui, a crate to add both a command-line interface and text forms to your program. Thanks to musicmatze 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.
- If you’re interested in language design, please help polish up the new Delegation RFC draft.
- rustc-guide is a project to write a short guide about how the rust compiler works, and it needs your help. There are some easier issues, issues which might require a bit of investigation/code reading, and issues which probably require some advanced knowledge or a lot of time.
- 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
178 pull requests were merged in the last week
- prepare the 1.25.0 stable release
- rustc: add a
#[wasm_custom_section]
attribute - add basic PGO support (Hooray!)
- improve lint for type alias bounds
- stabilize the copy_closures and clone_closures features
- stabilize impl Trait (Huzzah!)
- detect illegal hidden lifetimes in
impl Trait
- NLL should identify and respect the lifetime annotations that the user wrote
- fix DefKey lookup for proc-macro crates
- always print
aborting due to n previous error(s)
- better diagnostics for '..' pattern fragment not in the last position
- support elision in impl headers (
'_
) - fix type_dependent_defs ICE on method calls
- pass attributes to hir::TyParam
- produce nice array lengths on a best effort basis
- remove slow HashSet during miri stack frame creation
- refactor the
BorrowckErrors
trait to takefn(self)
- don't check interpret_interner when accessing a static to fix miri mutable statics
- implement "Implemented-From-Env" Chalk lowering rule
- implement Raw Identifiers (RFC #2151)
- fix the conversion between bit representations and i128 representations
- encode/decode extern statics in metadata and incremental cache
- extend stable hasher to support
CanonicalTy
Pin
,Unpin
,PinBox
(immovable types for generators)- make resuming generators unsafe instead of the creation of immovable generators
- add hexadecimal formatting of integers with fmt::Debug
- reduce the diagnostic spam when multiple fields are missing in pattern
- add a -Z flag for LLVM align attributes on arguments
- deprecate the AsciiExt trait in favor of inherent methods
- stabilize termination_trait, split out termination_trait_test
- stabilise FromUtf8Error::as_bytes
- stabilize 128-bit integers
- replace
convert::Infallible
with!
- add
simd_select
intrinsic - add
BufReader::buffer
- suggest removing
&
s - implement Integer methods for Wrapping
- stabilize slice patterns without
..
- implement
get_key_value
for {HashMap
,BTreeMap
} - fix vector fmin/fmax non-fast/fast intrinsics NaN handling
- add 12 num::NonZero* types for primitive integers, deprecate core::nonzero
- cargo: faster resolver: use a inverse-index to not activate the causes of conflict
- fix ordering of auto-generated trait bounds in rustdoc output
New Contributors
- Daniel Kolsoi
- lukaslueg
- Lymia Aluysia
- Maxwell Borden
- Maxwell Powlison
- memoryleak47
- Mrowqa
- Sean Silva
- Tyler Mandry
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] Type alias enum variants.
- [disposition: postpone] Formalise reborrows.
- [disposition: postpone] Minimal target feature unsafe.
- [disposition: postpone] Implement parent items with child traits.
New RFCs
- Portable packed SIMD vector types.
- Make cargo install extensible.
- Inherent trait implementation.
- Prior/outer doc comments
- Selfexhausting iter adapter.
- Non-selfexhausting Drain.
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.
- Mar 29. Helsinki, FI - March Rust meetup.
- Mar 31. Minsk, BY - Informal Rust meetup.
- Mar 31. Saint Petersburg, RU - March Rust Meetup.
- Apr 1. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Apr 3. Johannesburg, ZA - Monthly Meetup of the Johannesburg Rustaceans.
- Apr 4. Cologne, DE - April 2018 Open Space.
- Apr 4. Vancouver, CA - Rust Study/Hack/Hang-out night.
- Apr 4. Atlanta, US - Grab a beer with fellow Rustaceans.
- Apr 4. Indianapolis, US - Indy.rs.
- Apr 4. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- Apr 4. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Apr 5. Rust release triage.
- Apr 8. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Apr 9. Seattle, US - Monthly meetup.
- Apr 10. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Apr 11. Munich, DE - Fun with Rust and Numerical Methods.
- Apr 11. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Apr 11. Rust Events Team Meeting.
- Apr 11. Denver, US - April Meetup in Boulder.
- Apr 12. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Apr 12. Arlington, US - Rust DC - Learn+Try: Rust in the Browser via WebAssembly.
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
- Systems Engineer at Distil Networks, Stockholm.
- Rust Developmer at Asquera GmbH, Berlin.
- Sr. Software Developer at Nymi, Toronto.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
If Rust is martial arts teacher, Perl is a pub brawler. If you survive either, you’re likely to be good at defending yourself, though both can be painful at times.
Thanks to llogiq for the suggestion!