Hello and welcome to another issue of This Week in Rust!
Rust is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at @ThisWeekInRust on Twitter or @ThisWeekinRust on mastodon.social, or send us a pull request.
Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub and archives can be viewed at this-week-in-rust.org.
If you find any errors in this week's issue, please submit a PR.
This week's crate is tower-async, a currently nightly-only async library to build network servers, based on tower.
Thanks to Glen De Cauwsemaecker for the self-suggestion!
Please submit your suggestions and votes for next week!
Always wanted to contribute to open-source projects but did not 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.
406 pull requests were merged in the last week
- add mips64r6 and mips32r6 as
target_arch values
- add
riscv64gc-unknown-hermit target
- add
x86_64-unknown-linux-ohos target
- enable chkstk/alloca intrinsics on
x86_64-unknown-uefi
- Support
.comment section like GCC/Clang (!llvm.ident )
- add Alias to smir
- add BITS,
from_bits, to_bits to IP addresses
- add FnPtr ty to SMIR
- add Foreign, Never, FnDef, Closure and Generator tys to SMIR
- add
#[inline] to core debug assertion helpers
- add dynamic for smir
- add the
no-builtins attribute to functions when no_builtins is applied at the crate level
- add ty convs for smir refs and ptrs
- allow opaques to be defined by trait queries, again
- always const-prop scalars and scalar pairs
- avoid tls access while iterating through mpsc thread entries
- better diagnostics for dlltool errors
- comment stuff in the new solver
- don't translate compiler-internal bug messages
- encode shorthands for spans in metadata
- error/E0691: include alignment in error message
- fix
#[inline(always)] on closures with target feature 1.1
- fix
inline_const with interpolated block
- fix invalid display of inlined re-export when both local and foreign items are inlined
- fix removal span calculation of
unused_qualifications suggestion
- fix results search alias display
- fix rustc-args passing issue in bootstrap
- get
!nonnull metadata on slice iterators, without assume s
- get rid of subst-relate incompleteness in new solver
- improve error message when closing bracket interpreted as formatting fill character
- inline overlap based CGU merging
- lint/ctypes: only try normalize
- new solver: add a separate cache for coherence
- new solver: don't consider blanket impls multiple times
- on nightly, dump ICE backtraces to disk
- permit pre-evaluated constants in
simd_shuffle
- prototype: add unstable
-Z reference-niches option
- querify unused trait check
- refactor vtable encoding and optimize it for the case of multiple marker traits
- remove
Scope::Elision from bound-vars resolution
- rename
arg_iter to iter_instantiated
- restrict recursive opaque type check
- resurrect:
rustc_llvm : Add a -Z print-codegen-stats option to expose LLVM statistics
- reuse
codegen_ssa monomorphization errors in codegen_gcc
- reuse the MIR validator for MIR inlining
- revert "Prototype: Add unstable
-Z reference-niches option"
- safe Transmute: Fix ICE (due to UnevaluatedConst)
- substitute types before checking inlining compatibility
- support
--print KIND=PATH command line syntax
- support interpolated block for
try and async
- turn copy into moves during DSE
- tweak spans for self arg, fix borrow suggestion for signature mismatch
- use SHA256 source file checksums by default when targeting MSVC
- use
features() over features_untracked() where possible
- use erased self type when autoderefing for trait error suggestion
- use the correct span for displaying the line following a derive sugge…
- miri: make full field retagging the default
- remove redundant clones
- fix
size_hint for EncodeUtf16
- allow limited access to
OsString bytes
- make
{Rc,Arc}::allocator associated functions
- stabilize chown functions (
unix_chown )
- remove an allocation in
Path::with_extension
- remove the unstable
core::sync::atomic::ATOMIC_*_INIT constants
- remove lifetime bound for A for
impl Extend<&'a T> for Vec<T, A>
- hashbrown: publicly re-export
Equivalent from the crate root
- futures: add
TryStreamExt::try_ready_chunks as failable version of StreamExt::ready_chunks
- codegen_gcc: add instructions on how to generate GIMPLE format
- codegen_gcc: add support for
"ffi_const" function attribute
- cargo: git: respect scp-like URL for nested submodules
- cargo: credential provider implementation
- cargo: fix "cargo doc --open" crash on WSL2
- cargo: fix: encode URL params correctly for SourceId in Cargo.lock
- cargo: fix: only skip mtime check on
~/.cargo/{git,registry}
- rustdoc: strip impl if not re-exported and is
doc(hidden)
- rustdoc: fix position of
default in method rendering
- rustdoc: handle cross-crate RPITITs correctly
- clippy:
significant_drop_tightening don't lint literal-returning functions
- clippy:
significant_drop_tightening fix tuple drop recognition
- clippy:
inherent_to_string : Don't lint unsafe or extern fns
- clippy:
manual_filter_map : lint on matches and pattern matching
- clippy:
ptr_arg should ignore extern functions
- clippy:
redundant_pattern_matching : include guard in suggestion
- clippy:
unnecessary_literal_unwrap : fix ICE on None.unwrap_or_default()
- clippy:
unused_async : don't lint if paths reference async fn without immediate call
- clippy:
unwrap_or_else_default → unwrap_or_default and improve resulting lint
- clippy: allow
Self::cmp(self, other) as a correct impl
- clippy: check for fully qualified paths in
unnecessary_cast
- clippy: check that the types are equal in
SpanlessEq::eq_expr
- clippy: fix
unwrap_or_else_default false positive
- clippy: fix async functions handling for
needless_pass_by_ref_mut lint
- clippy: fix: false positive for
option_env! in ifs_same_cond
- clippy: make
comparison_to_empty work on if let /let chains
- clippy: new lints:
absolute_paths ,
error_impl_error ,
four_forward_slashes ,
iter_skip_zero ,
needless_return_with_try ,
redundant_guards ,
string_lit_chars_any ,
redundant_locals
- clippy: refactor some of
dereference.rs to util functions
- clippy: remove
#![allow(unused)] and --crate-name from cargo dev new_lint generated tests
- clippy: rewrite
tuple_array_conversions
- rust-analyzer: editor/code: Use notification command links for debugger installation
- rust-analyzer: fix highlighting of byte escape sequences
- rust-analyzer: fix: don't follow raw pointer derefs when considering method receiver candidates
- rust-analyzer: fix: lookup super traits in
is_dyn_method
- rust-analyzer: fix: normalize expected ty in call arguments
- rust-analyzer: fix: report
incorrect-ident-case for inner items
- rust-analyzer: limit
change_visibility assist to applicable items
- rustfmt: prevent ICE when formatting an empty-ish macro arm
- rustfmt: support non-lifetime binders
A relatively light week with respect to performance changes. The one major
regressing PR was reverted (for other reasons), and we saw some very nice gains
on compile-times from (1.) changes to our codegen-unit merging logic and from
(2.) changes to the stdlib slice iterators encoding its non-null guarantees
directly, allowing the removal of a call to the assume intrinsic.
Triage done by @pnkfelix.
Revision range: 6b9236ed..0308df23
1 Regressions, 1 Improvements, 4 Mixed; 1 of them in rollups
35 artifact comparisons made in total
Full Report Here
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.
Every week, the team announces the 'final comment period' for RFCs and key PRs
which are reaching a decision. Express your opinions now.
- No RFCs entered Final Comment Period this week.
An important step for RFC implementation is for people to experiment with the
implementation and give feedback, especially before stabilization. The following
RFCs would benefit from user testing before moving forward:
- No RFCs issued a call for testing this week.
If you are a feature implementer and would like your RFC to appear on the above list, add the new call-for-testing
label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature
need testing.
Rusty Events between 2023-07-26 - 2023-08-23 🦀
- 2023-07-26 | Virtual (Cardiff, UK)| Rust and C++ Cardiff
- 2023-07-27 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
- 2023-07-28 | Virtual (Tunis, TN) | Rust Meetup Tunisia
- 2023-07-31 | Virtual (Linz, AT) | Rust Linz
- 2023-08-01 | Virtual (Berlin, DE) | OpenTechSchool Berlin
- 2023-08-01 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
- 2023-08-02 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2023-08-02 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
- 2023-08-08 | Virtual (Dallas, TX, US) | Dallas Rust
- 2023-08-10 | Virtual (Nuremberg, DE) | Rust Nuremberg
- 2023-08-15 | Virtual (Berlin, DE) | OpenTechSchool Berlin
- 2023-08-15 | Virtual (Washington, DC, US) | Rust DC
- 2023-08-16 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2023-08-22 | Virtual (Dublin, IE) | Rust Dublin
- 2023-07-27 | Mountain View, CA, US | Mountain View Rust Meetup
- 2023-08-01 | Chicago, IL, US | Deep Dish Rust
- 2023-08-07 | Minneapolis, MN, US | Minneapolis Rust Meetup
- 2023-08-10 | Mountain View, CA, US | Mountain View Rust Meetup
- 2023-08-10 | Lehi, UT, US | Utah Rust
- 2023-08-15 | San Francisco, CA, US | San Francisco Rust Study Group
- 2023-08-15 | Seattle, WA, US | Seattle Rust User Group Meetup
- 2023-08-17 | Nashville, TN, US | Seattle Rust User Group Meetup
- 2023-08-23 | Austin, TX, US | Rust ATX
If you are running a Rust event please add it to the calendar to get
it mentioned here. Please remember to add a link to the event too.
Email the Rust Community Team for access.
Please see the latest Who's Hiring thread on r/rust
A rustacean is a programmer that dislikes being told "yes" in situations where they'll regret it later.
– Predrag Gruevski on mastodon
Thanks to Kevin Mehall for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, andrewpollack, U007D, kolharsam, joelmarcey, mariannegoldin, bennyvasquez.
Email list hosting is sponsored by The Rust Foundation
Discuss on r/rust
|