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.
Updates from Rust Community
News & Blog Posts
- Rust 2018: the home stretch.
- Microsoft announces using Rust to build some of its Azure IoT functionality.
- Learning SIMD with Rust by finding planets.
llvm-tools, a new rustup component for binary inspection (objdump, nm, size) and profiling (profdata).
- How much Rust in Firefox?
- A rusty go at channels.
- Better HTTP upgrades with hyper.
- Our Vision for wasm-bindgen.
- The Embedded WG newsletter 6.
- [podcast] Rusty Spike Podcast - episode 35. Rust 1.27, new books, Microsoft, Eclipse, converting C to Rust, the Rust 2018 preview, the Rust 2018 roadmap, and RFCs.
- [podcast] New Rustacean news – Rust 1.27. Stable SIMD, dyn trait, rustfix and the alpha release of the Rust 2018 Edition Preview.
Crate of the 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.
- [good first issue] wasm-bindgen: Expose bindings to ALL the global JS things.
- 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
174 pull requests were merged in the last week
- did you mean to block nightlies on clippy? (a big leap forward on the way to stable clippy!)
- llvm: add DWARF for discriminated unions
- libc: simplify the stdbuild section
- allow irrefutable
letpatterns (RFC #2086)
- loosened rules involving statics mentioning other statics
- obligation forest cleanup
- suggestion for 'static impl Trait return
- fix incorrect type mismatch label pointing at return type
- use literal span for concrete type suggestion
- improve the error message when
- point to lifetime spans on lifetime errors
- add modifier keyword spans to hir::Visibility; improve unreachable-pub, private-no-mangle lint suggestions
- provide existing ref suggestions for more E0308 errors
Selfin where clauses may not be object safe
- suggest correct comparison against negative literal
- lint to favor
...range patterns; migrate to
- detect overflows of non u32 shifts
places_conflictto avoid complex vectors etc.
- NLL: better move errors
- NLL: bad error message when converting anonymous lifetime to
- NLL: introduce dirty list to liveness, eliminate
- convert NLL ops to caches
- avoid needless allocations in
- speed up compilation of large constant arrays
Idents in HIR and remove emulation of hygiene with gensyms
- always check type_dependent_defs
- fix ICEs when using continue as an array length inside closures (inside loop conditions)
- add error for using null characters in
- don't inspect the generated existential type items
- don't ICE when performing
- make the public API of the
alloccrate a subset of
- new safe associated functions for
- make custom trait object for
- optimize sum of Durations by using custom function
Arc: remove unused allocation from
BTreeMap::clone()not allocate when cloning an empty tree
park_timeout: prohibit spurious wakeups in next
- fix possibly endless loop in
- cargo: remove all 4
- cargo: display a one line progress of what crates are currently built
- cargo: remove redundant hashmap
- rustdoc: minify css
dynall the things
- crates.io: forbid tarballs with hard links being uploaded
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- RFC 2345: Allow panicking in constants.
- RFC 2296: Add
Option::replaceto the core library.
- RFC 2344: Allow
loopin constant evaluation.
- RFC 2302: Tuple struct construction with
Self(v1, v2, ..).
- RFC 2397: Introduce
#[do_not_recommend]to control errors for trait impls.
- Amend RFC 0430: Allow underscores between numbers in CamelCase names.
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.
- [disposition: postpone] String reflection.
- [disposition: merge] Tracking issue for
- [disposition: merge] Tracking issue for
- [disposition: merge] Respect -Z no-verify during LTO.
- [disposition: merge] impl Clone for
- [disposition: merge] Add
#[repr(transparent)]to some libcore types.
- [disposition: close] Add
- Jul 11. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jul 17. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Jul 18. Rust Events Team Meeting.
- Jul 18. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jul 6. Darmstadt, DE - Rhein-Main Rust Meetup.
- Jul 9. Karlsruhe, DE - Rust Meetup
- Jul 11. Zurich, CH - Actix.rs - July Meetup.
- Jul 11. Berlin, DE - OpenTechSchool - Rust Hack and Learn.
- Jul 19. Cambridge, GB - Cambridge Rust Meetup.
- Jul 8. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Jul 9. Seattle, US - Monthly Rust Meetup.
- Jul 11. Vancouver, CA - Rust Study/Hack/Hang-out night.
- Jul 12. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Jul 12. Utah Valley, Utah, US - Utah Rust - Monthly Meeting.
- Jul 15. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Jul 18. Standford, US - Rust Bay Area - [@ Stanford] Munching Macros and Facebook's Mononoke.
- Aug 17. Portland, US - RustConf 2018. Registration is now open.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Freedom to shoot yourself in the foot is not a rust marketing point 😉
Thanks to DPC for the suggestion!