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 silkenweb, a library for building web apps with fine-grained reactivity and a clean separation of logic and UI.
Thanks to henrik for the 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.
408 pull requests were merged in the last week
- -Zunpretty help: add missing possible values
- NVPTX: allow
PassMode::Direct for ptx kernels for now
OptWithInfcx naming nits, trait bound simplifications
deduce_param_attrs : explain a read-only case
rustc_interface cleanups
stack_overflow: get_stackp using MAP_STACK flag on dragonflybsd too
- add bootstrap flag
--skip-stage0-validation
- add method to convert internal to stable constructs
- add support for i586-unknown-netbsd as target
- add support for mipsel-unknown-netbsd, 32-bit LE mips
- add target features for LoongArch
- add way to differentiate argument locals from other locals in Stable MIR
- allow partially moved values in match
- allow target specs to use an LLD flavor, and self-contained linking components
- allows
#[diagnostic::on_unimplemented] attributes to have multiple
- avoid repeated interning of
env!("CFG_RELEASE")
- avoid unbounded
O(n^2) when parsing nested type args
- avoid unnecessary builds/rebuilds of
rust-demangler
- avoid unnecessary renumbering during borrowck
- c-variadic error improvements
- consider alias bounds when computing liveness in NLL (but this time sound hopefully)
- const stabilize
mem::discriminant
- correctly handle nested or-patterns in exhaustiveness
- coverage: consistently remove unused counter IDs from expressions/mappings
- coverage: replace manual debug indents with nested tracing spans in
counters
- create
windows/api.rs for safer FFI
- create a new ConstantKind variant (ZeroSized) for StableMIR
- declare
rustc_target's dependency on object/macho
- deny providing explicit effect params
- derive
Ord , PartialOrd and Hash for SocketAddr*
- detect when trait is implemented for type and suggest importing it
- do not suggest
'Trait<Assoc=arg>' when in trait impl
- don't normalize to an un-revealed opaque when we hit the recursion limit
- don't treat closures/coroutine types as part of the public API
- don't use LFS64 symbols on musl
- eat close paren if
capture_cfg to avoid unbalanced parens
- enable
cg_clif tests for riscv64gc
- fail typeck for illegal break-with-value
- fix ICE: Restrict param constraint suggestion
- fix failure to detect a too-big-type after adding padding
- fix inline const pattern unsafety checking in THIR
- fix missing leading space in suggestion
- fix unused variables lint issue for args in macro
- fix unwrap suggestion for async fn
- generate aggregate constants in DataflowConstProp
- handle
ReErased in responses in new solver
- ignore RPIT duplicated lifetimes in
opaque_types_defined_by
- implement C ABI lowering for CSKY
- implement
gen blocks in the 2024 edition
- improve android-ndk property interface
- improve some diagnostics around
?Trait bounds
- improve the warning messages for the
#[diagnostic::on_unimplemented]
- increase the reach of
panic_immediate_abort
- intern
LocalDefId list from opaque_types_defined_by query
- introduce
-C instrument-coverage=branch to gate branch coverage
- invalid
? suggestion on mismatched Ok(T)
- lint overlapping ranges as a separate pass
- mark
.rmeta files as /SAFESEH on x86 Windows
- mark constructor of
BinaryHeap as const fn
- never consider raw pointer casts to be trival
- on object safety error, mention new
enum as alternative
- on unresolved imports, suggest a disambiguated path if necessary to avoid collision with local items
- only call
mir_const_qualif if absolutely necessary
- only emit one error per unsized binding, instead of one per usage
- poison
check_well_formed if method receivers are invalid to prevent typeck from running on it
- print variadic argument pattern in HIR pretty printer
- properly restore snapshot when failing to recover parsing ternary
- quietly fail if an error has already occurred
- rand use getrandom for freebsd (available since 12.x)
- refactor type visitor walking
- remap Cargo dependencies to /rust/deps
- remove -Zdep-tasks
- remove Apple RNG fallbacks and simplify implementation
- remove fold code and add
Const::internal() to StableMIR
- remove support for alias
-Z instrument-coverage
- require target features to match exactly during inlining
- return multiple object-safety violation errors and code improvements to the object-safety check
- return unfixed len if pat has reported error
- rework negative coherence to properly consider impls that only partly overlap
- rustdoc: elide cross-crate default generic arguments
- rustdoc: use
ThinVec in GenericParamDefKind
- see through aggregates in GVN
- separate move path tracking between borrowck and drop elaboration
- share some
track_caller logic between interpret and codegen
- small
ty::print cleanups
- some diagnostics improvements of
gen blocks
- stash and cancel cycle errors for auto trait leakage in opaques
- stop telling people to submit bugs for internal feature ICEs
- store
#[stable] attribute's since value in structured form
- suggest assoc fn
new when trying to build tuple struct with private fields
- suggest unwrap/expect for let binding type mismatch
- tvOS simulator support on Apple Silicon for rustc
- tweak suggestion span for outer attr and point at item following invalid inner attr
- uplift
Canonical to rustc_type_ir
- uplift
ClauseKind and PredicateKind into rustc_type_ir
- use ImageDataType for allocation type
- validate
feature and since values inside #[stable(…)]
- when encountering sealed traits, point types that implement it
- when expecting closure argument but finding block provide suggestion
- work around the fact that
check_mod_type_wf may spuriously return ErrorGuaranteed
- time: use
clock_gettime on macos
- windows: support sub-millisecond sleep
- refactor some
char , u8 ASCII functions to be branchless
- add
#[inline] to some recalcitrant ops::range methods
- stabilize ratified RISC-V Target Features
- stabilize
[const_]pointer_byte_offsets
- stabilize inline asm usage with
rustc_codegen_cranelift
- futures: add
TryAll and TryAny adapters
- futures: fix
Sync impl of FuturesUnordered
- futures: provide AtomicWaker if portable-atomic feature is enabled, even if atomic CAS is not available
- codegen_gcc: add basics for
test command in build system
- codegen_gcc: fix
volatile_load
- cargo toml: Allow version-less manifests
- cargo toml: Decouple parsing from interning system
- cargo: shell: Write at once rather than in fragments
- cargo: add new packages to
[workspace.members] automatically
- cargo: move up looking at index summary
enum
- cargo: remove duplicate binaries during install
- cargo: remove outdated option to
-Zcheck-cfg warnings
- rustfmt: fixed error caused by combination of
match_arm_blocks and control_brace_style
- clippy:
ignored_unit_patterns : check &(), &&(),
- clippy:
iter_without_into_iter : fix papercuts in suggestion and restrict linting to exported types
- clippy:
let_and_return : Wrap with parenthesis if necessary
- clippy: add
waker_clone_and_wake lint to check needless Waker clones
- clippy: fix missing parenthesis in suboptimal floating point help
- clippy: ignore lower-camel-case words in
doc_markdown
- clippy: move
read_zero_byte_vec to nursery
- clippy: remove internal feature from
clippy_utils
- clippy: remove the
internal_warn lint category
- rust-analyzer: make
extract_variable assist in place
This week we have two sets of results as last week's arrived later than the publish date:
Triage done by @rylev and @simulacrum.
Revision range: b9832e72..650991d
Across both reports:
9 Regressions, 7 Improvements, 5 Mixed
127 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.
- No Unsafe Code Guideline RFCs entered Final Comment Period this week.
- No New or Updated RFCs were created 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-11-01 - 2023-11-29 🦀
- 2023-11-01 | Virtual (Cardiff, UK)| Rust and C++ Cardiff
- 2023-11-01 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2023-11-02 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
- 2023-11-07 | Virtual (Berlin, DE) | OpenTechSchool Berlin
- 2023-11-07 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
- 2023-11-09 | Virtual (Nuremberg, DE) | Rust Nuremberg
- 2023-11-14 | Virtual (Dallas, TX, US) | Dallas Rust
- 2023-11-15 | Virtual (Cardiff, UK)| Rust and C++ Cardiff
- 2023-11-15 | Virtual (Richmond, VA, US) | Linux Plumbers Conference
- 2023-11-15 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2023-11-16 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
- 2023-11-21 | Virtual (Berlin, DE) | OpenTechSchool Berlin
- 2023-11-21 | Virtual (Washington, DC, US) | Rust DC
- 2023-11-28 | Virtual (Dallas, TX, US) | Dallas Rust
- 2023-11-01 | Brookline, MA, US | Boston Rust Meetup
- 2023-11-02 | Mountain View, CA, US | Mountain View Rust Meetup
- 2023-11-08 | Boulder, CO, US | Boulder Rust Meetup
- 2023-11-14 | New York, NY, US | Rust NYC
- 2023-11-14 | Seattle, WA, US | Cap Hill Rust Coding/Hacking/Learning
- 2023-11-15 | Richmond, VA, US + Virtual | Linux Plumbers Conference
- 2023-11-16 | Mountain View, CA, US | Mountain View Rust Meetup
- 2023-11-16 | Nashville, TN, US | Music City Rust Developers
- 2023-11-16 | Seattle, WA, US | Seattle Rust User Group
- 2023-11-21 | San Francisco, CA, US | San Francisco Rust Study Group
- 2023-11-22 | 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
After doing a best fit, we found Rust projects were less likely to introduce vulnerabilities than their equivalent C++ projects at all relevant experience levels, but more importantly, we found the effect was most significant for first-time contributors, who were almost two orders of magnitude less likely to contribute vulnerabilities. That is, even though Rust may have a reputation as a harder language to learn, there is a very measurable effect that makes it better for newbies. Reviewers should not have to put as much effort into reviewing code to be confident that someone making their first foray into their project is accidentally adding a vulnerability.
– Justin Tracey on crysp.org
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
Discuss on r/rust
|