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
- Experimental async / await support for Tokio. [discuss]
- Nightly Rust is switching to use LLD (LLVM's new built-in linker) as the default linker for ARM microcontrollers. [discuss]
- CVE-2018-1000657: buffer overflow in VecDeque::reserve() in Rust 1.3 through 1.21 allows arbitrary code execution. [discuss]
- More on the RLS and a 1.0 release. [discuss]
- Another look at the pinning API. [discuss]
- Oxidizing sourmash: Python and FFI. [discuss]
- Reading files quickly in Rust. [discuss]
- Calling C# natively from Rust. [discuss]
- Programming Servo: the makings of a task-queue. [discuss]
- Programming Servo: The debug way. [discuss]
- Easy
proc_macro_derive
s withsynstructure
. [discuss] - Two kinds of invariants, proposing rules for unsafe code concerning uninitialized data. [discuss]
- Next Rust Fest to take place in Rome on 24 and 25 November. [discuss]
Crate of the Week
This week's crate is generational-arena, a safe arena allocator that allows deletion without suffering from the ABA problem by using generational indices. Thanks to Willi Kappler 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 are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
140 pull requests were merged in the last week
- Stablize Iterator::find_map
- Stabilise raw_identifiers feature
- Stabilize 'attr_literals' feature
- Exhaustive integer matching
- Unify E0243, E0244, E0087, E0088, E0089, and E0090 into E0107
- Change
Rc::inc_{weak,strong}
to better hint optimization to LLVM - add
#[panic_handler]
; deprecate#[panic_implementation]
- wasm: remove --strip-debug argument to LLD
- resolve: overhaul
#![feature(uniform_paths)]
error reporting - visit all attributes for feature collection
{to,from}_{ne,le,be}_bytes
for unsigned integer types- fix error for unsized packed struct field
- various changes to
rustc_on_unimplemented
- implement Iterator::size_hint for Elaborator
- Fix unsoundness for VecDeque
- Use optimized SmallVec implementation
- Feature gate where clauses on associated type impls
- resolve suggestions should use
crate::
when enabled - Allow panicking with string literal messages inside constants
- Implement try block expressions
- Stabilize a few secondary macro features
- Merge
IdxSet
andIdxSetBuf
- syntax: Optimize some literal parsing
- Buffer LLVM's object output stream
- Fix NLL ICEs
- Rename TyVariants and variants
- Use SmallVec for SmallCStr
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.
RFCs
- [disposition: merge] Unify std::os::raw::c_void and libc::c_void via libcore.
- [disposition: merge] Add lint warning for inner function marked as
#[test]
. - [disposition: merge] Rustfmt stability.
Tracking Issues & PRs
- [disposition: merge] Add Error::source method per RFC 2504..
- [disposition: merge] set cfg(rustdoc) when rustdoc is running on a crate.
- [disposition: merge] Tracking issue for RFC#1685: Deprecate anonymous parameters .
- [disposition: merge] Tracking issue for lifetime elision for impl headers (feature impl_header_lifetime_elision).
- [disposition: merge] Tracking issue for RFC 2070: stable mechanism to specify the behavior of panic! in no-std applications.
New RFCs
- Type-changing struct update syntax.
- Hidden trait implementations.
- Amend RFC 2175 to support for loops and leading vert.
- Associated type defaults and Default groups.
Upcoming Events
Online
- Sep 5. Rust Community Team Meeting in Discord.
- Sep 11. Rust Community Content Subteam Meeting at channel #rust-community.
- Sep 12. Rust Community Team Meeting in Discord.
- Sep 12. Rust Events Team Meeting in Telegram.
Africa
Asia
Europe
- Sep 4. Brussels, BE - #3 futures/async/tokio && Gotham-rs.
- Sep 5. Berlin, DE - Berlin Rust Hack and Learn.
- Sep 5. Cologne, DE - Rust Cologne.
North America
- Sep 2. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Sep 5. Indianapolis, US - Indy.rs.
- Sep 5. Atlanta, US - Grab a beer with fellow Rustaceans.
- Sep 5. Vancouver, CA - Rust Study/Hack/Hang-out night.
- Sep 9. Mountain View, US - Rust Dev in Mountain View!.
- Sep 10. Seattle, US - Seattle Rust Meetup.
- Sep 13. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Sep 13. Arlington, US - Rust DC - Mid-month Rustful.
- Sep 13. San Diego, US - San Diego Rust September Meetup - WASM, "failure" library, or ???.
South America
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
Bastion of the Turbofish
Beware travellers, lest you venture into waters callous and unforgiving, where hope must abandoned, ere it is cruelly torn from you. For here stands the bastion of the Turbofish: an impenetrable fortress holding unshaking against those who would dare suggest the supererogation of the Turbofish.
Once I was young and foolish and had the impudence to imagine that I could shake free from the coils by which that creature had us tightly bound. I dared to suggest that there was a better way: a brighter future, in which Rustaceans both new and old could be rid of that vile beast. But alas! In my foolhardiness my ignorance was unveiled and my dreams were dashed unforgivingly against the rock of syntactic ambiguity.
This humble program, small and insignificant though it might seem, demonstrates that to which we had previously cast a blind eye: an ambiguity in permitting generic arguments to be provided without the consent of the Great Turbofish. Should you be so naïve as to try to revolt against its mighty clutches, here shall its wrath be indomitably displayed. This program must pass for all eternity, fundamentally at odds with an impetuous rebellion against the Turbofish.
My heart aches in sorrow, for I know I am defeated. Let this be a warning to all those who come after. Here stands the bastion of the Turbofish.
Thanks to Mazdak Farrokhzad for the suggestion!
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.