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
- ππ Announcing Rust 1.28. ππ
- warp: a new web framework for Rust.
- Data manipulation in Rust (Part 1: nalgebra).
- Rust and the case of the redundant comparison.
- Solving the generalized streaming iterator problem without GATs.
- Stacked borrows: An aliasing model for Rust.
- Amethyst game engine: New tutorial and huge feature update.
intl_pluralrules
- A new crate for CLDR plural rules.- Notes on two PRs that slightly improve Rust's performance.
- Rust concurrency patterns: No context, no cancel, no leaks.
- ripgrep is now packaged in Debian.
- This week in Rust and WebAssembly 5.
- 2018 Edition end of week post (2018-08-04).
Crate of the Week
This week's crate is warp, a fast, composable web framework. Thanks to Willi Kappler for 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.
- How to land your first Rust pull request in TiKV.
- [easy] Maud: Update benchmarks. Maud is an HTML template engine for Rust.
- atom-language-rust: Help with PR reviews.
- intl_pluralrules: Seeking crate review.
- 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
165 pull requests were merged in the last week
- don't commit thread stack on Windows
- implement a self profiler
- update LLVM submodule to 7.0
- use
BitVector
for global sets ofAttrId
- use suggestions for shell format arguments
- async can begin expressions
- resolve: modularize crate-local
#[macro_export] macro_rules
- resolve: record single-segment extern crate import resolutions
- privacy: fix an ICE in
path_is_private_type
- reintroduce
Undef
and properly check constant value sizes - enable RISCV
- aarch64 fix
- NLL migration in the 2018 edition needs two-phase borrows too!
- NLL mentions lifetimes that are not included in printed span(s)
- NLL: dangly paths for box
- NLL: disable some nice region errors in NLL mode
- NLL: avoid computing liveness for locals that escape into statics
- NLL: use smaller spans for errors involving closure captures
- NLL: better Diagnostic When "Later" means "A Future Loop Iteration"
- include lifetime in mutability suggestion in NLL messages
- NLL: allow conflicting borrows of promoted length zero arrays
- NLL: Don't make "fake" match variables mutable
- fix NLL migration mode so that reports region errors when necessary
- NLL: sort diagnostics by span
- slices: fix ZST slice iterators making up pointers; debug_assert alignment in from_raw_parts
- App-lint-cability
- add more diagnostics to smooth edition transition
- fix memrchr in MIRI
invalid_const_promotion
: check if we get the right signal- remove unstable and deprecated APIs
- revert "Stabilize to_bytes and from_bytes for integers."
- provide
{to,from}_{ne,le,be}_bytes
functions on integers - treat gc=No characters as numeric
- implement inner deref for
Option
andResult
- make
io::Read::read_to_end
considerio::Take::limit
- use
SetLenOnDrop
inVec::truncate()
- Implement Unpin for FutureObj and LocalFutureObj
- reexport tests without polluting namespaces
- cargo: fix the edition build scripts are compiled with
- cargo: use listed dependency name for feature names
- cargo fully capture rustc and rustdoc output when
-Zcompile-progress
is passed - cargo can silently fix some bad lockfiles (use
--locked
to disable) - rustdoc: stabilize
--color
and--error-format
options - rustdoc: make
everybody_loops
preserve item declarations - fix ICE when rustdoc encounters certain usages of HRTBs
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.
RFCs
No RFCs are currently in final comment period.
Tracking Issues & PRs
- [disposition: merge] Tracking issue for RFC 2093: Infer
T: 'x
outlives requirements on structs. - [disposition: merge] Calculate capacity when collecting into Option and Result.
- [disposition: close] Undeprecate
thread::sleep_ms
.
New RFCs
- Permit impl Trait in type aliases.
- Union initialization and Drop.
- Project-based Examples for Cargo Projects.
Upcoming Events
Online
- Aug 14. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Aug 15. Rust Events Team Meeting in Telegram.
- Aug 15. Rust Community Team Meeting in Discord.
- Aug 22. Rust Community Team Meeting in Discord.
Europe
- Aug 10. Frankfurt, DE - Rhein-Main Rust Meetup (with Special Guest).
- Aug 16. Cambridge, GB - Cambridge Rust Meetup.
North America
- Aug 12. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Aug 13. Seattle, US - Monthly Rust Meetup.
- Aug 15. Orange County, US - Rust Foreign Function Interface (FFI) Development.
- Aug 17. Portland, US - RustConf 2018.
- Aug 19. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Aug 22. Berlin, DE - OpenTechSchool - Rust Hack and Learn.
- Aug 22. Vancouver, CA - Rust Study/Hack/Hang-out night.
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
We put in a lot of work to make upgrades painless; for example, we run a tool (called βcraterβ) before each Rust release that downloads every package on crates.io and attempts to build their code and run their tests.
β Rust Blog: What is Rust 2018.
Thanks to azriel91 for the suggestion!