Warning
This post was published 98 days ago. The infomation described in this article may have changed.
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.
autometrics
0.5 - Automatically connecting Prometheus metrics to traces with exemplarsThis week's crate is release-plz, a crate to automate changelog generation, GitHub/Gitea release tagging, publishing on crates.io and bumping the version.
Thanks to Marco Ieni 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.
ockam uninstall
and ockam upgrade
QueueInterface
for MockDb
PaymentIntent
and PaymentAttempt
for connector_id
PaymentMethodInterface
for MockDb
If you are a Rust project owner and are looking for contributors, please submit tasks here.
410 pull requests were merged in the last week
-Zprint-vtable-sizes
.eh_frame
from being emitted for -C panic=abort
#[test]
function signature verification improvements<meta charset="utf-8">
to -Zdump-mir-spanview
outputnote_source_of_type_mismatch_constraint
reject_fn_ptr_impls
extern "rust-call"
call&[T; N]
when contents isn't readunused_must_use
to cover block exprsdead_code_cgu
computationtransmute_generic_consts
struct
layout not depend on unsizeable tailequate_inputs_and_outputs
enum
variant in debuginfo codegen#[inline(always)]
in MIR inliningStable
trait to translate MIR to SMIRBinOp
sunchecked_{shl,shr}
TryFrom<&OsStr>
for &str
io::copy
buffer reuse to BufReader tooString::leak
available_parallelism
using native netbsd api firstDrainFilter
impls of various collectionsBinaryHeap
parametric over Allocatorslice::Iter::fold
T: Sized
bounds on BufReader<T>
, BufWriter<T>
and LineWriter<T>
RawIntoIter
and RawIntoParIter
syn
for parsing doc commentsdoctest-in-workspace
by default!
enum
variant spans to exclude any explicit discriminantparse_attribute
without an attributeincorrect_clone_impl_on_copy_type
single_call_fn
single_range_in_vec_init
drain_collect
arithmetic_side_effects
also lint const arithmeticmissing_panics_doc
: pickup expect methodredundant_closure_call
: handle nested closuresfind_format_arg_expr
when incremental compilation is enabledderivable_impls
: don't lint if default()
call expr unsize-coerces to trait objectmap_unwrap_or
: don't lint when referenced variable is movedmatch_same_arms
: don't lint if non_exhaustive_omitted_patterns
missing_const_for_fn
: Ensure dropped locals are ~const Destruct
needless_doctest_main
: ignore main()
in no_test
code fencesmissing_panics_doc
not lint for todo!()
needless_if
sself_named_module_files
and mod_module_files
unnecessary_cast
needless_lifetimes
from_over_into
: Show suggestions for non-Self expanded pathsunnecessary_fold
: suggest turbofish if necessaryno_effect
: Suggest adding return
if applicable--explain
subcommand return 1 for missing lintsFairly positive week with very few regressions and some decent (albeit incremental) improvements. The most widespread gains came from some standard library improvements which are not a particularly common cause of large improvements in compiler performance. Overall a large chunk of the perf test suite showed an average of 0.6% improvement.
Triage done by @rylev. Revision range: 4bd4e2e..b9d608c
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
1.4% | [0.5%, 3.6%] | 16 |
Regressions ❌ (secondary) |
1.0% | [0.2%, 3.5%] | 29 |
Improvements ✅ (primary) |
-0.8% | [-7.8%, -0.2%] | 157 |
Improvements ✅ (secondary) |
-2.9% | [-48.3%, -0.3%] | 84 |
All ❌✅ (primary) | -0.6% | [-7.8%, 3.6%] | 173 |
3 Regressions, 7 Improvements, 4 Mixed; 3 of them in rollups 51 artifact comparisons made in total
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation 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.
Vec
s over different allocatorsRead
, Write
and Seek
impls for Arc<File>
where appropriateOk
on kill if process has already exitedSync
for mpsc::Sender
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:
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-06-21 - 2023-07-19 🦀
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
rust programmers when they see each other again:
Long time no C
– ciscoffeine on mond-basis.eu
Thanks to Brian Kung 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
🏷️ Rust_feed