Tumgik
this-week-in-rust · 3 days
Text
This Week in Rust 544
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.
Updates from Rust Community
Foundation
Guest Blog: Attending CISA’s Open Source Software Security Summit
Newsletters
This Month in Rust OSDev: March 2024
Project/Tooling Updates
lilos v1.0 released
medium-to-markdown v0.1.1 : Convert your medium blogs easily into markdown files
Fluvio v0.11.6 release and project updates
venndb 0.4.0 - custom validators
Tantivy 0.22: Performance improvements, new aggregations and stability fixes
Announcing r3bl_terminal_async - build async interactive CLIs in Rust
[video] Demo + architecture overview of Ferrostar, a cross-platform turn-by-turn navigation SDK with a Rust core
Observations/Thoughts
The Rust Calling Convention We Deserve
Sized, DynSized, and Unsized
Coroutines and effects
Porting a cross-platform GUI application to Rust
Adventures In Rust: Bringing Exchange Support To Thunderbird
Rust Walkthroughs
Why SQLite Performance Tuning made Bencher 1200x Faster
drop, the destructor of Rust structs
Building with AWS S3 using Rust
Rust tokio task cancellation patterns
[video] Build with Naz - Published crate r3bl_terminal_async for building async interactive CLIs in Rust
[video] Trent Billington - Bevy ECS - Power tool for data oriented applications
[video] Building a procedural art generator
[audio] Isograph with Robert Balicki
Research
A Study of Undefined Behavior Across Foreign Function Boundaries in Rust Libraries
Rust Digger: Does size matter? The biggest crate is 450MB; More than 100 crates are over 50MB
Miscellaneous
GitHub Sponsor Rust developer David Tolnay
Learn how to write TCP servers using Rust’s std::net module
RustFest Zürich 🇨 Talks announced
Crate of the Week
This week’s crate is scandir, a high-performance file tree scanner.
Thanks to Marty B. for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
awesome-alternatives-in-rust - Add dqy alternative to dig
fluvio - When a topic is deleted, connected clients should have their connection closed
fluvio - MQTT Connector: Prefix auto generated Client ID to prevent connection drops
fluvio - Remove localhost from fluvio in favor of 127.0.0.1
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10
RustLab 2024 | Closes 2024-05-01 | Florence, Italy | Event date: 2024-11-09 - 2024-11-11
EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event date: 2024-10-10
Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19
Conf42 Rustlang 2024 | Closes 2024-07-22 | online | Event date: 2024-08-22
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
432 pull requests were merged in the last week
add simple async drop glue generation
llvm backend: Prevent creating the same Instance::mono multiple times
static_mut_refs: use raw pointers to remove the remaining FIXME
add a lower bound check to unicode-table-generator output
add an opt-in to store incoming edges in VecGraph + misc
add llvm-bitcode-linker to build manifest
allow workproducts without object files
at debuginfo=0, don’t inline debuginfo when inlining
correctly change type when adding adjustments on top of NeverToAny
coverage: branch coverage tests for lazy boolean operators
coverage: prepare for improved branch coverage
delay interning errors to after validation
delay span bug when Self kw resolves to DefKind::{Mod,Trait}
don’t ICE for kind mismatches during error rendering
don’t ascend into parent bodies when collecting stmts for possible return suggestion
don’t error on subtyping of equal types
don’t inline integer literals when they overflow - new attempt
don’t repeatedly duplicate TAIT lifetimes for each subsequently nested TAIT
fix ICE in eval_body_using_ecx
fix ICE when there is a non-Unicode entry in the incremental crate directory
fix capturing duplicated lifetimes via parent in precise_captures (impl use<'...>)
fix normalizing in different ParamEnvs with the same InferCtxt
fix trait solver overflow with non_local_definitions lint
flip spans for precise capturing syntax not capturing a ty/const param, and for implicit captures of lifetime params
give a name to each distinct manipulation of pretty-printer FixupContext
ignore -C strip on MSVC
implement Modified Condition/Decision Coverage
implement PROBLEMATIC_CONSTS generalization
implement syntax for impl Trait to specify its captures explicitly (feature(precise_capturing))
improve ICE message for forbidden dep-graph reads
interpret: pass MemoryKind to adjust_alloc_base_pointer
interpret: pass MemoryKind to before_memory_deallocation
interpret: use ScalarInt for bin-ops; avoid PartialOrd for ScalarInt
introduce perma-unstable wasm-c-abi flag
let inherent associated types constrain opaque types during projection
make suggest_deref_closure_return more idiomatic/easier to understand
make thir_tree and thir_flat into hooks
make the comments for ReturnDest variants doc comments
match ergonomics 2024: Implement eat-one-layer
match ergonomics 2024: mut doesn’t reset binding mode
match hyphen in multi-revision comment matchers
opaque types have no namespace
outline default query and hook provider function implementations
prefer identity equality over equating types during coercion
print note with closure signature on type mismatch
properly handle emojis as literal prefix in macros
remove default_hidden_visibility: false from wasm targets
remove uneeded clones now that TrustedStep implies Copy
silence some follow-up errors on trait impls in case the trait has conflicting or otherwise incoherent impls
simplify shallow resolver to just fold ty/consts
stop taking ParamTy/ParamConst/EarlyParamRegion/AliasTy by ref
subtype predicates only exist on inference types, so we can allow them to register opaque types within them
tell LLVM Vec::len is invariant across growth
use raw-dylib for Windows synchronization functions
refactor clippy in bootstrap
when suggesting RUST_BACKTRACE=1, add a special note for Miri’s env var isolation
miri: data_race: make the release/acquire API more clear
miri: no_std works on Windows now
miri: add localtime_r shim
miri: address reuse improvements and fixes
miri: deadlock: show backtrace for all threads
miri: directly call handle_alloc_error
miri: implement support for __rust_alloc_error_handler
miri: make realloc with a size of zero fail
miri: move read_byte_slice to general helpers file, next to read_c_str
miri: threads: keep track of why we are blocked, and sanity-check that when waking up
Box::into_raw: make Miri understand that this is a box-to-raw cast
PatRangeBoundary::compare_with: also add a fast-path for signed integers
codegen ZSTs without an allocation
stabilize Wasm target features that are in phase 4 and 5
stabilize const_io_structs
stabilize checking of cfgs at compile-time: --check-cfg option
stabilize generic NonZero
make checked ops emit unchecked LLVM operations where feasible
improve std::fs::Metadata Debug representation
fix negating f16 and f128 constants
force exhaustion in iter::ArrayChunks::into_remainder
checked_ilog: improve performance
add an intrinsic for ptr::from_raw_parts(_mut)
fix: make str::from_raw_parts_mut mut
use queue-based RwLock on more platforms
add support for Arm64EC to the standard library
codegen_gcc: fix PassMode::Indirect with params
codegen_gcc: fix check for main function already declared
codegen_gcc: fix panic when calling get_fn for a variable
codegen_gcc: fix passing custom CG_RUSTFLAGS when building sysroot
codegen_gcc: implement more type kinds
cargo install: including Locking message
cargo resolver: add default Edition2024 to resolver v3
cargo resolver: add v3 resolver for MSRV-aware resolving
cargo credential: trim newlines in tokens from stdin
cargo msrv: error, rather than panic, on rust-version ‘x’
cargo msrv: put MSRV-aware resolver behind a config
cargo toml: don’t crash on parse errors that point to multi-byte character
cargo toml: disallow source-less dependencies
cargo toml: error on [project] in Edition 2024
cargo toml: report _fied variants (e.g. dev_dependencies) as deprecated
cargo: fix 'cargo build’ fails when list_files() with gix is triggered
rustdoc: always display stability version even if it’s the same as the containing item
rustdoc: fix copy path button
rustdoc: support type ’/’ to search
rustdoc-search: fix description on aliases in results
rustdoc-search: single result for items with multiple paths
clippy: threadlocal_initializer_can_be_made_const will not trigger for unreachable initializers
clippy: arithmetic_side_effects fix false negative on +=
clippy: ptr_as_ptr: fix duplicate diagnostics
clippy: emit the needless_pass_by_ref_mut lint on self arguments as well
clippy: fix is_test_module_or_function
clippy: reduce single_char_pattern to only lint on ascii chars
clippy: rework interior mutability detection
clippy: the multiple_unsafe_ops_per_block test needs asm!
rust-analyzer: cargo script mvp
rust-analyzer: add convert From to TryFrom assist
rust-analyzer: allow rust files to be used linkedProjects
rust-analyzer: VFS should not walk circular symlinks
rust-analyzer: handle escaped chars in doc comments
rust-analyzer: replace Just the variable name in Unused Variable Diagnostic Fix
rust-analyzer: implement BeginPanic handling in const eval
rust-analyzer: make test harness arguments configurable and not --nocapture
rust-analyzer: render matched macro arm on hover of macro calls
rust-analyzer: try to generate more meaningful names in json converter
Rust Compiler Performance Triage
A week dominated by small mixed changes to perf with improvements slightly outweighing regressions. There were no pure regressions, and many of the mixed perf results were deemed worth it for their potential improvements to runtime performance through further optimization from LLVM.
Triage done by @rylev. Revision range: ccfcd950..a77f76e2
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 0.4% [0.2%, 1.8%] 57 Regressions ❌ (secondary) 0.4% [0.2%, 1.9%] 26 Improvements ✅ (primary) -0.8% [-3.4%, -0.2%] 50 Improvements ✅ (secondary) -0.6% [-1.9%, -0.1%] 32 All ❌✅ (primary) -0.2% [-3.4%, 1.8%] 107
0 Regressions, 5 Improvements, 6 Mixed; 2 of them in rollups 62 artifact comparisons made in total
Full report here
Call for Testing
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 calls for testing were issued this week.
RFCs Rust
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.
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
[disposition: merge] experimental project goal program for 2024 H2
Tracking Issues & PRs Rust
[disposition: merge] Tracking Issue for std::path::absolute
[disposition: merge] Tracking Issue for convenience methods on NonNull
[disposition: merge] Inline more svg images into CSS
[disposition: merge] Edition 2024: Make ! fall back to !
[disposition: merge] static_mut_refs: Should the lint cover hidden references?
Cargo
[disposition: merge] fix(toml): Warn, rather than fail publish, if a target is excluded
New and Updated RFCs
[new] experimental project goal program for 2024 H2
Upcoming Events
Rusty Events between 2024-04-24 - 2024-05-22 🦀
Virtual
2024-04-24 | Virtual + In Person (Prague, CZ) | Rust Czech Republic
#2: Making Safe Rust Safer (Pavel Šimerda)
2024-04-25 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-01 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 5 - Project Structure
2024-05-01 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-05-02 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-05-07 | Virtual (Buffalo, NY) | Buffalo Rust Meetup
Buffalo Rust User Group
2024-05-09 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-05-09 | Virtual (Israel) | Rust in Israel
Rust at Microsoft, Tel Aviv - Are we embedded yet?
2024-05-09 | Virtual (Nuremberg/Nürnberg, DE) | Rust Nuremberg
Rust Nürnberg online
2024-05-14 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-05-14 | Virtual (Halifax, NS, CA) | Rust Halifax
Rust&Tell - Halifax
2024-05-14 | Virtual + In-Person (München/Munich, DE) | Rust Munich
Rust Munich 2024 / 1 - hybrid (Rescheduled)
2024-05-15 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-05-16 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-05-21 | Virtual (Washington, DC, US) | Rust DC
Mid-month Rustful—forensic parsing via Artemis
Africa
2024-05-04 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-05-11 | Bangalore, IN | Rust Bangalore
May 2024 Rustacean meetup
Europe
2024-04-24 | Virtual + In Person (Prague, CZ) | Rust Czech Republic
#2: Making Safe Rust Safer (Pavel Šimerda)
2024-04-25 | Aarhus, DK | Rust Aarhus
Talk Night at MFT Energy
2024-04-25 | Berlin, DE | Rust Berlin
Rust and Tell - TBD
2024-04-25 | København/Copenhagen, DK | Copenhagen Rust Community
Rust meetup #46 sponsored by Nine A/S
2024-04-25 | Vienna, AT | Rust Vienna
Rust Vienna x Python User Group - April
2024-04-27 | Basel, CH | Rust Basel
Fullstack Rust - Workshop #2 (Register by 23 April)
2024-04-27 | Stockholm, SE | Stockholm Rust
Ferris’ Fika Forum #2
2024-04-30 | Budapest, HU | Budapest Rust Meetup Group
Rust Meetup Budapest 2
2024-04-30 | Salzburg, AT | Rust Salzburg
[Rust Salzburg meetup]: 6:30pm - CCC Salzburg, 1. OG, ArgeKultur, Ulrike-Gschwandtner-Straße 5, 5020 Salzburg
2024-05-01 | Köln/Cologne, DE | Rust Cologne
This Month in Rust, May
2024-05-01 | Utrecht, NL | NL-RSE Community
NL-RSE RUST meetup
2024-05-06 | Delft, NL | GOSIM
GOSIM Europe 2024
2024-05-07 & 2024-05-08 | Delft, NL | RustNL
RustNL 2024
2024-05-08 | Cambridge, UK | Cambridge Rust Meetup
Monthly Rust Meetup
2024-05-09 | Gdańsk, PL | Rust Gdansk
Rust Gdansk Meetup #2
2024-05-14 | Virtual + In-Person (München/Munich, DE) | Rust Munich
Rust Munich 2024 / 1 - hybrid (Rescheduled)
2024-05-14 | Prague, CZ | Rust Prague
Rust Meetup Prague (May 2024)
2024-05-21 | Aarhus, DK | Rust Aarhus
Hack Night
2024-05-21 | Zurich, CH | Rust Zurich
Save the date - Mai Meetup
North America
2024-04-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-04-25 | Nashville, TN, US | Music City Rust Developers
Music City Rust Developers - Async Rust on Embedded
2024-04-26 | Boston, MA, US | Boston Rust Meetup
North End Rust Lunch, Apr 26
2024-05-04 | Cambridge, MA, US | Boston Rust Meetup
Kendall Rust Lunch, May 4
2024-05-09 | Spokane, WA, US | Spokane Rust
Monthly Meetup: Topic TBD!
2024-05-12 | Brookline, MA, US | Boston Rust Meetup
Coolidge Corner Brookline Rust Lunch, May 12
2024-05-16 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-05-20 | Somerville, MA, US | Boston Rust Meetup
Ball Square Rust Lunch, May 20
2024-05-21 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-05-22 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
Oceania
2024-04-30 | Auckland, NZ | Rust AKL
Rust AKL: Why Rust? Convince Me!
2024-04-30 | Canberra, ACT, AU | Canberra Rust User Group
CRUG April Meetup: Generics and Traits
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
The learning curve for Rust is relatively steep compared to other languages, but once you climb it you’ll never look down.
– BD103 on Mastodon
Thanks to BD103 for the self-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
2 notes · View notes
this-week-in-rust · 5 days
Text
This Week in Rust 544
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.
Updates from Rust Community
Foundation
Guest Blog: Attending CISA’s Open Source Software Security Summit
Newsletters
This Month in Rust OSDev: March 2024
Project/Tooling Updates
lilos v1.0 released
medium-to-markdown v0.1.1 : Convert your medium blogs easily into markdown files
Fluvio v0.11.6 release and project updates
venndb 0.4.0 - custom validators
Tantivy 0.22: Performance improvements, new aggregations and stability fixes
Announcing r3bl_terminal_async - build async interactive CLIs in Rust
[video] Demo + architecture overview of Ferrostar, a cross-platform turn-by-turn navigation SDK with a Rust core
Observations/Thoughts
The Rust Calling Convention We Deserve
Sized, DynSized, and Unsized
Coroutines and effects
Porting a cross-platform GUI application to Rust
Adventures In Rust: Bringing Exchange Support To Thunderbird
Rust Walkthroughs
Why SQLite Performance Tuning made Bencher 1200x Faster
drop, the destructor of Rust structs
Building with AWS S3 using Rust
Rust tokio task cancellation patterns
[video] Build with Naz - Published crate r3bl_terminal_async for building async interactive CLIs in Rust
[video] Trent Billington - Bevy ECS - Power tool for data oriented applications
[video] Building a procedural art generator
[audio] Isograph with Robert Balicki
Research
A Study of Undefined Behavior Across Foreign Function Boundaries in Rust Libraries
Rust Digger: Does size matter? The biggest crate is 450MB; More than 100 crates are over 50MB
Miscellaneous
GitHub Sponsor Rust developer David Tolnay
Learn how to write TCP servers using Rust's std::net module
RustFest Zürich 🇨 Talks announced
Crate of the Week
This week's crate is scandir, a high-performance file tree scanner.
Thanks to Marty B. for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
awesome-alternatives-in-rust - Add dqy alternative to dig
fluvio - When a topic is deleted, connected clients should have their connection closed
fluvio - MQTT Connector: Prefix auto generated Client ID to prevent connection drops
fluvio - Remove localhost from fluvio in favor of 127.0.0.1
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10
RustLab 2024 | Closes 2024-05-01 | Florence, Italy | Event date: 2024-11-09 - 2024-11-11
EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event date: 2024-10-10
Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19
Conf42 Rustlang 2024 | Closes 2024-07-22 | online | Event date: 2024-08-22
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
432 pull requests were merged in the last week
add simple async drop glue generation
llvm backend: Prevent creating the same Instance::mono multiple times
static_mut_refs: use raw pointers to remove the remaining FIXME
add a lower bound check to unicode-table-generator output
add an opt-in to store incoming edges in VecGraph + misc
add llvm-bitcode-linker to build manifest
allow workproducts without object files
at debuginfo=0, don't inline debuginfo when inlining
correctly change type when adding adjustments on top of NeverToAny
coverage: branch coverage tests for lazy boolean operators
coverage: prepare for improved branch coverage
delay interning errors to after validation
delay span bug when Self kw resolves to DefKind::{Mod,Trait}
don't ICE for kind mismatches during error rendering
don't ascend into parent bodies when collecting stmts for possible return suggestion
don't error on subtyping of equal types
don't inline integer literals when they overflow - new attempt
don't repeatedly duplicate TAIT lifetimes for each subsequently nested TAIT
fix ICE in eval_body_using_ecx
fix ICE when there is a non-Unicode entry in the incremental crate directory
fix capturing duplicated lifetimes via parent in precise_captures (impl use<'...>)
fix normalizing in different ParamEnvs with the same InferCtxt
fix trait solver overflow with non_local_definitions lint
flip spans for precise capturing syntax not capturing a ty/const param, and for implicit captures of lifetime params
give a name to each distinct manipulation of pretty-printer FixupContext
ignore -C strip on MSVC
implement Modified Condition/Decision Coverage
implement PROBLEMATIC_CONSTS generalization
implement syntax for impl Trait to specify its captures explicitly (feature(precise_capturing))
improve ICE message for forbidden dep-graph reads
interpret: pass MemoryKind to adjust_alloc_base_pointer
interpret: pass MemoryKind to before_memory_deallocation
interpret: use ScalarInt for bin-ops; avoid PartialOrd for ScalarInt
introduce perma-unstable wasm-c-abi flag
let inherent associated types constrain opaque types during projection
make suggest_deref_closure_return more idiomatic/easier to understand
make thir_tree and thir_flat into hooks
make the comments for ReturnDest variants doc comments
match ergonomics 2024: Implement eat-one-layer
match ergonomics 2024: mut doesn't reset binding mode
match hyphen in multi-revision comment matchers
opaque types have no namespace
outline default query and hook provider function implementations
prefer identity equality over equating types during coercion
print note with closure signature on type mismatch
properly handle emojis as literal prefix in macros
remove default_hidden_visibility: false from wasm targets
remove uneeded clones now that TrustedStep implies Copy
silence some follow-up errors on trait impls in case the trait has conflicting or otherwise incoherent impls
simplify shallow resolver to just fold ty/consts
stop taking ParamTy/ParamConst/EarlyParamRegion/AliasTy by ref
subtype predicates only exist on inference types, so we can allow them to register opaque types within them
tell LLVM Vec::len is invariant across growth
use raw-dylib for Windows synchronization functions
refactor clippy in bootstrap
when suggesting RUST_BACKTRACE=1, add a special note for Miri's env var isolation
miri: data_race: make the release/acquire API more clear
miri: no_std works on Windows now
miri: add localtime_r shim
miri: address reuse improvements and fixes
miri: deadlock: show backtrace for all threads
miri: directly call handle_alloc_error
miri: implement support for __rust_alloc_error_handler
miri: make realloc with a size of zero fail
miri: move read_byte_slice to general helpers file, next to read_c_str
miri: threads: keep track of why we are blocked, and sanity-check that when waking up
Box::into_raw: make Miri understand that this is a box-to-raw cast
PatRangeBoundary::compare_with: also add a fast-path for signed integers
codegen ZSTs without an allocation
stabilize Wasm target features that are in phase 4 and 5
stabilize const_io_structs
stabilize checking of cfgs at compile-time: --check-cfg option
stabilize generic NonZero
make checked ops emit unchecked LLVM operations where feasible
improve std::fs::Metadata Debug representation
fix negating f16 and f128 constants
force exhaustion in iter::ArrayChunks::into_remainder
checked_ilog: improve performance
add an intrinsic for ptr::from_raw_parts(_mut)
fix: make str::from_raw_parts_mut mut
use queue-based RwLock on more platforms
add support for Arm64EC to the standard library
codegen_gcc: fix PassMode::Indirect with params
codegen_gcc: fix check for main function already declared
codegen_gcc: fix panic when calling get_fn for a variable
codegen_gcc: fix passing custom CG_RUSTFLAGS when building sysroot
codegen_gcc: implement more type kinds
cargo install: including Locking message
cargo resolver: add default Edition2024 to resolver v3
cargo resolver: add v3 resolver for MSRV-aware resolving
cargo credential: trim newlines in tokens from stdin
cargo msrv: error, rather than panic, on rust-version 'x'
cargo msrv: put MSRV-aware resolver behind a config
cargo toml: don't crash on parse errors that point to multi-byte character
cargo toml: disallow source-less dependencies
cargo toml: error on [project] in Edition 2024
cargo toml: report _fied variants (e.g. dev_dependencies) as deprecated
cargo: fix 'cargo build' fails when list_files() with gix is triggered
rustdoc: always display stability version even if it's the same as the containing item
rustdoc: fix copy path button
rustdoc: support type '/' to search
rustdoc-search: fix description on aliases in results
rustdoc-search: single result for items with multiple paths
clippy: threadlocal_initializer_can_be_made_const will not trigger for unreachable initializers
clippy: arithmetic_side_effects fix false negative on +=
clippy: ptr_as_ptr: fix duplicate diagnostics
clippy: emit the needless_pass_by_ref_mut lint on self arguments as well
clippy: fix is_test_module_or_function
clippy: reduce single_char_pattern to only lint on ascii chars
clippy: rework interior mutability detection
clippy: the multiple_unsafe_ops_per_block test needs asm!
rust-analyzer: cargo script mvp
rust-analyzer: add convert From to TryFrom assist
rust-analyzer: allow rust files to be used linkedProjects
rust-analyzer: VFS should not walk circular symlinks
rust-analyzer: handle escaped chars in doc comments
rust-analyzer: replace Just the variable name in Unused Variable Diagnostic Fix
rust-analyzer: implement BeginPanic handling in const eval
rust-analyzer: make test harness arguments configurable and not --nocapture
rust-analyzer: render matched macro arm on hover of macro calls
rust-analyzer: try to generate more meaningful names in json converter
Rust Compiler Performance Triage
A week dominated by small mixed changes to perf with improvements slightly outweighing regressions. There were no pure regressions, and many of the mixed perf results were deemed worth it for their potential improvements to runtime performance through further optimization from LLVM.
Triage done by @rylev. Revision range: ccfcd950..a77f76e2
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 0.4% [0.2%, 1.8%] 57 Regressions ❌ (secondary) 0.4% [0.2%, 1.9%] 26 Improvements ✅ (primary) -0.8% [-3.4%, -0.2%] 50 Improvements ✅ (secondary) -0.6% [-1.9%, -0.1%] 32 All ❌✅ (primary) -0.2% [-3.4%, 1.8%] 107
0 Regressions, 5 Improvements, 6 Mixed; 2 of them in rollups 62 artifact comparisons made in total
Full report here
Call for Testing
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 calls for testing were issued this week.
RFCs
Rust
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.
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
[disposition: merge] experimental project goal program for 2024 H2
Tracking Issues & PRs
Rust
[disposition: merge] Tracking Issue for std::path::absolute
[disposition: merge] Tracking Issue for convenience methods on NonNull
[disposition: merge] Inline more svg images into CSS
[disposition: merge] Edition 2024: Make ! fall back to !
[disposition: merge] static_mut_refs: Should the lint cover hidden references?
Cargo
[disposition: merge] fix(toml): Warn, rather than fail publish, if a target is excluded
New and Updated RFCs
[new] experimental project goal program for 2024 H2
Upcoming Events
Rusty Events between 2024-04-24 - 2024-05-22 🦀
Virtual
2024-04-24 | Virtual + In Person (Prague, CZ) | Rust Czech Republic
#2: Making Safe Rust Safer (Pavel Šimerda)
2024-04-25 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-01 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 5 - Project Structure
2024-05-01 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-05-02 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-05-07 | Virtual (Buffalo, NY) | Buffalo Rust Meetup
Buffalo Rust User Group
2024-05-09 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-05-09 | Virtual (Israel) | Rust in Israel
Rust at Microsoft, Tel Aviv - Are we embedded yet?
2024-05-09 | Virtual (Nuremberg/Nürnberg, DE) | Rust Nuremberg
Rust Nürnberg online
2024-05-14 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-05-14 | Virtual (Halifax, NS, CA) | Rust Halifax
Rust&Tell - Halifax
2024-05-14 | Virtual + In-Person (München/Munich, DE) | Rust Munich
Rust Munich 2024 / 1 - hybrid (Rescheduled)
2024-05-15 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-05-16 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-05-21 | Virtual (Washington, DC, US) | Rust DC
Mid-month Rustful—forensic parsing via Artemis
Africa
2024-05-04 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-05-11 | Bangalore, IN | Rust Bangalore
May 2024 Rustacean meetup
Europe
2024-04-24 | Virtual + In Person (Prague, CZ) | Rust Czech Republic
#2: Making Safe Rust Safer (Pavel Šimerda)
2024-04-25 | Aarhus, DK | Rust Aarhus
Talk Night at MFT Energy
2024-04-25 | Berlin, DE | Rust Berlin
Rust and Tell - TBD
2024-04-25 | København/Copenhagen, DK | Copenhagen Rust Community
Rust meetup #46 sponsored by Nine A/S
2024-04-25 | Vienna, AT | Rust Vienna
Rust Vienna x Python User Group - April
2024-04-27 | Basel, CH | Rust Basel
Fullstack Rust - Workshop #2 (Register by 23 April)
2024-04-27 | Stockholm, SE | Stockholm Rust
Ferris' Fika Forum #2
2024-04-30 | Budapest, HU | Budapest Rust Meetup Group
Rust Meetup Budapest 2
2024-04-30 | Salzburg, AT | Rust Salzburg
[Rust Salzburg meetup]: 6:30pm - CCC Salzburg, 1. OG, ArgeKultur, Ulrike-Gschwandtner-Straße 5, 5020 Salzburg
2024-05-01 | Köln/Cologne, DE | Rust Cologne
This Month in Rust, May
2024-05-01 | Utrecht, NL | NL-RSE Community
NL-RSE RUST meetup
2024-05-06 | Delft, NL | GOSIM
GOSIM Europe 2024
2024-05-07 & 2024-05-08 | Delft, NL | RustNL
RustNL 2024
2024-05-08 | Cambridge, UK | Cambridge Rust Meetup
Monthly Rust Meetup
2024-05-09 | Gdańsk, PL | Rust Gdansk
Rust Gdansk Meetup #2
2024-05-14 | Virtual + In-Person (München/Munich, DE) | Rust Munich
Rust Munich 2024 / 1 - hybrid (Rescheduled)
2024-05-14 | Prague, CZ | Rust Prague
Rust Meetup Prague (May 2024)
2024-05-21 | Aarhus, DK | Rust Aarhus
Hack Night
2024-05-21 | Zurich, CH | Rust Zurich
Save the date - Mai Meetup
North America
2024-04-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-04-25 | Nashville, TN, US | Music City Rust Developers
Music City Rust Developers - Async Rust on Embedded
2024-04-26 | Boston, MA, US | Boston Rust Meetup
North End Rust Lunch, Apr 26
2024-05-04 | Cambridge, MA, US | Boston Rust Meetup
Kendall Rust Lunch, May 4
2024-05-09 | Spokane, WA, US | Spokane Rust
Monthly Meetup: Topic TBD!
2024-05-12 | Brookline, MA, US | Boston Rust Meetup
Coolidge Corner Brookline Rust Lunch, May 12
2024-05-16 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-05-20 | Somerville, MA, US | Boston Rust Meetup
Ball Square Rust Lunch, May 20
2024-05-21 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-05-22 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
Oceania
2024-04-30 | Auckland, NZ | Rust AKL
Rust AKL: Why Rust? Convince Me!
2024-04-30 | Canberra, ACT, AU | Canberra Rust User Group
CRUG April Meetup: Generics and Traits
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
The learning curve for Rust is relatively steep compared to other languages, but once you climb it you'll never look down.
– BD103 on Mastodon
Thanks to BD103 for the self-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
2 notes · View notes
this-week-in-rust · 11 days
Text
This Week in Rust 543
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.
Updates from Rust Community
Rust Nation UK
Tim McNamara - 4 levels of error handling
Mithun Hunsur - Ambient: A Rust and WebAssembly Runtime for Cross-Platform Multiplayer Games
Alice Ryhl - What it takes to keep Tokio running
Chris Biscardi - Bevy: A case study in ergonomic Rust
Pietro Albini - How Ferrocene qualified the Rust Compiler
Ben Wishovich - Full Stack Rust - Building Rust Websites with Leptos
Natalie Serebryakova - Rustic Persistence: Automating PVC Lifecycles with Rust in Kubernetes
Daniel McKenna - Creating a Text-To-Speech System in Rust
Konstantin Grechishchev - Java and Rust Integration
Heiko Seeberger - EventSourced – async_fn_in_trait in anger
Tim Janus - Let’s get interdisciplinary: Rust Design Patterns for Chemical Plants
Marco Ieni - How Rust makes open-source easier
Newsletters
New Meshes, New Examples, and Compute Shaders
Project/Tooling Updates
futures-concurrency v7.6.0: Portable Concurrent Async Iteration
Ratatui v0.26.2
Rust on Espressif chips
Introducing Dust DDS – A native Rust implementation of the Data Distribution Service (DDS) middleware
Announcing the first audited Rust implementation of CGGMP21, the state-of-the-art ECDSA threshold protocol
Nutype 0.4.2 - newtype with guarantees
venndb 0.2.1 - any filters
[ZH|EN] Announcing async-openai-wasm, and thoughts on wasmization and streams
Observations/Thoughts
Climbing a (binary) Tree - Noise On The Net
Why is there no realloc that takes the number of bytes to copy?
Some useful types for database-using Rust web apps
My logging recipe for server side Rust
Rust Walkthroughs
Getting started with SurrealDB using Docker and a Rust client
[video] developerlife.com - Rust testing deep dive with r3bl_terminal_async crate
Research
Rust Digger: 7.53% of crates have both ‘edition’ and 'rust-version’, 11.21% have neither
Miscellaneous
Iced Tutorial 0.12
[video] Infinite Pong in the Bevy Game Engine - Let’s Code!
[audio] Release-plz with Marco Ieni
Crate of the Week
This week’s crate is venndb, an append-only memory DB whose tables can be build via a derive macro.
Thanks to Glen De Cauwsemaecker for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
mirrord - medschool generated malformed JSON
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10
RustLab 2024 | Closes 2024-05-01 | Florence, Italy | Event date: 2024-11-09 - 2024-11-11
EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event date: 2024-10-10
Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19
Conf42 Rustlang 2024 | Closes 2024-07-22 | online | Event date: 2024-08-22
RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
430 pull requests were merged in the last week
add support for Arm64EC inline assembly (as unstable)
statx probe: ENOSYS might come from a faulty FUSE driver
account for trait/impl difference when suggesting changing argument from ref to mut ref
add REDUNDANT_LIFETIMES lint to detect lifetimes which are semantically redundant
add unsafe to two functions with safety invariants
add const generics support for pattern types
add support to intrinsics fallback body
async closure coroutine by move body MirPass refactoring
avoid a panic in set_output_capture in the default panic handler
be more specific when flagging imports as redundant due to the extern prelude
call lower_const_param instead of duplicating the code
call the panic hook for non-unwind panics in proc-macros
detect borrow checker errors where .clone() would be an appropriate user action
disable Ctrl-C handling on WASM
discard overflow obligations in impl_may_apply
do not add prolog for variadic naked functions
do not allocate for ZST ThinBox (attempt 2 using const_allocate)
don’t delay a bug if we suggest adding a semicolon to the RHS of an assign operator
don’t do coroutine-closure-specific upvar analysis if tainted by errors
don’t even parse an intrinsic unless the feature gate is enabled
don’t leak unnameable types in -> _ recover
don’t rely on upvars being assigned just because coroutine-closure kind is assigned
fix UB in LLVM FFI when passing zero or >1 bundle
fix invalid silencing of parsing error
fix various bugs in ty_kind_suggestion
generic associated consts: Check regions earlier when comparing impl with trait item def
improve diagnostic by suggesting to remove visibility qualifier
just use type_dependent_def_id to figure out what the method is for an expr
linker flavors next steps: linker features
linker: avoid some allocations in search directory iteration
linker: remove laziness and caching from native search directory walks
make PlaceRef and OperandValue::Ref share a common PlaceValue type
make the computation of coroutine_captures_by_ref_ty more sophisticated
only assert for child/parent projection compatibility AFTER checking that theyre coming from the same place
only collect mono items from reachable blocks
openBSD fix long socket addresses
panic on overflow in BorrowedCursor::advance
propagate temporary lifetime extension into if and match
provide suggestion to dereference closure tail if appropriate
refactor panic_unwind/seh.rs pointer use
remove From impls for unstable types that break inference
rework ptr-to-ref conversion suggestion for method calls
set target-abi module flag for RISC-V targets
skip unused_parens report for Paren(Path(..)) in macro
stop making any assumption about the projections applied to the upvars in the ByMoveBody pass
stop using HirId for fn-like parents since closures are not OwnerNodes
stop using PolyTraitRef for closure/coroutine predicates already instantiated w placeholders
store all args in the unsupported Command implementation
suppress let else suggestion for uninitialized refutable lets
tweak value suggestions in borrowck and hir_analysis
typeck: fix ? suggestion span
use fn ptr signature instead of {closure@..} in infer error
use suggest_impl_trait in return type suggestion on type error
miri: MIRI_REPLACE_LIBRS_IF_NOT_TEST: also apply to crates.io crates
miri: add some basic support for GetFullPathNameW
miri: fix error display for ’./miri run –dep’
miri: handle Miri sysroot entirely outside the Miri driver
miri: make split_simd_to_128bit_chunks take only one operand
miri on Windows: run .CRT$XLB linker section on thread-end
miri: windows: add basic support for FormatMessageW
stabilize –json unused-externs(-silent)
stabilize (const_)slice_ptr_len and (const_)slice_ptr_is_empty_nonnull
stabilize cstr_count_bytes
implement FromIterator for (impl Default + Extend, impl Default + Extend)
re-enable has_thread_local for i686-msvc
std::net: TcpListener shrinks the backlog argument to 32 for Haiku
show mode_t as octal in std::fs Debug impls
add A: 'static bound for Arc/Rc::pin_in
f16 and f128 step 4: basic library support
add a Debug impl and some basic functions to f16 and f128
specialize many implementations of Read::read_buf_exact
windows: set main thread name without re-encoding
cargo: make sure to also wrap the initial -vV invocation
cargo resolve: Respect ’–ignore-rust-version’
cargo resolve: Fallback to 'rustc -V’ for MSRV resolving
cargo fix: dont apply same suggestion twice
cargo package: Normalize paths in Cargo.toml
cargo test: don’t compress test registry crates
rustdoc: correctly handle inlining of doc hidden foreign items
rustdoc: check redundant explicit links with correct itemid
rustdoc: point at span in include_str!-ed md file
rustdoc: reduce per-page HTML overhead
clippy: module_name_repetition Recognize common prepositions
clippy: fix: incorrect suggestions when .then and .then_some is used
clippy: pin remark-lint-maximum-line-length version
clippy: turn duplicated_attributes into a late lint
clippy: use check_attributes in doc lints
rust-analyzer: add static and const highlighting token types
rust-analyzer: better inline preview for postfix completion
rust-analyzer: wrap/Unwrap cfg_attr
rust-analyzer: VFS should not confuse paths with source roots that have the same prefix
rust-analyzer: fix impl Trait<Self> causing stack overflows
rust-analyzer: fix inlay hint resolution being broken
rust-analyzer: fix: support auto-closing for triple backticks
rust-analyzer: run cargo test per workspace in the test explorer
Rust Compiler Performance Triage
A quiet week, with slightly more improvements than regressions. There were a few noise spikes, but other than that nothing too interesting.
Triage done by @Kobzol. Revision range: 86b603cd..ccfcd950b
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 0.5% [0.3%, 1.4%] 9 Regressions ❌ (secondary) 0.4% [0.2%, 1.1%] 20 Improvements ✅ (primary) -0.6% [-2.5%, -0.2%] 41 Improvements ✅ (secondary) -0.8% [-1.4%, -0.2%] 4 All ❌✅ (primary) -0.4% [-2.5%, 1.4%] 50
1 Regressions, 3 Improvements, 6 Mixed; 5 of them in rollups 62 artifact comparisons made in total
Full report here
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
[disposition: merge] Move the Crates.io Team under the Dev Tools team
[disposition: merge] Arbitrary self types v2
[disposition: merge] RFC: Syntax for embedding cargo-script manifests
[disposition: merge] rust-lang org GitHub access policy
Tracking Issues & PRs Rust
[disposition: merge] Enforce closure args + return type are WF
[disposition: merge] Tracking Issue for io_error_downcast
[disposition: merge] More DefineOpaqueTypes::Yes
[disposition: merge] Tracking Issue for std::path::absolute
[disposition: merge] Tracking Issue for utf8_chunks
[disposition: merge] restrict promotion of const fn calls
[disposition: merge] Fix trait solver overflow with non_local_definitions lint
[disposition: merge] Use fulfillment in method probe, not evaluation
[disposition: merge] rustdoc-search: single result for items with multiple paths
[disposition: merge] Ignore -C strip on MSVC
New and Updated RFCs
No New or Updated RFCs were created this week.
Upcoming Events
Rusty Events between 2024-04-17 - 2024-05-15 🦀
Virtual
2024-04-17 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Reflections on RustNation UK 2024
2024-04-17 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Camigo (Peter Kehl)
2024-04-18 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-21 | Virtual (Israel) | Rust in Israel
Using AstroNvim for Rust development (in Hebrew)
2024-04-23 | Trondheim, NO | Rust Trondheim
Show and Tell in April
2024-04-24 | Virtual + In Person (Prague, CZ) | Rust Czech Republic
#2: Making Safe Rust Safer (Pavel Šimerda)
2024-04-25 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-01 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 5 - Project Structure
2024-05-01 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-05-02 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-05-07 | Virtual (Buffalo, NY) | Buffalo Rust Meetup
Buffalo Rust User Group
2024-05-09 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-05-09 | Virtual (Israel) | Rust in Israel
Rust at Microsoft, Tel Aviv - Are we embedded yet?
2024-05-09 | Virtual (Nuremberg/Nürnberg, DE) | Rust Nuremberg
Rust Nürnberg online
2024-05-14| Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-14 | Virtual + In-Person (München/Munich, DE) | Rust Munich
Rust Munich 2024 / 1 - hybrid (Rescheduled)
2024-05-15 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
Africa
2024-05-04 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-04-20 | Kuala Lumpur, MY | GoLang Malaysia
Rust Talk & Workshop - Parallel Programming April 2024 | Event updates Telegram | Event group chat
2024-05-11 | Bangalore, IN | Rust Bangalore
May 2024 Rustacean meetup
Europe
2024-04-17 | Bergen, NO | Hubbel kodeklubb
Lær Rust med Conways Game of Life
2024-04-17 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #10
2024-04-17 | Ostrava, CZ | TechMeetup Ostrava
TechMeetup: RUST
2024-04-20 | Augsburg, DE | Augsburger Linux-Infotag 2024
Augsburger Linux-Infotag 2024: Workshop Einstieg in Embedded Rust mit dem Raspberry Pico WH
2024-04-23 | Berlin, DE | Rust Berlin
Rust'n'Tell - Rust for the Web
2024-04-23 | Paris, FR | Rust Paris
Paris Rust Meetup #67
2024-04-24 | Virtual + In Person (Prague, CZ) | Rust Czech Republic
#2: Making Safe Rust Safer (Pavel Šimerda)
2024-04-25 | Aarhus, DK | Rust Aarhus
Talk Night at MFT Energy
2024-04-25 | Berlin, DE | Rust Berlin
Rust and Tell - TBD
2024-04-25 | København/Copenhagen, DK | Copenhagen Rust Community
Rust meetup #46 sponsored by Nine A/S
2024-04-25 | Vienna, AT | Rust Vienna
Rust Vienna x Python User Group - April
2024-04-27 | Basel, CH | Rust Basel
Fullstack Rust - Workshop #2 (Register by 23 April)
2024-04-27 | Stockholm, SE | Stockholm Rust
Ferris’ Fika Forum #2
2024-04-30 | Budapest, HU | Budapest Rust Meetup Group
Rust Meetup Budapest 2
2024-04-30 | Salzburg, AT | Rust Salzburg
[Rust Salzburg meetup]: 6:30pm - CCC Salzburg, 1. OG, ArgeKultur, Ulrike-Gschwandtner-Straße 5, 5020 Salzburg
2024-05-01 | Utrecht, NL | NL-RSE Community
NL-RSE RUST meetup
2024-05-06 | Delft, NL | GOSIM
GOSIM Europe 2024
2024-05-07 & 2024-05-08 | Delft, NL | RustNL
RustNL 2024
2024-05-09 | Gdańsk, PL | Rust Gdansk
Rust Gdansk Meetup #2
2024-05-14 | Virtual + In-Person (München/Munich, DE) | Rust Munich
Rust Munich 2024 / 1 - hybrid (Rescheduled)
North America
2024-04-18 | Chicago, IL, US | Deep Dish Rust
Rust Talk: What Are Panics?
2024-04-18 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-04-25 | Nashville, TN, US | Music City Rust Developers
Music City Rust Developers - Async Rust on Embedded
2024-04-26 | Boston, MA, US | Boston Rust Meetup
North End Rust Lunch, Apr 26
2024-05-04 | Cambridge, MA, US | Boston Rust Meetup
Kendall Rust Lunch, May 4
2024-05-12 | Brookline, MA, US | Boston Rust Meetup
Coolidge Corner Brookline Rust Lunch, May 12
Oceania
2024-04-17 | Sydney, NSW, AU | Rust Sydney
WMaTIR 2024 Gala & Talks
2024-04-30 | Auckland, NZ | Rust AKL
Rust AKL: Why Rust? Convince Me!
2024-04-30 | Canberra, ACT, AU | Canberra Rust User Group
CRUG April Meetup: Generics and Traits
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
There is absolutely no way I can imagine that Option is causing that error. That’d be like turning on the “Hide Taskbar” setting causing your GPU to catch fire.
[…]
If it’s not any of those, consider an exorcist because your machine might be haunted.
– Daniel Keep on rust-users
Thanks to Hayden Brown 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
1 note · View note
this-week-in-rust · 12 days
Text
This Week in Rust 543
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.
Updates from Rust Community
Rust Nation UK
Tim McNamara - 4 levels of error handling
Mithun Hunsur - Ambient: A Rust and WebAssembly Runtime for Cross-Platform Multiplayer Games
Alice Ryhl - What it takes to keep Tokio running
Chris Biscardi - Bevy: A case study in ergonomic Rust
Pietro Albini - How Ferrocene qualified the Rust Compiler
Ben Wishovich - Full Stack Rust - Building Rust Websites with Leptos
Natalie Serebryakova - Rustic Persistence: Automating PVC Lifecycles with Rust in Kubernetes
Daniel McKenna - Creating a Text-To-Speech System in Rust
Konstantin Grechishchev - Java and Rust Integration
Heiko Seeberger - EventSourced – async_fn_in_trait in anger
Tim Janus - Let's get interdisciplinary: Rust Design Patterns for Chemical Plants
Marco Ieni - How Rust makes open-source easier
Newsletters
New Meshes, New Examples, and Compute Shaders
Project/Tooling Updates
futures-concurrency v7.6.0: Portable Concurrent Async Iteration
Ratatui v0.26.2
Rust on Espressif chips
Introducing Dust DDS – A native Rust implementation of the Data Distribution Service (DDS) middleware
Announcing the first audited Rust implementation of CGGMP21, the state-of-the-art ECDSA threshold protocol
Nutype 0.4.2 - newtype with guarantees
venndb 0.2.1 - any filters
[ZH|EN] Announcing async-openai-wasm, and thoughts on wasmization and streams
Observations/Thoughts
Climbing a (binary) Tree - Noise On The Net
Why is there no realloc that takes the number of bytes to copy?
Some useful types for database-using Rust web apps
My logging recipe for server side Rust
Rust Walkthroughs
Getting started with SurrealDB using Docker and a Rust client
[video] developerlife.com - Rust testing deep dive with r3bl_terminal_async crate
Research
Rust Digger: 7.53% of crates have both 'edition' and 'rust-version', 11.21% have neither
Miscellaneous
Iced Tutorial 0.12
[video] Infinite Pong in the Bevy Game Engine - Let's Code!
[audio] Release-plz with Marco Ieni
Crate of the Week
This week's crate is venndb, an append-only memory DB whose tables can be build via a derive macro.
Thanks to Glen De Cauwsemaecker for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
mirrord - medschool generated malformed JSON
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10
RustLab 2024 | Closes 2024-05-01 | Florence, Italy | Event date: 2024-11-09 - 2024-11-11
EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event date: 2024-10-10
Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19
Conf42 Rustlang 2024 | Closes 2024-07-22 | online | Event date: 2024-08-22
RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
430 pull requests were merged in the last week
add support for Arm64EC inline assembly (as unstable)
statx probe: ENOSYS might come from a faulty FUSE driver
account for trait/impl difference when suggesting changing argument from ref to mut ref
add REDUNDANT_LIFETIMES lint to detect lifetimes which are semantically redundant
add unsafe to two functions with safety invariants
add const generics support for pattern types
add support to intrinsics fallback body
async closure coroutine by move body MirPass refactoring
avoid a panic in set_output_capture in the default panic handler
be more specific when flagging imports as redundant due to the extern prelude
call lower_const_param instead of duplicating the code
call the panic hook for non-unwind panics in proc-macros
detect borrow checker errors where .clone() would be an appropriate user action
disable Ctrl-C handling on WASM
discard overflow obligations in impl_may_apply
do not add prolog for variadic naked functions
do not allocate for ZST ThinBox (attempt 2 using const_allocate)
don't delay a bug if we suggest adding a semicolon to the RHS of an assign operator
don't do coroutine-closure-specific upvar analysis if tainted by errors
don't even parse an intrinsic unless the feature gate is enabled
don't leak unnameable types in -> _ recover
don't rely on upvars being assigned just because coroutine-closure kind is assigned
fix UB in LLVM FFI when passing zero or >1 bundle
fix invalid silencing of parsing error
fix various bugs in ty_kind_suggestion
generic associated consts: Check regions earlier when comparing impl with trait item def
improve diagnostic by suggesting to remove visibility qualifier
just use type_dependent_def_id to figure out what the method is for an expr
linker flavors next steps: linker features
linker: avoid some allocations in search directory iteration
linker: remove laziness and caching from native search directory walks
make PlaceRef and OperandValue::Ref share a common PlaceValue type
make the computation of coroutine_captures_by_ref_ty more sophisticated
only assert for child/parent projection compatibility AFTER checking that theyre coming from the same place
only collect mono items from reachable blocks
openBSD fix long socket addresses
panic on overflow in BorrowedCursor::advance
propagate temporary lifetime extension into if and match
provide suggestion to dereference closure tail if appropriate
refactor panic_unwind/seh.rs pointer use
remove From impls for unstable types that break inference
rework ptr-to-ref conversion suggestion for method calls
set target-abi module flag for RISC-V targets
skip unused_parens report for Paren(Path(..)) in macro
stop making any assumption about the projections applied to the upvars in the ByMoveBody pass
stop using HirId for fn-like parents since closures are not OwnerNodes
stop using PolyTraitRef for closure/coroutine predicates already instantiated w placeholders
store all args in the unsupported Command implementation
suppress let else suggestion for uninitialized refutable lets
tweak value suggestions in borrowck and hir_analysis
typeck: fix ? suggestion span
use fn ptr signature instead of {closure@..} in infer error
use suggest_impl_trait in return type suggestion on type error
miri: MIRI_REPLACE_LIBRS_IF_NOT_TEST: also apply to crates.io crates
miri: add some basic support for GetFullPathNameW
miri: fix error display for './miri run --dep'
miri: handle Miri sysroot entirely outside the Miri driver
miri: make split_simd_to_128bit_chunks take only one operand
miri on Windows: run .CRT$XLB linker section on thread-end
miri: windows: add basic support for FormatMessageW
stabilize --json unused-externs(-silent)
stabilize (const_)slice_ptr_len and (const_)slice_ptr_is_empty_nonnull
stabilize cstr_count_bytes
implement FromIterator for (impl Default + Extend, impl Default + Extend)
re-enable has_thread_local for i686-msvc
std::net: TcpListener shrinks the backlog argument to 32 for Haiku
show mode_t as octal in std::fs Debug impls
add A: 'static bound for Arc/Rc::pin_in
f16 and f128 step 4: basic library support
add a Debug impl and some basic functions to f16 and f128
specialize many implementations of Read::read_buf_exact
windows: set main thread name without re-encoding
cargo: make sure to also wrap the initial -vV invocation
cargo resolve: Respect '--ignore-rust-version'
cargo resolve: Fallback to 'rustc -V' for MSRV resolving
cargo fix: dont apply same suggestion twice
cargo package: Normalize paths in Cargo.toml
cargo test: don't compress test registry crates
rustdoc: correctly handle inlining of doc hidden foreign items
rustdoc: check redundant explicit links with correct itemid
rustdoc: point at span in include_str!-ed md file
rustdoc: reduce per-page HTML overhead
clippy: module_name_repetition Recognize common prepositions
clippy: fix: incorrect suggestions when .then and .then_some is used
clippy: pin remark-lint-maximum-line-length version
clippy: turn duplicated_attributes into a late lint
clippy: use check_attributes in doc lints
rust-analyzer: add static and const highlighting token types
rust-analyzer: better inline preview for postfix completion
rust-analyzer: wrap/Unwrap cfg_attr
rust-analyzer: VFS should not confuse paths with source roots that have the same prefix
rust-analyzer: fix impl Trait<Self> causing stack overflows
rust-analyzer: fix inlay hint resolution being broken
rust-analyzer: fix: support auto-closing for triple backticks
rust-analyzer: run cargo test per workspace in the test explorer
Rust Compiler Performance Triage
A quiet week, with slightly more improvements than regressions. There were a few noise spikes, but other than that nothing too interesting.
Triage done by @Kobzol. Revision range: 86b603cd..ccfcd950b
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 0.5% [0.3%, 1.4%] 9 Regressions ❌ (secondary) 0.4% [0.2%, 1.1%] 20 Improvements ✅ (primary) -0.6% [-2.5%, -0.2%] 41 Improvements ✅ (secondary) -0.8% [-1.4%, -0.2%] 4 All ❌✅ (primary) -0.4% [-2.5%, 1.4%] 50
1 Regressions, 3 Improvements, 6 Mixed; 5 of them in rollups 62 artifact comparisons made in total
Full report here
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
[disposition: merge] Move the Crates.io Team under the Dev Tools team
[disposition: merge] Arbitrary self types v2
[disposition: merge] RFC: Syntax for embedding cargo-script manifests
[disposition: merge] rust-lang org GitHub access policy
Tracking Issues & PRs
Rust
[disposition: merge] Enforce closure args + return type are WF
[disposition: merge] Tracking Issue for io_error_downcast
[disposition: merge] More DefineOpaqueTypes::Yes
[disposition: merge] Tracking Issue for std::path::absolute
[disposition: merge] Tracking Issue for utf8_chunks
[disposition: merge] restrict promotion of const fn calls
[disposition: merge] Fix trait solver overflow with non_local_definitions lint
[disposition: merge] Use fulfillment in method probe, not evaluation
[disposition: merge] rustdoc-search: single result for items with multiple paths
[disposition: merge] Ignore -C strip on MSVC
New and Updated RFCs
No New or Updated RFCs were created this week.
Upcoming Events
Rusty Events between 2024-04-17 - 2024-05-15 🦀
Virtual
2024-04-17 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Reflections on RustNation UK 2024
2024-04-17 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Camigo (Peter Kehl)
2024-04-18 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-21 | Virtual (Israel) | Rust in Israel
Using AstroNvim for Rust development (in Hebrew)
2024-04-23 | Trondheim, NO | Rust Trondheim
Show and Tell in April
2024-04-24 | Virtual + In Person (Prague, CZ) | Rust Czech Republic
#2: Making Safe Rust Safer (Pavel Šimerda)
2024-04-25 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-01 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 5 - Project Structure
2024-05-01 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-05-02 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-05-07 | Virtual (Buffalo, NY) | Buffalo Rust Meetup
Buffalo Rust User Group
2024-05-09 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-05-09 | Virtual (Israel) | Rust in Israel
Rust at Microsoft, Tel Aviv - Are we embedded yet?
2024-05-09 | Virtual (Nuremberg/Nürnberg, DE) | Rust Nuremberg
Rust Nürnberg online
2024-05-14| Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-14 | Virtual + In-Person (München/Munich, DE) | Rust Munich
Rust Munich 2024 / 1 - hybrid (Rescheduled)
2024-05-15 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
Africa
2024-05-04 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-04-20 | Kuala Lumpur, MY | GoLang Malaysia
Rust Talk & Workshop - Parallel Programming April 2024 | Event updates Telegram | Event group chat
2024-05-11 | Bangalore, IN | Rust Bangalore
May 2024 Rustacean meetup
Europe
2024-04-17 | Bergen, NO | Hubbel kodeklubb
Lær Rust med Conways Game of Life
2024-04-17 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #10
2024-04-17 | Ostrava, CZ | TechMeetup Ostrava
TechMeetup: RUST
2024-04-20 | Augsburg, DE | Augsburger Linux-Infotag 2024
Augsburger Linux-Infotag 2024: Workshop Einstieg in Embedded Rust mit dem Raspberry Pico WH
2024-04-23 | Berlin, DE | Rust Berlin
Rust'n'Tell - Rust for the Web
2024-04-23 | Paris, FR | Rust Paris
Paris Rust Meetup #67
2024-04-24 | Virtual + In Person (Prague, CZ) | Rust Czech Republic
#2: Making Safe Rust Safer (Pavel Šimerda)
2024-04-25 | Aarhus, DK | Rust Aarhus
Talk Night at MFT Energy
2024-04-25 | Berlin, DE | Rust Berlin
Rust and Tell - TBD
2024-04-25 | København/Copenhagen, DK | Copenhagen Rust Community
Rust meetup #46 sponsored by Nine A/S
2024-04-25 | Vienna, AT | Rust Vienna
Rust Vienna x Python User Group - April
2024-04-27 | Basel, CH | Rust Basel
Fullstack Rust - Workshop #2 (Register by 23 April)
2024-04-27 | Stockholm, SE | Stockholm Rust
Ferris' Fika Forum #2
2024-04-30 | Budapest, HU | Budapest Rust Meetup Group
Rust Meetup Budapest 2
2024-04-30 | Salzburg, AT | Rust Salzburg
[Rust Salzburg meetup]: 6:30pm - CCC Salzburg, 1. OG, ArgeKultur, Ulrike-Gschwandtner-Straße 5, 5020 Salzburg
2024-05-01 | Utrecht, NL | NL-RSE Community
NL-RSE RUST meetup
2024-05-06 | Delft, NL | GOSIM
GOSIM Europe 2024
2024-05-07 & 2024-05-08 | Delft, NL | RustNL
RustNL 2024
2024-05-09 | Gdańsk, PL | Rust Gdansk
Rust Gdansk Meetup #2
2024-05-14 | Virtual + In-Person (München/Munich, DE) | Rust Munich
Rust Munich 2024 / 1 - hybrid (Rescheduled)
North America
2024-04-18 | Chicago, IL, US | Deep Dish Rust
Rust Talk: What Are Panics?
2024-04-18 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-04-25 | Nashville, TN, US | Music City Rust Developers
Music City Rust Developers - Async Rust on Embedded
2024-04-26 | Boston, MA, US | Boston Rust Meetup
North End Rust Lunch, Apr 26
2024-05-04 | Cambridge, MA, US | Boston Rust Meetup
Kendall Rust Lunch, May 4
2024-05-12 | Brookline, MA, US | Boston Rust Meetup
Coolidge Corner Brookline Rust Lunch, May 12
Oceania
2024-04-17 | Sydney, NSW, AU | Rust Sydney
WMaTIR 2024 Gala & Talks
2024-04-30 | Auckland, NZ | Rust AKL
Rust AKL: Why Rust? Convince Me!
2024-04-30 | Canberra, ACT, AU | Canberra Rust User Group
CRUG April Meetup: Generics and Traits
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
There is absolutely no way I can imagine that Option is causing that error. That'd be like turning on the "Hide Taskbar" setting causing your GPU to catch fire.
[...]
If it's not any of those, consider an exorcist because your machine might be haunted.
– Daniel Keep on rust-users
Thanks to Hayden Brown 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
1 note · View note
this-week-in-rust · 18 days
Text
This Week in Rust 542
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.
Updates from Rust Community
Official
Announcing Rust 1.77.2
Security advisory for the standard library (CVE-2024-24576)
Changes to Rust’s WASI targets
Rust Nation UK
Hannah Aubrey - A Web of Rust: The Future of the Internet Depends on Trust
JD Nose - Rust Infrastructure: What it takes to keep Rust running
Amanieu D'Antras - The path to a stable ABI for Rust
Luca Palmieri - Pavex: re-imaging API development in Rust
Lachezar Lechev - Typed for Safety
Marco Concetto Rudilosso - Building a profiler for web assembly
Jon Gjengset - Towards Impeccable Rust
Nicholas Yang - Porting Turborepo From Go To Rust
David Haig - What’s that behind your ear? An open source hearing aid in Rust.
Frédéric Ameye - Renault want to sell cars with rust!
Nikita Lapkov - Type-safe and fault-tolerant mesh services with Rust
Andre Bogus - Easy Mode Rust
Lars Bergstrom - Beyond Safety and Speed: How Rust Fuels Team Productivity
Tim McNamara - Unwrapping unsafe
Nicholas Matsakis - Rust 2024 and beyond
Project/Tooling Updates
Shipping Jco 1.0, WASI 0.2
This month in Pavex, #10
“Containerize” individual functions in Rust with extrasafe
rust-analyzer changelog #228
Rerun 0.15.0 - Blueprints from Python · rerun-io/rerun
Bevy 0.13.2, Curves, Gizmos, and Games
What’s new in SeaORM 1.0-rc.x
Observations/Thoughts
Improve performance of you Rust functions by const currying
Ownership in Rust
Thoughts on the xz backdoor: an lzma-rs perspective
hyper HTTP/2 Continuation Flood
Leaky Abstractions and a Rusty Pin
[audio] Launching RustRover: JetBrains’ Investment in Rust
[audio] Pavex with Luca Palmieri
[video] Decrusting the tokio crate
[video] Rust 1.77.0: 70 highlights in 30 minutes
[video] Simulate the three body problem in #rustlang
[video] Exploring Fiberplane’s 3-Year Rust Journey - with Benno van den Berg
Rust Walkthroughs
Working with OpenAPI using Rust
Zed Decoded: Async Rust
Writing a Unix-like OS in Rust
Fivefold Slower Compared to Go? Optimizing Rust’s Protobuf Decoding Performance
Write Cleaner, More Maintainable Rust Code with PhantomData
[video] Extreme Clippy for an existing Rust Crate
[video] developerlife.com - Build a color gradient animation for a spinner component, for CLI, in Rust
[video] developerlife.com - Build a spinner component, for CLI, in Rust
[video] developerlife.com - Build an async readline, and spinner in Rust, for interactive CLI
Research
“Against the Void”: An Interview and Survey Study on How Rust Developers Use Unsafe Code
Sound Borrow-Checking for Rust via Symbolic Semantics
Miscellaneous
Rust indexed - Rust mdbooks search
March 2024 Rust Jobs Report
Rust Meetup and user groups (updated)
Embedding the Servo Web Engine in Qt
A memory model for Rust code in the kernel
Building Stock Market Engine from scratch in Rust (II)
Ratatui Received Funding: What’s Next?
Crate of the Week
This week’s crate is archspec-rs, a library to track system architecture aspects.
Thanks to Orhun Parmaksız for the suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
431 pull requests were merged in the last week
CFI: change type transformation to use TypeFolder
CFI: fix ICE in KCFI non-associated function pointers
CFI: restore typeid_for_instance default behavior
CFI: support function pointers for trait methods
CFI: support non-general coroutines
MSVC targets should use COFF as their archive format
actually use the inferred ClosureKind from signature inference in coroutine-closures
add Ord::cmp for primitives as a BinOp in MIR
add a debug asserts call to match_projection_projections to ensure invariant
add aarch64-apple-visionos and aarch64-apple-visionos-sim tier 3 targets
add consistency with phrases “meantime” and “mean time”
assert FnDef kind
assert that args are actually compatible with their generics, rather than just their count
avoid ICEing without the pattern_types feature gate
avoid expanding to unstable internal method
avoid panicking unnecessarily on startup
better reporting on generic argument mismatchs
cleanup: rename HAS_PROJECTIONS to HAS_ALIASES etc
do not ICE in fn forced_ambiguity if we get an error
do not ICE on field access check on expr with ty::Error
do not ICE when calling incorrectly defined transmute intrinsic
fix ByMove coroutine-closure shim (for 2021 precise closure capturing behavior)
fix capture analysis for by-move closure bodies
fix diagnostic for qualifier in extern block
hir: use ItemLocalId::ZERO in a couple more places
impl get_mut_or_init and get_mut_or_try_init for OnceCell and OnceLock
implement T-types suggested logic for perfect non-local impl detection
implement minimal, internal-only pattern types in the type system
instantiate higher ranked goals outside of candidate selection
link against libc++abi and libunwind as well when building LLVM wrappers on AIX
make inductive cycles always ambiguous
make sure to insert Sized bound first into clauses list
match ergonomics: implement “&pat everywhere”
match lowering: make false edges more precise
more postfix match fixes
move check for error in impl header outside of reporting
only allow compiler_builtins to call LLVM intrinsics, not any link_name function
only inspect user-written predicates for privacy concerns
pass list of defineable opaque types into canonical queries
pattern analysis: fix union handling
postfix match fixes
privacy: stabilize lint unnameable_types
put checks that detect UB under their own flag below debug_assertions
revert removing miri jobserver workaround
safe Transmute: Compute transmutability from rustc_target::abi::Layout
sanitizers: create the rustc_sanitizers crate
split hir ty lowerer’s error reporting code in check functions to mod errors
teach MIR inliner query cycle avoidance about const_eval_select
transforms match into an assignment statement
use the more informative generic type inference failure error on method calls on raw pointers
add missing ?Sized bounds for HasInterner impls
introduce Lifetime::Error
perf: cache type info for ParamEnv
encode dep graph edges directly from the previous graph when promoting
remove debuginfo from rustc-demangle too
stabilize const_caller_location and const_location_fields
stabilize proc_macro_byte_character and proc_macro_c_str_literals
stabilize const Atomic*::into_inner
de-LLVM the unchecked shifts
rename expose_addr to expose_provenance
rename ptr::from_exposed_addr → ptr::with_exposed_provenance
remove rt::init allocation for thread name
use unchecked_sub in str indexing
don’t emit divide-by-zero panic paths in StepBy::len
add fn const BuildHasherDefault::new
add invariant to VecDeque::pop_* that len < cap if pop successful
add Context::ext
provide cabi_realloc on wasm32-wasip2 by default
vendor rustc_codegen_gcc
cargo: Build script not rerun when target rustflags change
cargo add: Stabilize MSRV-aware version req selection
cargo toml: Decouple target discovery from Target creation
cargo toml: Split out an explicit step to resolve Cargo.toml
cargo metadata: Show behavior with TOML-specific types
cargo: don’t depend on ? affecting type inference in weird ways
cargo: fix github fast path redirect
cargo: maintain sorting of dependency features
cargo: switch to using gitoxide by default for listing files
rustdoc-search: shard the search result descriptions
rustdoc: default to light theme if JS is enabled but not working
rustdoc: heavily simplify the synthesis of auto trait impls
rustdoc: synthetic auto trait impls: accept unresolved region vars for now
clippy: manual_swap auto fix
clippy: manual_unwrap_or_default: check for Default trait implementation in initial condition when linting and use IfLetOrMatch
clippy: allow cast lints in macros
clippy: avoid an ICE in ptr_as_ptr when getting the def_id of a local
clippy: correct parentheses for needless_borrow suggestion
clippy: do not suggest assigning_clones in Clone impl
clippy: fix ice reporting in lintcheck
clippy: fix incorrect suggestion for !(a as type >= b)
clippy: reword arc_with_non_send_sync note and help messages
clippy: type certainty: clear DefId when an expression’s type changes to non-adt
rust-analyzer: apply cargo flags in test explorer
rust-analyzer: fix off-by-one error converting to LSP UTF8 offsets with multi-byte char
rust-analyzer: consider exported_name="main" functions in test modules as tests
rust-analyzer: fix patch_cfg_if not applying with stitched sysroot
rust-analyzer: set the right postfix snippets competion source range
Rust Compiler Performance Triage
A quiet week; all the outright regressions were already triaged (the one biggish one was #122077, which is justified as an important bug fix). There was a very nice set of improvements from PR #122070, which cleverly avoids a lot of unnecessary allocator calls when building an incremental dep graph by reusing the old edges from the previous graph.
Triage done by @pnkfelix. Revision range: 3d5528c2..86b603cd
3 Regressions, 3 Improvements, 7 Mixed; 1 of them in rollups 78 artifact comparisons made in total
See full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
Merge RFC 3513: Add gen blocks
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
[disposition: merge] RFC: Drop temporaries in tail expressions before local variables
[disposition: merge] RFC: Reserve unprefixed guarded string literals in Edition 2024
Tracking Issues & PRs Rust
[disposition: merge] Always display stability version even if it’s the same as the containing item
[disposition: merge] Tracking Issue for cstr_count_bytes
[disposition: merge] rustdoc-search: single result for items with multiple paths
[disposition: merge] Tracking Issue for #![feature(const_io_structs)]
[disposition: merge] Tracking Issue for alloc::collections::BinaryHeap::as_slice
[disposition: merge] Tracking Issue for fs_try_exists
[disposition: merge] stabilize -Znext-solver=coherence
[disposition: merge] Document overrides of clone_from() in core/std
[disposition: merge] Stabilise inline_const
[disposition: merge] Tracking Issue for RFC 3013: Checking conditional compilation at compile time
[disposition: merge] sess: stabilize -Zrelro-level as -Crelro-level
[disposition: merge] Implement FromIterator for (impl Default + Extend, impl Default + Extend)
[disposition: close] Return the delimiter from slice::split_once
[disposition: merge] Support type ’/’ to search
[disposition: merge] Tracking Issue for Seek::seek_relative
[disposition: merge] Tracking Issue for generic NonZero
New and Updated RFCs
[new] Add an expression for direct access to an enum’s discriminant
[new] RFC: Drop temporaries in tail expressions before local variables
Upcoming Events
Rusty Events between 2024-04-10 - 2024-05-08 🦀
Virtual
2024-04-11 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-11 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-04-11 | Virtual (San Diego, CA, US) | San Diego Rust
San Diego Rust April 2024 Tele-Meetup
2024-04-15 & 2024-04-16 | Virtual | Mainmatter
Remote Workshop: Testing for Rust projects – going beyond the basics
2024-04-16 | Virtual (Dublin, IE) | Rust Dublin
A reverse proxy with Tower and Hyperv1
2024-04-16 | Virtual (Washington, DC, US) | Rust DC
Mid-month Rustful—forensic parsing via Artemis
2024-04-17 | Virtual | Rust for Lunch
April 2024 Rust for Lunch
2024-04-17 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Reflections on RustNation UK 2024
2024-04-17 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-04-18 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-21 | Virtual (Israel) | Rust in Israel
Using AstroNvim for Rust development (in Hebrew)
2024-04-25 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-01 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 5 - Project Structure
2024-05-01 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-05-02 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-05-07 | Virtual (Buffalo, NY) | Buffalo Rust Meetup
Buffalo Rust User Group
Africa
2024-05-04 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-04-16 | Tokyo, JP | Tokyo Rust Meetup
The Good, the Bad, and the Async (RSVP by 15 Apr)
Europe
2024-04-10 | Cambridge, UK | Cambridge Rust Meetup
Rust Meetup Reboot 3
2024-04-10 | Cologne/Köln, DE | Rust Cologne
This Month in Rust, April
2024-04-10 | Manchester, UK | Rust Manchester
Rust Manchester April 2024
2024-04-10 | Oslo, NO | Rust Oslo
Rust Hack'n'Learn at Kampen Bistro
2024-04-11 | Bordeaux, FR | Rust Bordeaux
Rust Bordeaux #2 : Présentations
2024-04-11 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-04-15 | Zagreb, HR | impl Zagreb for Rust
Rust Meetup 2024/04: Building cargo projects with NIX
2024-04-16 | Bratislava, SK | Bratislava Rust Meetup Group
Rust Meetup by Sonalake #5
2024-04-16 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
winnow/nom
2024-04-16 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-04-17 | Bergen, NO | Hubbel kodeklubb
Lær Rust med Conways Game of Life
2024-04-17 | Ostrava, CZ | TechMeetup Ostrava
TechMeetup: RUST
2024-04-20 | Augsburg, DE | Augsburger Linux-Infotag 2024
Augsburger Linux-Infotag 2024: Workshop Einstieg in Embedded Rust mit dem Raspberry Pico WH
2024-04-23 | Berlin, DE | Rust Berlin
Rust'n'Tell - Rust for the Web
2024-04-23 | Paris, FR | Rust Paris
Paris Rust Meetup #67
2024-04-25 | Aarhus, DK | Rust Aarhus
Talk Night at MFT Energy
2024-04-23 | Berlin, DE | Rust Berlin
Rust'n'Tell - Rust for the Web
2024-04-25 | Berlin, DE | Rust Berlin
Rust and Tell - TBD
2024-04-27 | Basel, CH | Rust Basel
Fullstack Rust - Workshop #2 (Register by 23 April)
2024-04-30 | Budapest, HU | Budapest Rust Meetup Group
Rust Meetup Budapest 2
2024-04-30 | Salzburg, AT | Rust Salzburg
[Rust Salzburg meetup]: 6:30pm - CCC Salzburg, 1. OG, ArgeKultur, Ulrike-Gschwandtner-Straße 5, 5020 Salzburg
2024-05-01 | Utrecht, NL | NL-RSE Community
NL-RSE RUST meetup
2024-05-06 | Delft, NL | GOSIM
GOSIM Europe 2024
2024-05-07 & 2024-05-08 | Delft, NL | RustNL
RustNL 2024
North America
2024-04-10 | Boulder, CO, US | Boulder Rust Meetup
Rust Meetup: Better Builds w/ Flox + Hangs
2024-04-11 | Lehi, UT, US | Utah Rust
Interactive Storytelling using Yarn Spinner with Rex Magana
2024-04-11 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-04-11 | Spokane, WA, US | Spohttps://www.meetup.com/minneapolis-rust-meetup/kane Rust
Monthly Meetup: The Rust Full-Stack Experience
2024-04-15 | Minneapolis, MN, US | Minneapolish Rust Meetup
Minneapolis Rust: Getting started with Rust! #2
2024-04-15 | Somerville, MA, US | Boston Rust Meetup
Davis Square Rust Lunch, Apr 15
2024-04-16 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-04-16 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group: Meet Servo and Robius Open Source Projects
2024-04-18 | Chicago, IL, US | Deep Dish Rust
Rust Talk: What Are Panics?
2024-04-18 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-04-25 | Nashville, TN, US | Music City Rust Developers
Music City Rust Developers - Async Rust on Embedded
2024-04-26 | Boston, MA, US | Boston Rust Meetup
North End Rust Lunch, Apr 26
Oceania
2024-04-15 | Melbourne, VIC, AU | Rust Melbourne
April 2024 Rust Melbourne Meetup
2024-04-17 | Sydney, NSW, AU | Rust Sydney
WMaTIR 2024 Gala & Talks
2024-04-30 | Auckland, NZ | Rust AKL
Rust AKL: Why Rust? Convince Me!
2024-04-30 | Canberra, ACT, AU | Canberra Rust User Group
CRUG April Meetup: Generics and Traits
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
As a former JavaScript plebeian who has only been semi-recently illuminated by the suspiciously pastel pink, white and blue radiance of Rust developers, NOT having to sit in my web console debugger for hours pushing some lovingly crafted [object Object] or undefined is a blessing.
– Julien Robert rage-blogging against bevy
Thanks to scottmcm 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
1 note · View note
this-week-in-rust · 19 days
Text
This Week in Rust 542
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.
Updates from Rust Community
Official
Announcing Rust 1.77.2
Security advisory for the standard library (CVE-2024-24576)
Changes to Rust's WASI targets
Rust Nation UK
Hannah Aubrey - A Web of Rust: The Future of the Internet Depends on Trust
JD Nose - Rust Infrastructure: What it takes to keep Rust running
Amanieu D'Antras - The path to a stable ABI for Rust
Luca Palmieri - Pavex: re-imaging API development in Rust
Lachezar Lechev - Typed for Safety
Marco Concetto Rudilosso - Building a profiler for web assembly
Jon Gjengset - Towards Impeccable Rust
Nicholas Yang - Porting Turborepo From Go To Rust
David Haig - What’s that behind your ear? An open source hearing aid in Rust.
Frédéric Ameye - Renault want to sell cars with rust!
Nikita Lapkov - Type-safe and fault-tolerant mesh services with Rust
Andre Bogus - Easy Mode Rust
Lars Bergstrom - Beyond Safety and Speed: How Rust Fuels Team Productivity
Tim McNamara - Unwrapping unsafe
Nicholas Matsakis - Rust 2024 and beyond
Project/Tooling Updates
Shipping Jco 1.0, WASI 0.2
This month in Pavex, #10
"Containerize" individual functions in Rust with extrasafe
rust-analyzer changelog #228
Rerun 0.15.0 - Blueprints from Python · rerun-io/rerun
Bevy 0.13.2, Curves, Gizmos, and Games
What's new in SeaORM 1.0-rc.x
Observations/Thoughts
Improve performance of you Rust functions by const currying
Ownership in Rust
Thoughts on the xz backdoor: an lzma-rs perspective
hyper HTTP/2 Continuation Flood
Leaky Abstractions and a Rusty Pin
[audio] Launching RustRover: JetBrains' Investment in Rust
[audio] Pavex with Luca Palmieri
[video] Decrusting the tokio crate
[video] Rust 1.77.0: 70 highlights in 30 minutes
[video] Simulate the three body problem in #rustlang
[video] Exploring Fiberplane's 3-Year Rust Journey - with Benno van den Berg
Rust Walkthroughs
Working with OpenAPI using Rust
Zed Decoded: Async Rust
Writing a Unix-like OS in Rust
Fivefold Slower Compared to Go? Optimizing Rust's Protobuf Decoding Performance
Write Cleaner, More Maintainable Rust Code with PhantomData
[video] Extreme Clippy for an existing Rust Crate
[video] developerlife.com - Build a color gradient animation for a spinner component, for CLI, in Rust
[video] developerlife.com - Build a spinner component, for CLI, in Rust
[video] developerlife.com - Build an async readline, and spinner in Rust, for interactive CLI
Research
"Against the Void": An Interview and Survey Study on How Rust Developers Use Unsafe Code
Sound Borrow-Checking for Rust via Symbolic Semantics
Miscellaneous
Rust indexed - Rust mdbooks search
March 2024 Rust Jobs Report
Rust Meetup and user groups (updated)
Embedding the Servo Web Engine in Qt
A memory model for Rust code in the kernel
Building Stock Market Engine from scratch in Rust (II)
Ratatui Received Funding: What's Next?
Crate of the Week
This week's crate is archspec-rs, a library to track system architecture aspects.
Thanks to Orhun Parmaksız for the suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
431 pull requests were merged in the last week
CFI: change type transformation to use TypeFolder
CFI: fix ICE in KCFI non-associated function pointers
CFI: restore typeid_for_instance default behavior
CFI: support function pointers for trait methods
CFI: support non-general coroutines
MSVC targets should use COFF as their archive format
actually use the inferred ClosureKind from signature inference in coroutine-closures
add Ord::cmp for primitives as a BinOp in MIR
add a debug asserts call to match_projection_projections to ensure invariant
add aarch64-apple-visionos and aarch64-apple-visionos-sim tier 3 targets
add consistency with phrases "meantime" and "mean time"
assert FnDef kind
assert that args are actually compatible with their generics, rather than just their count
avoid ICEing without the pattern_types feature gate
avoid expanding to unstable internal method
avoid panicking unnecessarily on startup
better reporting on generic argument mismatchs
cleanup: rename HAS_PROJECTIONS to HAS_ALIASES etc
do not ICE in fn forced_ambiguity if we get an error
do not ICE on field access check on expr with ty::Error
do not ICE when calling incorrectly defined transmute intrinsic
fix ByMove coroutine-closure shim (for 2021 precise closure capturing behavior)
fix capture analysis for by-move closure bodies
fix diagnostic for qualifier in extern block
hir: use ItemLocalId::ZERO in a couple more places
impl get_mut_or_init and get_mut_or_try_init for OnceCell and OnceLock
implement T-types suggested logic for perfect non-local impl detection
implement minimal, internal-only pattern types in the type system
instantiate higher ranked goals outside of candidate selection
link against libc++abi and libunwind as well when building LLVM wrappers on AIX
make inductive cycles always ambiguous
make sure to insert Sized bound first into clauses list
match ergonomics: implement "&pat everywhere"
match lowering: make false edges more precise
more postfix match fixes
move check for error in impl header outside of reporting
only allow compiler_builtins to call LLVM intrinsics, not any link_name function
only inspect user-written predicates for privacy concerns
pass list of defineable opaque types into canonical queries
pattern analysis: fix union handling
postfix match fixes
privacy: stabilize lint unnameable_types
put checks that detect UB under their own flag below debug_assertions
revert removing miri jobserver workaround
safe Transmute: Compute transmutability from rustc_target::abi::Layout
sanitizers: create the rustc_sanitizers crate
split hir ty lowerer's error reporting code in check functions to mod errors
teach MIR inliner query cycle avoidance about const_eval_select
transforms match into an assignment statement
use the more informative generic type inference failure error on method calls on raw pointers
add missing ?Sized bounds for HasInterner impls
introduce Lifetime::Error
perf: cache type info for ParamEnv
encode dep graph edges directly from the previous graph when promoting
remove debuginfo from rustc-demangle too
stabilize const_caller_location and const_location_fields
stabilize proc_macro_byte_character and proc_macro_c_str_literals
stabilize const Atomic*::into_inner
de-LLVM the unchecked shifts
rename expose_addr to expose_provenance
rename ptr::from_exposed_addr → ptr::with_exposed_provenance
remove rt::init allocation for thread name
use unchecked_sub in str indexing
don't emit divide-by-zero panic paths in StepBy::len
add fn const BuildHasherDefault::new
add invariant to VecDeque::pop_* that len < cap if pop successful
add Context::ext
provide cabi_realloc on wasm32-wasip2 by default
vendor rustc_codegen_gcc
cargo: Build script not rerun when target rustflags change
cargo add: Stabilize MSRV-aware version req selection
cargo toml: Decouple target discovery from Target creation
cargo toml: Split out an explicit step to resolve Cargo.toml
cargo metadata: Show behavior with TOML-specific types
cargo: don't depend on ? affecting type inference in weird ways
cargo: fix github fast path redirect
cargo: maintain sorting of dependency features
cargo: switch to using gitoxide by default for listing files
rustdoc-search: shard the search result descriptions
rustdoc: default to light theme if JS is enabled but not working
rustdoc: heavily simplify the synthesis of auto trait impls
rustdoc: synthetic auto trait impls: accept unresolved region vars for now
clippy: manual_swap auto fix
clippy: manual_unwrap_or_default: check for Default trait implementation in initial condition when linting and use IfLetOrMatch
clippy: allow cast lints in macros
clippy: avoid an ICE in ptr_as_ptr when getting the def_id of a local
clippy: correct parentheses for needless_borrow suggestion
clippy: do not suggest assigning_clones in Clone impl
clippy: fix ice reporting in lintcheck
clippy: fix incorrect suggestion for !(a as type >= b)
clippy: reword arc_with_non_send_sync note and help messages
clippy: type certainty: clear DefId when an expression's type changes to non-adt
rust-analyzer: apply cargo flags in test explorer
rust-analyzer: fix off-by-one error converting to LSP UTF8 offsets with multi-byte char
rust-analyzer: consider exported_name="main" functions in test modules as tests
rust-analyzer: fix patch_cfg_if not applying with stitched sysroot
rust-analyzer: set the right postfix snippets competion source range
Rust Compiler Performance Triage
A quiet week; all the outright regressions were already triaged (the one biggish one was #122077, which is justified as an important bug fix). There was a very nice set of improvements from PR #122070, which cleverly avoids a lot of unnecessary allocator calls when building an incremental dep graph by reusing the old edges from the previous graph.
Triage done by @pnkfelix. Revision range: 3d5528c2..86b603cd
3 Regressions, 3 Improvements, 7 Mixed; 1 of them in rollups 78 artifact comparisons made in total
See full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
Merge RFC 3513: Add gen blocks
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
[disposition: merge] RFC: Drop temporaries in tail expressions before local variables
[disposition: merge] RFC: Reserve unprefixed guarded string literals in Edition 2024
Tracking Issues & PRs
Rust
[disposition: merge] Always display stability version even if it's the same as the containing item
[disposition: merge] Tracking Issue for cstr_count_bytes
[disposition: merge] rustdoc-search: single result for items with multiple paths
[disposition: merge] Tracking Issue for #![feature(const_io_structs)]
[disposition: merge] Tracking Issue for alloc::collections::BinaryHeap::as_slice
[disposition: merge] Tracking Issue for fs_try_exists
[disposition: merge] stabilize -Znext-solver=coherence
[disposition: merge] Document overrides of clone_from() in core/std
[disposition: merge] Stabilise inline_const
[disposition: merge] Tracking Issue for RFC 3013: Checking conditional compilation at compile time
[disposition: merge] sess: stabilize -Zrelro-level as -Crelro-level
[disposition: merge] Implement FromIterator for (impl Default + Extend, impl Default + Extend)
[disposition: close] Return the delimiter from slice::split_once
[disposition: merge] Support type '/' to search
[disposition: merge] Tracking Issue for Seek::seek_relative
[disposition: merge] Tracking Issue for generic NonZero
New and Updated RFCs
[new] Add an expression for direct access to an enum's discriminant
[new] RFC: Drop temporaries in tail expressions before local variables
Upcoming Events
Rusty Events between 2024-04-10 - 2024-05-08 🦀
Virtual
2024-04-11 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-11 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-04-11 | Virtual (San Diego, CA, US) | San Diego Rust
San Diego Rust April 2024 Tele-Meetup
2024-04-15 & 2024-04-16 | Virtual | Mainmatter
Remote Workshop: Testing for Rust projects – going beyond the basics
2024-04-16 | Virtual (Dublin, IE) | Rust Dublin
A reverse proxy with Tower and Hyperv1
2024-04-16 | Virtual (Washington, DC, US) | Rust DC
Mid-month Rustful—forensic parsing via Artemis
2024-04-17 | Virtual | Rust for Lunch
April 2024 Rust for Lunch
2024-04-17 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Reflections on RustNation UK 2024
2024-04-17 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-04-18 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-21 | Virtual (Israel) | Rust in Israel
Using AstroNvim for Rust development (in Hebrew)
2024-04-25 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-01 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 5 - Project Structure
2024-05-01 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-05-02 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-05-07 | Virtual (Buffalo, NY) | Buffalo Rust Meetup
Buffalo Rust User Group
Africa
2024-05-04 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-04-16 | Tokyo, JP | Tokyo Rust Meetup
The Good, the Bad, and the Async (RSVP by 15 Apr)
Europe
2024-04-10 | Cambridge, UK | Cambridge Rust Meetup
Rust Meetup Reboot 3
2024-04-10 | Cologne/Köln, DE | Rust Cologne
This Month in Rust, April
2024-04-10 | Manchester, UK | Rust Manchester
Rust Manchester April 2024
2024-04-10 | Oslo, NO | Rust Oslo
Rust Hack'n'Learn at Kampen Bistro
2024-04-11 | Bordeaux, FR | Rust Bordeaux
Rust Bordeaux #2 : Présentations
2024-04-11 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-04-15 | Zagreb, HR | impl Zagreb for Rust
Rust Meetup 2024/04: Building cargo projects with NIX
2024-04-16 | Bratislava, SK | Bratislava Rust Meetup Group
Rust Meetup by Sonalake #5
2024-04-16 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
winnow/nom
2024-04-16 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-04-17 | Bergen, NO | Hubbel kodeklubb
Lær Rust med Conways Game of Life
2024-04-17 | Ostrava, CZ | TechMeetup Ostrava
TechMeetup: RUST
2024-04-20 | Augsburg, DE | Augsburger Linux-Infotag 2024
Augsburger Linux-Infotag 2024: Workshop Einstieg in Embedded Rust mit dem Raspberry Pico WH
2024-04-23 | Berlin, DE | Rust Berlin
Rust'n'Tell - Rust for the Web
2024-04-23 | Paris, FR | Rust Paris
Paris Rust Meetup #67
2024-04-25 | Aarhus, DK | Rust Aarhus
Talk Night at MFT Energy
2024-04-23 | Berlin, DE | Rust Berlin
Rust'n'Tell - Rust for the Web
2024-04-25 | Berlin, DE | Rust Berlin
Rust and Tell - TBD
2024-04-27 | Basel, CH | Rust Basel
Fullstack Rust - Workshop #2 (Register by 23 April)
2024-04-30 | Budapest, HU | Budapest Rust Meetup Group
Rust Meetup Budapest 2
2024-04-30 | Salzburg, AT | Rust Salzburg
[Rust Salzburg meetup]: 6:30pm - CCC Salzburg, 1. OG, ArgeKultur, Ulrike-Gschwandtner-Straße 5, 5020 Salzburg
2024-05-01 | Utrecht, NL | NL-RSE Community
NL-RSE RUST meetup
2024-05-06 | Delft, NL | GOSIM
GOSIM Europe 2024
2024-05-07 & 2024-05-08 | Delft, NL | RustNL
RustNL 2024
North America
2024-04-10 | Boulder, CO, US | Boulder Rust Meetup
Rust Meetup: Better Builds w/ Flox + Hangs
2024-04-11 | Lehi, UT, US | Utah Rust
Interactive Storytelling using Yarn Spinner with Rex Magana
2024-04-11 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-04-11 | Spokane, WA, US | Spohttps://www.meetup.com/minneapolis-rust-meetup/kane Rust
Monthly Meetup: The Rust Full-Stack Experience
2024-04-15 | Minneapolis, MN, US | Minneapolish Rust Meetup
Minneapolis Rust: Getting started with Rust! #2
2024-04-15 | Somerville, MA, US | Boston Rust Meetup
Davis Square Rust Lunch, Apr 15
2024-04-16 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-04-16 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group: Meet Servo and Robius Open Source Projects
2024-04-18 | Chicago, IL, US | Deep Dish Rust
Rust Talk: What Are Panics?
2024-04-18 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-04-25 | Nashville, TN, US | Music City Rust Developers
Music City Rust Developers - Async Rust on Embedded
2024-04-26 | Boston, MA, US | Boston Rust Meetup
North End Rust Lunch, Apr 26
Oceania
2024-04-15 | Melbourne, VIC, AU | Rust Melbourne
April 2024 Rust Melbourne Meetup
2024-04-17 | Sydney, NSW, AU | Rust Sydney
WMaTIR 2024 Gala & Talks
2024-04-30 | Auckland, NZ | Rust AKL
Rust AKL: Why Rust? Convince Me!
2024-04-30 | Canberra, ACT, AU | Canberra Rust User Group
CRUG April Meetup: Generics and Traits
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
As a former JavaScript plebeian who has only been semi-recently illuminated by the suspiciously pastel pink, white and blue radiance of Rust developers, NOT having to sit in my web console debugger for hours pushing some lovingly crafted [object Object] or undefined is a blessing.
– Julien Robert rage-blogging against bevy
Thanks to scottmcm 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
1 note · View note
this-week-in-rust · 25 days
Text
This Week in Rust 541
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.
Updates from Rust Community
Official
Announcing Rust 1.77.1
Changes to u128/i128 layout in 1.77 and 1.78
Newsletters
This Week In Bevy: 2d Lighting, Particle Systems, Meshlets, and more
Project/Tooling Updates
Dioxus 0.5: Signal Rewrite, Remove lifetimes, CSS Hotreloading, and more!
EtherCrab 0.4.0: Pure Rust EtherCAT, now with Distributed Clocks
nethsm 0.1.0 - first release for this high level library for the Nitrokey NetHSM
BugStalker v0.1.3 released - first release of rust debugger
git-cliff 2.2.0 is released! (highly customizable changelog generator)
Observations/Thoughts
On Reusing Arc and Rc in Rust
Who killed the network switch?
Xr0 Makes C Safer than Rust
Easy Mode Rust
Bashing Bevy To Bait Internet Strangers Into Improving My Code
Conway’s Game of Life Through Time
Functions Everywhere, Only Once: Writing Functions for the Everywhere Computer
Rust Bytes: Is Rust the Future of JavaScript Tooling?
Explaining the internals of async-task from the ground up
Programming ESP32 with Rust: OTA firmware update
Fast Development In Rust, Part 2
Rust Walkthroughs
Modelling Universal Domain Types in Rust
[video] developerlife.com - Get started with unit testing in Rust
Research
Rust Digger: More than 14% of crates configure rustfmt. 35 Have both rustfmt.toml and .rustfmt.toml
Miscellaneous
Building a Managed Postgres Service in Rust: Part 1
Beware of the DashMap deadlock
Embedded Rust Bluetooth on ESP: BLE Client
Rust Unit and Integration Testing in RustRover
[podcast] cargo-semver-checks with Predrag Gruevski — Rustacean Station
[video] Data Types - Part 3 of Idiomatic Rust in Simple Steps
[video] Deconstructing WebAssembly Components by Ryan Levick @ Wasm I/O 2024
[video] Extreme Clippy for new Rust crates
[video] [playlist] Bevy GameDev Meetup #2 - March 2024
Building Stock Market Engine from scratch in Rust (I)
Crate of the Week
This week’s crate is cargo-unfmt, a formatter that formats your code into block-justified text, which sacrifices some readability for esthetics.
Thanks to Felix Prasanna for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
greptimedb - Support specifying time ranges in the COPY FROM statement to avoid importing unwanted data
greptimedb - Support converting UNIX epoch numbers to specified timezone in to_timezone function
mirrord - Capability to modify the local listen address
mirrord - Fix all check-rust-docs warnings
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Braintree
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Fiserv
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Globepay
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
* RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10 * RustLab 2024 | Closes 2024-05-01 | Florence, Italy | Event date: 2024-11-09 - 2024-11-11 * EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event date: 2024-10-10 * Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19 * Conf42 Rustlang 2024 | Closes 2024-07-22 | online | Event date: 2024-08-22
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
431 pull requests were merged in the last week
CFI: (actually) check that methods are object-safe before projecting their receivers to dyn Trait in CFI
CFI: abstract Closures and Coroutines
CFI: fix drop and drop_in_place
CFI: fix methods as function pointer cast
CFI: support calling methods on supertraits
add a CurrentGcx type to let the deadlock handler access TyCtxt
add basic trait impls for f16 and f128
add detection of (Partial)Ord methods in the ambiguous_wide_pointer_comparisons lint
add rust-lldb pretty printing for Path and PathBuf
assert that ADTs have the right number of args
codegen const panic messages as function calls
coverage: re-enable UnreachablePropagation for coverage builds
delegation: fix ICE on wrong Self instantiation
delegation: fix ICE on wrong self resolution
do not attempt to write ty::Err on binding that isn’t from current HIR Owner
don’t check match scrutinee of postfix match for unused parens
don’t inherit codegen attrs from parent static
eagerly instantiate closure/coroutine-like bounds with placeholders to deal with binders correctly
eliminate UbChecks for non-standard libraries
ensure std is prepared for cross-targets
fix diagnostics for async block cloning
fixup parsing of rustc_never_type_options attribute
function ABI is irrelevant for reachability
improve example on inserting to a sorted vector to avoid shifting equal elements
in ConstructCoroutineInClosureShim, pass receiver by mut ref, not mut pointer
load missing type of impl associated constant from trait definition
make TyCtxt::coroutine_layout take coroutine’s kind parameter
match ergonomics 2024: implement mutable by-reference bindings
match lowering: build the Place instead of keeping a PlaceBuilder around
match lowering: consistently merge simple or-patterns
match lowering: handle or-patterns one layer at a time
match lowering: sort Eq candidates in the failure case too
pattern analysis: Require enum indices to be contiguous
replace regions in const canonical vars’ types with 'static in next-solver canonicalizer
require Debug for Pointee::Metadata
require DerefMut and DerefPure on deref!() patterns when appropriate
rework opaque type region inference
simplify proc macro bridge state
simplify trim-paths feature by merging all debuginfo options together
store segment and module in UnresolvedImportError
suggest associated type bounds on problematic associated equality bounds
suggest correct path in include_bytes!
use the Align type when parsing alignment attributes
warn against implementing Freeze
enable cargo miri test doctests
miri: avoid mutating the global environment
miri: cotrol stacked borrows consistency check with its own feature flag
miri: experiment with macOS M1 runners
miri: extern-so: give the version script a better name; show errors from failing to build the C lib
miri: speed up Windows CI
miri: tree Borrows: Make tree root always be initialized
don’t emit load metadata in debug mode
avoid some unnecessary query invocations
stop doing expensive work in opt_suggest_box_span eagerly
stabilize ptr.is_aligned, move ptr.is_aligned_to to a new feature gate
stabilize unchecked_{add,sub,mul}
make {integer}::from_str_radix constant
optimize core::char::CaseMappingIter
implement Vec::pop_if
remove len argument from RawVec::reserve_for_push
less generic code for Vec allocations
UnixStream: override read_buf
num::NonZero::get can be 1 transmute instead of 2
fix error message for env! when env var is not valid Unicode
futures: make access inner of futures::io::{BufReader,BufWriter} not require inner trait bound
regex-syntax: accept {,n} as an equivalent to {0,n}
cargo add: Preserve comments when updating simple deps
cargo generate-lockfile: hold lock before querying index
cargo toml: Warn on unused workspace.dependencies keys on virtual workspaces
cargo fix: bash completion fallback in nounset mode
clippy: large_stack_frames: print total size and largest component
clippy: type_id_on_box: lint on any Box<dyn _>
clippy: accept String in span_lint* functions directly to avoid unnecessary clones
clippy: allow filter_map_identity when the closure is typed
clippy: allow manual_unwrap_or_default in const function
clippy: don’t emit duplicated_attribute lint on “complex” cfgs
clippy: elide unit variables linted by let_unit and use () directly instead
clippy: fix manual_unwrap_or_default suggestion ignoring side-effects
clippy: fix suggestion for len_zero with macros
clippy: make sure checked type implements Try trait when linting question_mark
clippy: move box_default to style, do not suggest turbofishes
clippy: move mixed_attributes_style to style
clippy: new lint legacy_numeric_constants
clippy: restrict manual_clamp to const case, bring it out of nursery
rust-analyzer: add rust-analyzer.cargo.allTargets to configure passing --all-targets to cargo invocations
rust-analyzer: implement resolving and lowering of Lifetimes (no inference yet)
rust-analyzer: fix crate IDs when multiple workspaces are loaded
rust-analyzer: ADT hover considering only type or const len not lifetimes
rust-analyzer: check for client support of relative glob patterns before using them
rust-analyzer: lifetime length are not added in count of params in highlight
rust-analyzer: revert debug extension priorities
rust-analyzer: silence mismatches involving unresolved projections
rust-analyzer: use lldb when debugging with C++ extension on MacOS
rust-analyzer: pattern analysis: Use contiguous indices for enum variants
rust-analyzer: prompt the user to reload the window when enabling test explorer
rust-analyzer: resolve tests per file instead of per crate in test explorer
Rust Compiler Performance Triage
A pretty quiet week, with most changes (dropped from the report below) being due to continuing bimodality in the performance data. No particularly notable changes landed.
Triage done by @simulacrum. Revision range: 73476d49..3d5528c
1 Regressions, 2 Improvements, 5 Mixed; 0 of them in rollups 61 artifact comparisons made in total
Full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
Merge RFC 3543: patchable-function-entry
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 entered Final Comment Period this week.
Tracking Issues & PRs Rust
[disposition: merge] Pass list of defineable opaque types into canonical queries
[disposition: merge] Document overrides of clone_from() in core/std
[disposition: merge] Tracking Issue for Seek::seek_relative
[disposition: merge] Tracking Issue for generic NonZero
[disposition: merge] Tracking Issue for cstr_count_bytes
[disposition: merge] privacy: Stabilize lint unnameable_types
[disposition: merge] Stabilize Wasm target features that are in phase 4 and 5
Cargo
[disposition: merge] feat(add): Stabilize MSRV-aware version req selection
New and Updated RFCs
[new] RFC: Add freeze intrinsic and related library functions
[new] RFC: Add a special TryFrom and Into derive macro, specifically for C-Style enums
[new] re-organise the compiler team
Upcoming Events
Rusty Events between 2024-04-03 - 2024-05-01 🦀
Virtual
2024-04-03 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 4 - Error Handling
2024-04-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-04-04 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-09 | Virtual (Dallas, TX, US) | Dallas Rust
BlueR: a Rust Based Tool for Robust and Safe Bluetooth Control
2024-04-11 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-11 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-04-15 & 2024-04-16 | Virtual | Mainmatter
Remote Workshop: Testing for Rust projects – going beyond the basics
2024-04-16 | Virtual (Dublin, IE) | Rust Dublin
A reverse proxy with Tower and Hyperv1
2024-04-16 | Virtual (Washinigton, DC, US) | Rust DC
Mid-month Rustful
2024-04-17 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-04-18 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-25 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-01 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
Africa
2024-04-05 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Europe
2024-04-10 | Cambridge, UK | Cambridge Rust Meetup
Rust Meetup Reboot 3
2024-04-10 | Cologne/Köln, DE | Rust Cologne
This Month in Rust, April
2024-04-10 | Manchester, UK | Rust Manchester
Rust Manchester April 2024
2024-04-10 | Oslo, NO | Rust Oslo
Rust Hack'n'Learn at Kampen Bistro
2024-04-11 | Bordeaux, FR | Rust Bordeaux
Rust Bordeaux #2 : Présentations
2024-04-11 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-04-15 | Zagreb, HR | impl Zagreb for Rust
Rust Meetup 2024/04: Building cargo projects with NIX
2024-04-16 | Bratislava, SK | Bratislava Rust Meetup Group
Rust Meetup by Sonalake #5
2024-04-16 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
winnow/nom
2024-04-16 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-04-17 | Bergen, NO | Hubbel kodeklubb
Lær Rust med Conways Game of Life
2024-04-20 | Augsburg, DE | Augsburger Linux-Infotag 2024
Augsburger Linux-Infotag 2024: Workshop Einstieg in Embedded Rust mit dem Raspberry Pico WH
2024-04-23 | Berlin, DE | Rust Berlin
Rust'n'Tell - Rust for the Web
2024-04-25 | Aarhus, DK | Rust Aarhus
Talk Night at MFT Energy
2024-04-25 | Berlin, DE | Rust Berlin
Rust and Tell
2024-04-27 | Basel, CH | Rust Basel
Fullstack Rust - Workshop #2
North America
2024-04-04 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-04 | Portland, OR, US | PDXRust Meetup
Hack Night and First Post-Pandemic Meetup Restart
2024-04-09 | New York, NY, US | Rust NYC
Rust NYC Monthly Meetup
2024-04-10 | Boulder, CO, US | Boulder Rust Meetup
Rust Meetup: Better Builds w/ Flox + Hangs
2024-04-11 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-04-11 | Spokane, WA, US | Spokane Rust
Monthly Meetup: Topic TBD!
2024-04-15 | Somerville, MA, US | Boston Rust Meetup
Davis Square Rust Lunch, Apr 15
2024-04-16 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-04-16 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group: Meet Servo and Robius Open Source Projects
2024-04-18 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-04-25 | Nashville, TN, US | Music City Rust Developers
Music City Rust Developers - Async Rust on Embedded
2024-04-26 | Boston, MA, US | Boston Rust Meetup
North End Rust Lunch, Apr 26
Oceania
2024-04-30 | Canberra, ACT, AU | Canberra Rust User Group
April Meetup
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
Panstromek: I remember reading somewhere (probably here) that borrow checking has O(n^3) asymptotic complexity, relative to the size of the function.
Nadrieril: Compared to match exhaustiveness which is NP-hard and trait solving which is undecidable, a polynomial complexity feels refreshingly sane.
– Panstromek and Nadrieril on zulip
Thanks to Kevin Reid 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
2 notes · View notes
this-week-in-rust · 26 days
Text
This Week in Rust 541
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.
Updates from Rust Community
Official
Announcing Rust 1.77.1
Changes to u128/i128 layout in 1.77 and 1.78
Newsletters
This Week In Bevy: 2d Lighting, Particle Systems, Meshlets, and more
Project/Tooling Updates
Dioxus 0.5: Signal Rewrite, Remove lifetimes, CSS Hotreloading, and more!
EtherCrab 0.4.0: Pure Rust EtherCAT, now with Distributed Clocks
nethsm 0.1.0 - first release for this high level library for the Nitrokey NetHSM
BugStalker v0.1.3 released - first release of rust debugger
git-cliff 2.2.0 is released! (highly customizable changelog generator)
Observations/Thoughts
On Reusing Arc and Rc in Rust
Who killed the network switch?
Xr0 Makes C Safer than Rust
Easy Mode Rust
Bashing Bevy To Bait Internet Strangers Into Improving My Code
Conway's Game of Life Through Time
Functions Everywhere, Only Once: Writing Functions for the Everywhere Computer
Rust Bytes: Is Rust the Future of JavaScript Tooling?
Explaining the internals of async-task from the ground up
Programming ESP32 with Rust: OTA firmware update
Fast Development In Rust, Part 2
Rust Walkthroughs
Modelling Universal Domain Types in Rust
[video] developerlife.com - Get started with unit testing in Rust
Research
Rust Digger: More than 14% of crates configure rustfmt. 35 Have both rustfmt.toml and .rustfmt.toml
Miscellaneous
Building a Managed Postgres Service in Rust: Part 1
Beware of the DashMap deadlock
Embedded Rust Bluetooth on ESP: BLE Client
Rust Unit and Integration Testing in RustRover
[podcast] cargo-semver-checks with Predrag Gruevski — Rustacean Station
[video] Data Types - Part 3 of Idiomatic Rust in Simple Steps
[video] Deconstructing WebAssembly Components by Ryan Levick @ Wasm I/O 2024
[video] Extreme Clippy for new Rust crates
[video] [playlist] Bevy GameDev Meetup #2 - March 2024
Building Stock Market Engine from scratch in Rust (I)
Crate of the Week
This week's crate is cargo-unfmt, a formatter that formats your code into block-justified text, which sacrifices some readability for esthetics.
Thanks to Felix Prasanna for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
greptimedb - Support specifying time ranges in the COPY FROM statement to avoid importing unwanted data
greptimedb - Support converting UNIX epoch numbers to specified timezone in to_timezone function
mirrord - Capability to modify the local listen address
mirrord - Fix all check-rust-docs warnings
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Braintree
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Fiserv
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Globepay
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
* RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10 * RustLab 2024 | Closes 2024-05-01 | Florence, Italy | Event date: 2024-11-09 - 2024-11-11 * EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event date: 2024-10-10 * Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19 * Conf42 Rustlang 2024 | Closes 2024-07-22 | online | Event date: 2024-08-22
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
431 pull requests were merged in the last week
CFI: (actually) check that methods are object-safe before projecting their receivers to dyn Trait in CFI
CFI: abstract Closures and Coroutines
CFI: fix drop and drop_in_place
CFI: fix methods as function pointer cast
CFI: support calling methods on supertraits
add a CurrentGcx type to let the deadlock handler access TyCtxt
add basic trait impls for f16 and f128
add detection of (Partial)Ord methods in the ambiguous_wide_pointer_comparisons lint
add rust-lldb pretty printing for Path and PathBuf
assert that ADTs have the right number of args
codegen const panic messages as function calls
coverage: re-enable UnreachablePropagation for coverage builds
delegation: fix ICE on wrong Self instantiation
delegation: fix ICE on wrong self resolution
do not attempt to write ty::Err on binding that isn't from current HIR Owner
don't check match scrutinee of postfix match for unused parens
don't inherit codegen attrs from parent static
eagerly instantiate closure/coroutine-like bounds with placeholders to deal with binders correctly
eliminate UbChecks for non-standard libraries
ensure std is prepared for cross-targets
fix diagnostics for async block cloning
fixup parsing of rustc_never_type_options attribute
function ABI is irrelevant for reachability
improve example on inserting to a sorted vector to avoid shifting equal elements
in ConstructCoroutineInClosureShim, pass receiver by mut ref, not mut pointer
load missing type of impl associated constant from trait definition
make TyCtxt::coroutine_layout take coroutine's kind parameter
match ergonomics 2024: implement mutable by-reference bindings
match lowering: build the Place instead of keeping a PlaceBuilder around
match lowering: consistently merge simple or-patterns
match lowering: handle or-patterns one layer at a time
match lowering: sort Eq candidates in the failure case too
pattern analysis: Require enum indices to be contiguous
replace regions in const canonical vars' types with 'static in next-solver canonicalizer
require Debug for Pointee::Metadata
require DerefMut and DerefPure on deref!() patterns when appropriate
rework opaque type region inference
simplify proc macro bridge state
simplify trim-paths feature by merging all debuginfo options together
store segment and module in UnresolvedImportError
suggest associated type bounds on problematic associated equality bounds
suggest correct path in include_bytes!
use the Align type when parsing alignment attributes
warn against implementing Freeze
enable cargo miri test doctests
miri: avoid mutating the global environment
miri: cotrol stacked borrows consistency check with its own feature flag
miri: experiment with macOS M1 runners
miri: extern-so: give the version script a better name; show errors from failing to build the C lib
miri: speed up Windows CI
miri: tree Borrows: Make tree root always be initialized
don't emit load metadata in debug mode
avoid some unnecessary query invocations
stop doing expensive work in opt_suggest_box_span eagerly
stabilize ptr.is_aligned, move ptr.is_aligned_to to a new feature gate
stabilize unchecked_{add,sub,mul}
make {integer}::from_str_radix constant
optimize core::char::CaseMappingIter
implement Vec::pop_if
remove len argument from RawVec::reserve_for_push
less generic code for Vec allocations
UnixStream: override read_buf
num::NonZero::get can be 1 transmute instead of 2
fix error message for env! when env var is not valid Unicode
futures: make access inner of futures::io::{BufReader,BufWriter} not require inner trait bound
regex-syntax: accept {,n} as an equivalent to {0,n}
cargo add: Preserve comments when updating simple deps
cargo generate-lockfile: hold lock before querying index
cargo toml: Warn on unused workspace.dependencies keys on virtual workspaces
cargo fix: bash completion fallback in nounset mode
clippy: large_stack_frames: print total size and largest component
clippy: type_id_on_box: lint on any Box<dyn _>
clippy: accept String in span_lint* functions directly to avoid unnecessary clones
clippy: allow filter_map_identity when the closure is typed
clippy: allow manual_unwrap_or_default in const function
clippy: don't emit duplicated_attribute lint on "complex" cfgs
clippy: elide unit variables linted by let_unit and use () directly instead
clippy: fix manual_unwrap_or_default suggestion ignoring side-effects
clippy: fix suggestion for len_zero with macros
clippy: make sure checked type implements Try trait when linting question_mark
clippy: move box_default to style, do not suggest turbofishes
clippy: move mixed_attributes_style to style
clippy: new lint legacy_numeric_constants
clippy: restrict manual_clamp to const case, bring it out of nursery
rust-analyzer: add rust-analyzer.cargo.allTargets to configure passing --all-targets to cargo invocations
rust-analyzer: implement resolving and lowering of Lifetimes (no inference yet)
rust-analyzer: fix crate IDs when multiple workspaces are loaded
rust-analyzer: ADT hover considering only type or const len not lifetimes
rust-analyzer: check for client support of relative glob patterns before using them
rust-analyzer: lifetime length are not added in count of params in highlight
rust-analyzer: revert debug extension priorities
rust-analyzer: silence mismatches involving unresolved projections
rust-analyzer: use lldb when debugging with C++ extension on MacOS
rust-analyzer: pattern analysis: Use contiguous indices for enum variants
rust-analyzer: prompt the user to reload the window when enabling test explorer
rust-analyzer: resolve tests per file instead of per crate in test explorer
Rust Compiler Performance Triage
A pretty quiet week, with most changes (dropped from the report below) being due to continuing bimodality in the performance data. No particularly notable changes landed.
Triage done by @simulacrum. Revision range: 73476d49..3d5528c
1 Regressions, 2 Improvements, 5 Mixed; 0 of them in rollups 61 artifact comparisons made in total
Full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
Merge RFC 3543: patchable-function-entry
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 entered Final Comment Period this week.
Tracking Issues & PRs
Rust
[disposition: merge] Pass list of defineable opaque types into canonical queries
[disposition: merge] Document overrides of clone_from() in core/std
[disposition: merge] Tracking Issue for Seek::seek_relative
[disposition: merge] Tracking Issue for generic NonZero
[disposition: merge] Tracking Issue for cstr_count_bytes
[disposition: merge] privacy: Stabilize lint unnameable_types
[disposition: merge] Stabilize Wasm target features that are in phase 4 and 5
Cargo
[disposition: merge] feat(add): Stabilize MSRV-aware version req selection
New and Updated RFCs
[new] RFC: Add freeze intrinsic and related library functions
[new] RFC: Add a special TryFrom and Into derive macro, specifically for C-Style enums
[new] re-organise the compiler team
Upcoming Events
Rusty Events between 2024-04-03 - 2024-05-01 🦀
Virtual
2024-04-03 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 4 - Error Handling
2024-04-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-04-04 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-09 | Virtual (Dallas, TX, US) | Dallas Rust
BlueR: a Rust Based Tool for Robust and Safe Bluetooth Control
2024-04-11 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-11 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-04-15 & 2024-04-16 | Virtual | Mainmatter
Remote Workshop: Testing for Rust projects – going beyond the basics
2024-04-16 | Virtual (Dublin, IE) | Rust Dublin
A reverse proxy with Tower and Hyperv1
2024-04-16 | Virtual (Washinigton, DC, US) | Rust DC
Mid-month Rustful
2024-04-17 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-04-18 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-25 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-05-01 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
Africa
2024-04-05 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Europe
2024-04-10 | Cambridge, UK | Cambridge Rust Meetup
Rust Meetup Reboot 3
2024-04-10 | Cologne/Köln, DE | Rust Cologne
This Month in Rust, April
2024-04-10 | Manchester, UK | Rust Manchester
Rust Manchester April 2024
2024-04-10 | Oslo, NO | Rust Oslo
Rust Hack'n'Learn at Kampen Bistro
2024-04-11 | Bordeaux, FR | Rust Bordeaux
Rust Bordeaux #2 : Présentations
2024-04-11 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-04-15 | Zagreb, HR | impl Zagreb for Rust
Rust Meetup 2024/04: Building cargo projects with NIX
2024-04-16 | Bratislava, SK | Bratislava Rust Meetup Group
Rust Meetup by Sonalake #5
2024-04-16 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
winnow/nom
2024-04-16 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-04-17 | Bergen, NO | Hubbel kodeklubb
Lær Rust med Conways Game of Life
2024-04-20 | Augsburg, DE | Augsburger Linux-Infotag 2024
Augsburger Linux-Infotag 2024: Workshop Einstieg in Embedded Rust mit dem Raspberry Pico WH
2024-04-23 | Berlin, DE | Rust Berlin
Rust'n'Tell - Rust for the Web
2024-04-25 | Aarhus, DK | Rust Aarhus
Talk Night at MFT Energy
2024-04-25 | Berlin, DE | Rust Berlin
Rust and Tell
2024-04-27 | Basel, CH | Rust Basel
Fullstack Rust - Workshop #2
North America
2024-04-04 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-04 | Portland, OR, US | PDXRust Meetup
Hack Night and First Post-Pandemic Meetup Restart
2024-04-09 | New York, NY, US | Rust NYC
Rust NYC Monthly Meetup
2024-04-10 | Boulder, CO, US | Boulder Rust Meetup
Rust Meetup: Better Builds w/ Flox + Hangs
2024-04-11 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-04-11 | Spokane, WA, US | Spokane Rust
Monthly Meetup: Topic TBD!
2024-04-15 | Somerville, MA, US | Boston Rust Meetup
Davis Square Rust Lunch, Apr 15
2024-04-16 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-04-16 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group: Meet Servo and Robius Open Source Projects
2024-04-18 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-04-25 | Nashville, TN, US | Music City Rust Developers
Music City Rust Developers - Async Rust on Embedded
2024-04-26 | Boston, MA, US | Boston Rust Meetup
North End Rust Lunch, Apr 26
Oceania
2024-04-30 | Canberra, ACT, AU | Canberra Rust User Group
April Meetup
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
Panstromek: I remember reading somewhere (probably here) that borrow checking has O(n^3) asymptotic complexity, relative to the size of the function.
Nadrieril: Compared to match exhaustiveness which is NP-hard and trait solving which is undecidable, a polynomial complexity feels refreshingly sane.
– Panstromek and Nadrieril on zulip
Thanks to Kevin Reid 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
2 notes · View notes
this-week-in-rust · 1 month
Text
This Week in Rust 539
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.
Updates from Rust Community
Newsletters
The Embedded Rustacean Issue #15
This Week in Bevy: Foundations, Meetups, and more Bevy Cheatbook updates
Project/Tooling Updates
rustc_codegen_gcc: Progress Report #31
Slint 1.5: Embracing Android, Improving Live-Preview, and introducing Pythonic Slint
yaml-rust2’s first real release
testresult 0.4.0 released. The crate provides the TestResult type for concise and precise test failures.
Revolutionizing PostgreSQL Database Comparison: Introducing pgdatadiff in Rust — Unleash Speed, Safety, and Scalability
Observations/Thoughts
SemVer in Rust: Breakage, Tooling, and Edge Cases — FOSDEM 2024 annotated talk
Go’s Errors: How I Learned to Love Rust
Strongly-typed IDs in SurrealDB
Iterators and traversables
Using PostHog with Rust
Using Rust on ESP32 from Windows
Compiling Rust to WASI
Achieving awful compression with digits of pi
Zig, Rust, and other languages
What part of Rust compilation is the bottleneck?
Lambda on hard mode: Inside Modal’s web infrastructure
Embedded Rust Bluetooth on ESP: BLE Advertiser
[video] Diplomat - Idiomatic Multi-Language APIs - Robert Bastian - Rust Zürisee March 2024
Rust Walkthroughs
A Short Introduction to Rust and the Bevy Game Engine
[video] Strings and memory reallocation in Rust
Research
Rust Tools Survey (by JetBrains)
Miscellaneous
RustNL 2024 schedule announced
Fighting back: Turning the Tables on Web Scrapers Using Rust
The book “Code Like a Pro in Rust” is released
Red Hat’s Long, Rust'ed Road Ahead For Nova As Nouveau Driver Successor
Crate of the Week
This week’s crate is heck, a no_std crate to perform case conversions.
Thanks to Edoardo Morandi for the suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
Rama — add Form support (IntroResponse + FromRequest)
Rama — rename *Filter matchers to *Matcher
Rama — Provide support for boxed custom matchers in layer enums
Rama — use workspace dependencies for common workspace dep versionning
Rama — add open-telemetry middleware and extended prometheus support
Space Acres - Packaging for MacOS
Space Acres - Implement Loading Progress
Space Acres - Show more lines of logs when the app is “Stopped with error”
Space Acres - Tray Icon Support
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Braintree
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Fiserv
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Globepay
ZeroCopy - Fix cfgs in rustdoc
ZeroCopy - Audit uses of “C-like” and prefer “fieldless”
ZeroCopy - in zerocopy-derive UI tests, detect whether we’re building with RUSTFLAGS='-Wwarnings'
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
* RustFest Zürich 2024 | Closes 2024-03-31 | Zürich, Switzerland | Event date: 2024-06-19 - 2024-06-24 * Oxidize 2024 | Closes 2024-03-24 | Berlin, Germany | Event date: 2024-05-28 - 2024-05-30 * RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10 * EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event on 2024-10-10 * Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
498 pull requests were merged in the last week
BOLT Use CDSort and CDSplit
NormalizesTo: return nested goals to caller
add_retag: ensure box-to-raw-ptr casts are preserved for Miri
f16 and f128 step 3: compiler support & feature gate
add -Z external-clangrt
add wasm_c_abi future-incompat lint
add missing try_visit calls in visitors
check library crates for all tier 1 targets in PR CI
copy byval argument to alloca if alignment is insufficient
coverage: initial support for branch coverage instrumentation
create some minimal HIR for associated opaque types
delay expand macro bang when there has indeterminate path
delegation: fix ICE on duplicated associative items
detect allocator for box in must_not_suspend lint
detect calls to .clone() on T: !Clone types on borrowck errors
detect when move of !Copy value occurs within loop and should likely not be cloned
diagnostics: suggest Clone bounds when noop clone()
do not eat nested expressions’ results in MayContainYieldPoint format args visitor
don’t create ParamCandidate when obligation contains errors
don’t ICE when non-self part of trait goal is constrained in new solver
don’t show suggestion if slice pattern is not top-level
downgrade const eval dangling ptr in final to future incompat lint
enable PR tracking review assignment for rust-lang/rust
enable creating backtraces via -Ztreat-err-as-bug when stashing errors
enable frame pointers for the standard library
ensure RPITITs are created before def-id freezing
fix 32-bit overflows in LLVM composite constants
fix ICE in diagnostics for parenthesized type arguments
fix long-linker-command-lines failure caused by rust.rpath=false
fix attribute validation on associated items in traits
fix stack overflow with recursive associated types
interpret: ensure that Place is never used for a different frame
make incremental sessions identity no longer depend on the crate names provided by source code
match lowering: don’t collect test alternatives ahead of time
more eagerly instantiate binders
never patterns: suggest ! patterns on non-exhaustive matches
only generate a ptrtoint in AtomicPtr codegen when absolutely necessary
only invoke decorate if the diag can eventually be emitted
pass the correct DefId when suggesting writing the aliased Self type out
pattern analysis: Store field indices in DeconstructedPat to avoid virtual wildcards
provide structured suggestion for #![feature(foo)]
register LLVM handlers for bad-alloc / OOM
reject overly generic assoc const binding types
represent Result<usize, Box<T>> as ScalarPair(i64, ptr)
split refining_impl_trait lint into _reachable, _internal variants
stabilize imported_main
stabilize associated type bounds (RFC #2289)
stop walking the bodies of statics for reachability, and evaluate them instead
ungate the UNKNOWN_OR_MALFORMED_DIAGNOSTIC_ATTRIBUTES lint
unix time module now return result
validate builder::PATH_REMAP
miri: add some chance to reuse addresses of previously freed allocations
avoid lowering code under dead SwitchInt targets
use UnsafeCell for fast constant thread locals
add CStr::bytes iterator
add as_(mut_)ptr and as_(mut_)slice to raw array pointers
implement {Div,Rem}Assign<NonZero<X>> on X
fix unsoundness in Step::forward_unchecked for signed integers
implement Duration::as_millis_{f64,f32}
optimize ptr::replace
safe Transmute: Require that source referent is smaller than destination
safe Transmute: Use ‘not yet supported’, not 'unspecified’ in errors
hashbrown: fix index calculation in panic guard of clone_from_impl
cargo tree: Control --charset via auto-detecting config value
cargo toml: Flatten manifest parsing
cargo: add 'open-namespaces’ feature
cargo fix: strip feature dep when dep is dev dep
cargo: prevent dashes in lib.name
cargo: expose source/spans to Manifest for emitting lints
rustdoc-search: depth limit T<U> → U unboxing
rustdoc-search: search types by higher-order functions
rustdoc: add --test-builder-wrapper arg to support wrappers such as RUSTC_WRAPPER when building doctests
rustdoc: do not preload fonts when browsing locally
rustfmt: fix: ICE with expanded code
rustfmt: initial work on formatting headers
clippy: cast_lossless: Suggest type alias instead of the aliased type
clippy: else_if_without_else: Fix duplicate diagnostics
clippy: map_entry: call the visitor on the local’s else block
clippy: option_option: Fix duplicate diagnostics
clippy: unused_enumerate_index: trigger on method calls
clippy: use_self: Make it aware of lifetimes
clippy: don’t emit doc_markdown lint for missing backticks if it’s inside a quote
clippy: fix dbg_macro false negative when dbg is inside some complex macros
clippy: fix empty_docs trigger in proc-macro
clippy: fix span calculation for non-ascii in needless_return
clippy: handle false positive with map_clone lint
clippy: lint when calling the blanket Into impl from a From impl
clippy: move iter_nth to style, add machine applicable suggestion
clippy: move readonly_write_lock to perf
clippy: new restriction lint: integer_division_remainder_used
rust-analyzer: distinguish integration tests from crates in test explorer
rust-analyzer: apply #[cfg] to proc macro inputs
rust-analyzer: implement ATPIT
rust-analyzer: support macro calls in eager macros for IDE features
rust-analyzer: syntax highlighting improvements
rust-analyzer: fix panic with impl trait associated types in where clause
rust-analyzer: don’t auto-close block comments in strings
rust-analyzer: fix wrong where clause rendering on hover
rust-analyzer: handle attributes when typing curly bracket
rust-analyzer: ignore some warnings if they originate from within macro expansions
rust-analyzer: incorrect handling of use and panic issue in extract_module
rust-analyzer: make inlay hint resolving work better for inlays targetting the same position
rust-analyzer: refactor extension to support arbitrary shell command runnables
rust-analyzer: show compilation progress in test explorer
rust-analyzer: use --workspace and --no-fail-fast in test explorer
Rust Compiler Performance Triage
Even though the summary might not look like it, this was actually a relatively quiet week, with a few small regressions. The large regression that is also shown in the summary table was caused by extending the verification of incremental compilation results. However, this verification is not actually fully enabled by default, so these regressions are mostly only visible in our benchmarking suite, which enables the verification to achieve more deterministic benchmarking results. One small regression was also caused by enabling frame pointers for the Rust standard library, which should improve profiling of Rust programs.
Triage done by @kobzol. Revision range: e919669d..21d94a3d
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 2.5% [0.4%, 7.8%] 207 Regressions ❌ (secondary) 2.9% [0.2%, 8.3%] 128 Improvements ✅ (primary) - - 0 Improvements ✅ (secondary) -1.0% [-1.3%, -0.4%] 4 All ❌✅ (primary) 2.5% [0.4%, 7.8%] 207
4 Regressions, 1 Improvements, 6 Mixed; 4 of them in rollups 67 artifact comparisons made in total
Full report here
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
Reserve gen keyword in 2024 edition for Iterator generators
Tracking Issues & PRs Rust
[disposition: merge] Tracking Issue for raw slice len() method (slice_ptr_len, const_slice_ptr_len)
[disposition: merge] downgrade ptr.is_aligned_to crate-private
[disposition: merge] Stabilize unchecked_{add,sub,mul}
[disposition: merge] transmute: caution against int2ptr transmutation
[disposition: merge] Normalize trait ref before orphan check & consider ty params in alias types to be uncovered
Cargo
[disposition: merge] release cargo test helper crate to crates-io
New and Updated RFCs
[new] Add support for use Trait::method
Upcoming Events
Rusty Events between 2024-03-20 - 2024-04-17 🦀
Virtual
2024-03-20 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 3 - Designing Interfaces
2024-03-20 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-03-21 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
2024-03-26 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-03-28 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-02 | Virtual (Buffalo, NY, US) | Buffalo Rust
Buffalo Rust User Group
2024-04-03 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 4 - Error Handling
2024-04-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-04-04 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-09 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-04-11 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-11 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-04-16 | Virtual (Washinigton, DC, US) | Rust DC
Mid-month Rustful
2024-04-17| Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
Africa
2024-04-05 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-03-30 | New Delhi, IN | Rust Delhi
Rust Delhi Meetup #6
Europe
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-20 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #9
2024-03-20 | Oxford, UK | Oxford Rust Meetup Group
Introduction to Rust
2024-03-21 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #6
2024-03-21 | Lille, FR | Rust Lille
Rust Lille #6: Du RSS et de L'ECS !
2024-03-21 | Vienna, AT | Rust Vienna
Rust Vienna Meetup - March - Unsafe Rust
2024-03-23 | Stockholm, SE | Stockholm Rust
Ferris’ Fika Forum | Map
2024-03-25 | London, UK | Rust London User Group
LDN Talks: Rust Nation 2024 Pre-Conference Meetup
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-26 - 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024 - Conference
2024-03-28 | Berlin, DE | Rust Berlin
Rust and Tell
2024-04-10 | Cambridge, UK | Cambridge Rust Meetup
Rust Meetup Reboot 3
2024-04-10 | Oslo, NO | Rust Oslo
Rust Hack'n'Learn at Kampen Bistro
2024-04-11 | Bordeaux, FR | Rust Bordeaux
Rust Bordeaux #2 : Présentations
2024-04-11 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-04-16 | Bratislava, SK | Bratislava Rust Meetup Group
Rust Meetup by Sonalake #5
2024-04-16 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
North America
2024-03-21 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-03-21 | Nashville, TN, US | Music City Rust Developers
Rust Meetup : Lightning Round!
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-21 | Spokane, WA, US | Spokane Rust Meetup | Spokane Rust Website
Presentation: Brilliance in Borrowing
2024-03-22 | Somerville, MA, US | Boston Rust Meetup
Somerville Union Square Rust Lunch, Mar 22
2024-03-26 | Minneapolis, MN, US | Minneapolis Rust Meetup
Minneapolis Rust: Getting started with Rust!
2024-03-27 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-27 | Hawthorne (Los Angeles), CA, US | Freeform
Rust in the Physical World 🦀 Tech Talk Event at Freeform
2024-03-31 | Boston, MA, US | Boston Rust Meetup
Beacon Hill Rust Lunch, Mar 31
2024-04-04 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-11 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-04-16 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
In 10 years we went from “Rust will never replace C and C++” to “New C/C++ should not be written anymore, and you should use Rust”. Good job.
– dpc_pw on lobste.rs
Thanks to Dennis Luxen 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
1 note · View note
this-week-in-rust · 1 month
Text
This Week in Rust 539
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.
Updates from Rust Community
Newsletters
The Embedded Rustacean Issue #15
This Week in Bevy: Foundations, Meetups, and more Bevy Cheatbook updates
Project/Tooling Updates
rustc_codegen_gcc: Progress Report #31
Slint 1.5: Embracing Android, Improving Live-Preview, and introducing Pythonic Slint
yaml-rust2's first real release
testresult 0.4.0 released. The crate provides the TestResult type for concise and precise test failures.
Revolutionizing PostgreSQL Database Comparison: Introducing pgdatadiff in Rust — Unleash Speed, Safety, and Scalability
Observations/Thoughts
SemVer in Rust: Breakage, Tooling, and Edge Cases — FOSDEM 2024 annotated talk
Go's Errors: How I Learned to Love Rust
Strongly-typed IDs in SurrealDB
Iterators and traversables
Using PostHog with Rust
Using Rust on ESP32 from Windows
Compiling Rust to WASI
Achieving awful compression with digits of pi
Zig, Rust, and other languages
What part of Rust compilation is the bottleneck?
Lambda on hard mode: Inside Modal's web infrastructure
Embedded Rust Bluetooth on ESP: BLE Advertiser
[video] Diplomat - Idiomatic Multi-Language APIs - Robert Bastian - Rust Zürisee March 2024
Rust Walkthroughs
A Short Introduction to Rust and the Bevy Game Engine
[video] Strings and memory reallocation in Rust
Research
Rust Tools Survey (by JetBrains)
Miscellaneous
RustNL 2024 schedule announced
Fighting back: Turning the Tables on Web Scrapers Using Rust
The book "Code Like a Pro in Rust" is released
Red Hat's Long, Rust'ed Road Ahead For Nova As Nouveau Driver Successor
Crate of the Week
This week's crate is heck, a no_std crate to perform case conversions.
Thanks to Edoardo Morandi for the suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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 calls for testing were issued 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.
Call for Participation; projects and speakers
CFP - Projects
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.
Rama — add Form support (IntroResponse + FromRequest)
Rama — rename *Filter matchers to *Matcher
Rama — Provide support for boxed custom matchers in layer enums
Rama — use workspace dependencies for common workspace dep versionning
Rama — add open-telemetry middleware and extended prometheus support
Space Acres - Packaging for MacOS
Space Acres - Implement Loading Progress
Space Acres - Show more lines of logs when the app is "Stopped with error"
Space Acres - Tray Icon Support
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Braintree
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Fiserv
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Globepay
ZeroCopy - Fix cfgs in rustdoc
ZeroCopy - Audit uses of "C-like" and prefer "fieldless"
ZeroCopy - in zerocopy-derive UI tests, detect whether we're building with RUSTFLAGS='-Wwarnings'
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
* RustFest Zürich 2024 | Closes 2024-03-31 | Zürich, Switzerland | Event date: 2024-06-19 - 2024-06-24 * Oxidize 2024 | Closes 2024-03-24 | Berlin, Germany | Event date: 2024-05-28 - 2024-05-30 * RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10 * EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event on 2024-10-10 * Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
498 pull requests were merged in the last week
BOLT Use CDSort and CDSplit
NormalizesTo: return nested goals to caller
add_retag: ensure box-to-raw-ptr casts are preserved for Miri
f16 and f128 step 3: compiler support & feature gate
add -Z external-clangrt
add wasm_c_abi future-incompat lint
add missing try_visit calls in visitors
check library crates for all tier 1 targets in PR CI
copy byval argument to alloca if alignment is insufficient
coverage: initial support for branch coverage instrumentation
create some minimal HIR for associated opaque types
delay expand macro bang when there has indeterminate path
delegation: fix ICE on duplicated associative items
detect allocator for box in must_not_suspend lint
detect calls to .clone() on T: !Clone types on borrowck errors
detect when move of !Copy value occurs within loop and should likely not be cloned
diagnostics: suggest Clone bounds when noop clone()
do not eat nested expressions' results in MayContainYieldPoint format args visitor
don't create ParamCandidate when obligation contains errors
don't ICE when non-self part of trait goal is constrained in new solver
don't show suggestion if slice pattern is not top-level
downgrade const eval dangling ptr in final to future incompat lint
enable PR tracking review assignment for rust-lang/rust
enable creating backtraces via -Ztreat-err-as-bug when stashing errors
enable frame pointers for the standard library
ensure RPITITs are created before def-id freezing
fix 32-bit overflows in LLVM composite constants
fix ICE in diagnostics for parenthesized type arguments
fix long-linker-command-lines failure caused by rust.rpath=false
fix attribute validation on associated items in traits
fix stack overflow with recursive associated types
interpret: ensure that Place is never used for a different frame
make incremental sessions identity no longer depend on the crate names provided by source code
match lowering: don't collect test alternatives ahead of time
more eagerly instantiate binders
never patterns: suggest ! patterns on non-exhaustive matches
only generate a ptrtoint in AtomicPtr codegen when absolutely necessary
only invoke decorate if the diag can eventually be emitted
pass the correct DefId when suggesting writing the aliased Self type out
pattern analysis: Store field indices in DeconstructedPat to avoid virtual wildcards
provide structured suggestion for #![feature(foo)]
register LLVM handlers for bad-alloc / OOM
reject overly generic assoc const binding types
represent Result<usize, Box<T>> as ScalarPair(i64, ptr)
split refining_impl_trait lint into _reachable, _internal variants
stabilize imported_main
stabilize associated type bounds (RFC #2289)
stop walking the bodies of statics for reachability, and evaluate them instead
ungate the UNKNOWN_OR_MALFORMED_DIAGNOSTIC_ATTRIBUTES lint
unix time module now return result
validate builder::PATH_REMAP
miri: add some chance to reuse addresses of previously freed allocations
avoid lowering code under dead SwitchInt targets
use UnsafeCell for fast constant thread locals
add CStr::bytes iterator
add as_(mut_)ptr and as_(mut_)slice to raw array pointers
implement {Div,Rem}Assign<NonZero<X>> on X
fix unsoundness in Step::forward_unchecked for signed integers
implement Duration::as_millis_{f64,f32}
optimize ptr::replace
safe Transmute: Require that source referent is smaller than destination
safe Transmute: Use 'not yet supported', not 'unspecified' in errors
hashbrown: fix index calculation in panic guard of clone_from_impl
cargo tree: Control --charset via auto-detecting config value
cargo toml: Flatten manifest parsing
cargo: add 'open-namespaces' feature
cargo fix: strip feature dep when dep is dev dep
cargo: prevent dashes in lib.name
cargo: expose source/spans to Manifest for emitting lints
rustdoc-search: depth limit T<U> → U unboxing
rustdoc-search: search types by higher-order functions
rustdoc: add --test-builder-wrapper arg to support wrappers such as RUSTC_WRAPPER when building doctests
rustdoc: do not preload fonts when browsing locally
rustfmt: fix: ICE with expanded code
rustfmt: initial work on formatting headers
clippy: cast_lossless: Suggest type alias instead of the aliased type
clippy: else_if_without_else: Fix duplicate diagnostics
clippy: map_entry: call the visitor on the local's else block
clippy: option_option: Fix duplicate diagnostics
clippy: unused_enumerate_index: trigger on method calls
clippy: use_self: Make it aware of lifetimes
clippy: don't emit doc_markdown lint for missing backticks if it's inside a quote
clippy: fix dbg_macro false negative when dbg is inside some complex macros
clippy: fix empty_docs trigger in proc-macro
clippy: fix span calculation for non-ascii in needless_return
clippy: handle false positive with map_clone lint
clippy: lint when calling the blanket Into impl from a From impl
clippy: move iter_nth to style, add machine applicable suggestion
clippy: move readonly_write_lock to perf
clippy: new restriction lint: integer_division_remainder_used
rust-analyzer: distinguish integration tests from crates in test explorer
rust-analyzer: apply #[cfg] to proc macro inputs
rust-analyzer: implement ATPIT
rust-analyzer: support macro calls in eager macros for IDE features
rust-analyzer: syntax highlighting improvements
rust-analyzer: fix panic with impl trait associated types in where clause
rust-analyzer: don't auto-close block comments in strings
rust-analyzer: fix wrong where clause rendering on hover
rust-analyzer: handle attributes when typing curly bracket
rust-analyzer: ignore some warnings if they originate from within macro expansions
rust-analyzer: incorrect handling of use and panic issue in extract_module
rust-analyzer: make inlay hint resolving work better for inlays targetting the same position
rust-analyzer: refactor extension to support arbitrary shell command runnables
rust-analyzer: show compilation progress in test explorer
rust-analyzer: use --workspace and --no-fail-fast in test explorer
Rust Compiler Performance Triage
Even though the summary might not look like it, this was actually a relatively quiet week, with a few small regressions. The large regression that is also shown in the summary table was caused by extending the verification of incremental compilation results. However, this verification is not actually fully enabled by default, so these regressions are mostly only visible in our benchmarking suite, which enables the verification to achieve more deterministic benchmarking results. One small regression was also caused by enabling frame pointers for the Rust standard library, which should improve profiling of Rust programs.
Triage done by @kobzol. Revision range: e919669d..21d94a3d
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 2.5% [0.4%, 7.8%] 207 Regressions ❌ (secondary) 2.9% [0.2%, 8.3%] 128 Improvements ✅ (primary) - - 0 Improvements ✅ (secondary) -1.0% [-1.3%, -0.4%] 4 All ❌✅ (primary) 2.5% [0.4%, 7.8%] 207
4 Regressions, 1 Improvements, 6 Mixed; 4 of them in rollups 67 artifact comparisons made in total
Full report here
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
Reserve gen keyword in 2024 edition for Iterator generators
Tracking Issues & PRs
Rust
[disposition: merge] Tracking Issue for raw slice len() method (slice_ptr_len, const_slice_ptr_len)
[disposition: merge] downgrade ptr.is_aligned_to crate-private
[disposition: merge] Stabilize unchecked_{add,sub,mul}
[disposition: merge] transmute: caution against int2ptr transmutation
[disposition: merge] Normalize trait ref before orphan check & consider ty params in alias types to be uncovered
Cargo
[disposition: merge] release cargo test helper crate to crates-io
New and Updated RFCs
[new] Add support for use Trait::method
Upcoming Events
Rusty Events between 2024-03-20 - 2024-04-17 🦀
Virtual
2024-03-20 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 3 - Designing Interfaces
2024-03-20 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-03-21 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
2024-03-26 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-03-28 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-02 | Virtual (Buffalo, NY, US) | Buffalo Rust
Buffalo Rust User Group
2024-04-03 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 4 - Error Handling
2024-04-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-04-04 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-04-09 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-04-11 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-11 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-04-16 | Virtual (Washinigton, DC, US) | Rust DC
Mid-month Rustful
2024-04-17| Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
Africa
2024-04-05 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-03-30 | New Delhi, IN | Rust Delhi
Rust Delhi Meetup #6
Europe
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-20 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #9
2024-03-20 | Oxford, UK | Oxford Rust Meetup Group
Introduction to Rust
2024-03-21 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #6
2024-03-21 | Lille, FR | Rust Lille
Rust Lille #6: Du RSS et de L'ECS !
2024-03-21 | Vienna, AT | Rust Vienna
Rust Vienna Meetup - March - Unsafe Rust
2024-03-23 | Stockholm, SE | Stockholm Rust
Ferris' Fika Forum | Map
2024-03-25 | London, UK | Rust London User Group
LDN Talks: Rust Nation 2024 Pre-Conference Meetup
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-26 - 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024 - Conference
2024-03-28 | Berlin, DE | Rust Berlin
Rust and Tell
2024-04-10 | Cambridge, UK | Cambridge Rust Meetup
Rust Meetup Reboot 3
2024-04-10 | Oslo, NO | Rust Oslo
Rust Hack'n'Learn at Kampen Bistro
2024-04-11 | Bordeaux, FR | Rust Bordeaux
Rust Bordeaux #2 : Présentations
2024-04-11 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-04-16 | Bratislava, SK | Bratislava Rust Meetup Group
Rust Meetup by Sonalake #5
2024-04-16 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
North America
2024-03-21 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-03-21 | Nashville, TN, US | Music City Rust Developers
Rust Meetup : Lightning Round!
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-21 | Spokane, WA, US | Spokane Rust Meetup | Spokane Rust Website
Presentation: Brilliance in Borrowing
2024-03-22 | Somerville, MA, US | Boston Rust Meetup
Somerville Union Square Rust Lunch, Mar 22
2024-03-26 | Minneapolis, MN, US | Minneapolis Rust Meetup
Minneapolis Rust: Getting started with Rust!
2024-03-27 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-27 | Hawthorne (Los Angeles), CA, US | Freeform
Rust in the Physical World 🦀 Tech Talk Event at Freeform
2024-03-31 | Boston, MA, US | Boston Rust Meetup
Beacon Hill Rust Lunch, Mar 31
2024-04-04 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-04-11 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-04-16 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
In 10 years we went from “Rust will never replace C and C++” to “New C/C++ should not be written anymore, and you should use Rust”. Good job.
– dpc_pw on lobste.rs
Thanks to Dennis Luxen 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
1 note · View note
this-week-in-rust · 2 months
Text
This Week in Rust 538
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.
Updates from Rust Community
Official
Announcing Rustup 1.27.0
crates.io: Download changes
Newsletters
This Month in Rust OSDev: February 2024
Project/Tooling Updates
Bevy Foundation
Rust Flashcards - 557 cards to learn Rust from first principles
Lib.rs website improvements
Sudo-rs dependencies: when less is better
rust-analyzer changelog #224
biscotti, a new crate for HTTP cookies
Boa release v0.18
Announcing Relm4 0.7 and 0.8
Meilisearch 1.7 — New OpenAI models & GPU support for Hugging Face embeddings
Cargo wizard: automate Cargo project configuration
GreptimeDB v0.7 is ready for cloud-native monitoring
[video] Project Syn - Simon Gerber - Rust Zürisee March 2024
Observations/Thoughts
Fast Development In Rust, Part One
Mental model for unsafe (complete rewrite)
10 years in Open Source
[audio] Season Finale - Rust in Production Podcast
[video] SemVer in Rust: Breakage, Tooling, and Edge Cases
Rust Walkthroughs
How to Use Rust Procedural Macros to Replace Panic with syn’s Fold
Rust Iterators Beyond the Basics - part 1
Rust Multi-crate project in a monorepo
Using Stripe Payments with Rust
Problems around modelling an asynchronous API for database transaction in Rust
Embedded Rust Bluetooth on ESP: BLE Scanner
[video] Implementing (parts of) git from scratch in Rust
[video] The Billion Rows Challenge in Rust - an intro to Rust for data engineering
Miscellaneous
Rust impact on engineering management
From medical doctor to rust developer
February 2024 Rust Jobs Report
Crate of the Week
This week’s crate is biscotti, an opinionated library to deal with HTTP cookies on the server side.
We saw a lamentable lack of suggestions this week. Nevertheless, llogiq is pleased with his selection.
Please submit your suggestions and votes for next week!
Call for Testing
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:
Tracking Issue for min_exhaustive_patterns
Testing Steps
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.
Call for Participation; projects and speakers
CFP - Projects
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.
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Bambora
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Mollie
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Braintree
GreptimeDB - Painless integrating with Grafana via Prometheus plugin
GreptimeDB - Add strict mode to validate protocol strings
Fluvio - fvm switch fails on some systems with running local cluster
Fluvio - Add new command fluvio cluster resume
quinn - Add CI for mobile platforms (iOS & Android)
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker. They are ordered below by when the CFP closes.
RustFest Zürich 2024 | Closes 2024-03-31 | Zürich, Switzerland | Event date: 2024-06-19 - 2024-06-24
Oxidize 2024 | Closes 2024-03-24 | Berlin, Germany | Event date: 2024-05-28 - 2024-05-30
RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10
EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event on 2024-10-10
Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
506 pull requests were merged in the last week
add new Tier-3 target: loongarch64-unknown-linux-musl
add arm64ec-pc-windows-msvc target
LLVM Bitcode Linker: A self contained linker for nvptx and other targets
AST validation: Improve handling of inherent impls nested within functions and anon consts
const_eval_select: make it safe but be careful with what we expose on stable for now
hir_analysis: enums return None in find_field
add a description field to target definitions
add an option to have an external download/bootstrap cache
add asm goto support to asm!
add metadata to targets
add proper cfgs for struct HirIdValidator used only with debug-assert
add the new description field to Target::to_json, and add descriptions for some MSVC targets
allow codegen backends to opt-out of parallel codegen
allow multiple impl Into<{D,Subd}iagMessage> parameters in a function
allow targets to override default codegen backend
apply EarlyBinder only to TraitRef in ImplTraitHeader
avoid invoking the intrinsic query for DefKinds other than Fn or AssocFn
avoid overlapping privacy suggestion for single nested imports
change some attributes to only_local
check that return type is WF in typeck
detect unused struct impls pub trait
diagnostics: do not suggest using #[unix_sigpipe] without a value
distinguish between library and lang UB in assert_unsafe_precondition
do not try to format removed files
don’t ICE if we collect no RPITITs unless there are no unification errors
don’t ICE in CTFE if raw/fn-ptr types differ
don’t pass a break scope to Builder::break_for_else
don’t require specifying unrelated assoc types when trait alias is in dyn type
dynamically size sigaltstk in std
errors: share SilentEmitter between rustc and rustfmt
fix crash in internal late lint checking
fix legacy numeric constant diag items
fix linting paths with qself in unused_qualifications
fix metadata for dyn-star in new solver
fix misaligned loads when loading UEFI arg pointers
fix redundant import errors for preload extern crate
fix type resolution of associated const equality bounds (take 2)
fix: localWaker memory leak and some stability attributes
implement async closure signature deduction
improve diagnostics for parenthesized type arguments
interpret: do not call machine read hooks during validation
limit the number of names and values in check-cfg diagnostics
lint singleton gaps after exclusive ranges
loongarch: add frecipe and relax target feature
lower transmutes from int to pointer type as gep on null
make TAITs and ATPITs capture late-bound lifetimes in scope
make DefiningAnchor::Bind only store the opaque types that may be constrained, instead of the current infcx root item
make std::os::unix::ucred module private
make not finding core a fatal error
make the lowering of thir::ExprKind::If easier to follow
match lowering: define a convenient struct
only compare ambiguity item that have hard error
only set noalias on Box with the global allocator
record mtime in bootstrap’s LLVM linker script
refactor pre-getopts command line argument handling
refer to “slice” instead of “vector” in Ord and PartialOrd trait impl of slices
remove feed_local_def_id
removing absolute path in proc-macro
rework untranslatable_diagnostic lint
run a single huge par_body_owners instead of many small ones after each other
silence mismatched types errors for implied projections
stabilize the #[diagnostic] namespace and #[diagnostic::on_unimplemented] attribute
std support for wasm32 panic=unwind
store backtrace for must_produce_diag
temporarily make allow-by-default the non_local_definitions lint
tweak the way we protect in-place function arguments in interpreters
uplift some feeding out of associated_type_for_impl_trait_in_impl and into queries
use GEP inbounds for ZST and DST field offsets
use ptradd for vtable indexing
MIR printing: print the path of uneval’d const
miri: do not apply aliasing restrictions to Box with custom allocator
miri: remove the ability to disable ABI checking
perf: build rustc with 1CGU on x86_64-apple-darwin and x86_64-pc-windows-msvc
replace the default branch with an unreachable branch If it is the last variant
optimize write with as_const_str for shorter code
fix quadratic behavior of repeated vectored writes
net: don’t use checked arithmetic when parsing numbers with known max digits
align_offset, align_to: no longer allow implementations to spuriously fail to align
impl From<TryReserveError> for io::Error
make impl<Fd: AsFd> impl take ?Sized
add Read impl for &Stdin
std::rand: enable getrandom for dragonflybsd too
std::threads: revisit stack address calculation on netbsd
win10: use GetSystemTimePreciseAsFileTime directly
windows: implement condvar, mutex and rwlock using futex
add slice::try_range
implement MaybeUninit::fill{,_with,_from}
RawVec::into_box: avoid unnecessary intermediate reference
Vec::try_with_capacity
add #[inline] to BTreeMap::new constructor
add std::ffi::c_str module
futures: add a helper for always ready futures
cargo: cli: allow logging to chrome traces
cargo: doc: collapse down generated statuses without –verbose
cargo: log: trace parameters to align with profile
cargo: lockfile: make diffing/printing more reusable
cargo: consistently compare MSRVs
rustfmt: fix failure with => in comment after match =>
clippy: new lints: duplicated_attributes, manual_unwrap_or_default, nonminimal_bool, zero_repeat_side_effects and const_is_empty
clippy: fix duplicate diagnostics in manual_retain, mut_mut, no_effect_replace and single_match
clippy: don’t lint redundant_field_names across macro boundaries
clippy: fix std_instead_of_core false positive
clippy: fix missing_docs_in_private_items on some proc macros
clippy: have more lints respect #[allow] on exprs
rust-analyzer: add QuickFix for unresolved field
rust-analyzer: add fix for unused_variables
rust-analyzer: add proc macro semantic token type
rust-analyzer: add config and capability for test explorer
rust-analyzer: don’t escape \ and $ in “Extract format expressions” assist
rust-analyzer: don’t force draw a dependency edge to the real_span_map query
rust-analyzer: don’t invalid body query results when generating desugared names
rust-analyzer: fix method resolution snapshotting receiver_ty too early
rust-analyzer: function argument type inference with associated type impl trait
rust-analyzer: keep attributes in assist 'generate_delegate_trait'
rust-analyzer: panic when using float numbers without dots in chain calls
rust-analyzer: preserve $ and \ in postfix format completions
rust-analyzer: remove accidental dependency between parse_macro_expansion and parse
rust-analyzer: skip match diagnostics for partially unknown types
rust-analyzer: for toolchain binaries use the full path found in $PATH
rust-analyzer: stop eagerly resolving inlay hint text edits for VSCode
Rust Compiler Performance Triage
A mixed week, with a vast number of improvements (in large part due to PR
122010, which undoes a prior regression; PR #120985, a host LLVM update).
But also three admittedly small-ish regressions which seemed unanticipated and were still large enough that I did not feel comfortable rubber-stamping them with a perf-regression-triaged marking.
Triage done by @pnkfelix. Revision range: 41d97c8a..e919669d
2 Regressions, 5 Improvements, 9 Mixed; 5 of them in rollups 54 artifact comparisons made in total
Full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
RFC: Packages as (optional) namespaces
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 entered Final Comment Period this week.
Tracking Issues & PRs Rust
[disposition: merge] Normalize trait ref before orphan check & consider ty params in alias types to be uncovered
[disposition: merge] Split refining_impl_trait lint into _reachable, _internal variants
[disposition: merge] debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo]
[disposition: merge] Stabilize associated type bounds (RFC 2289)
[disposition: merge] c_unwind full stabilization request: change in extern "C" behavior
[disposition: postpone] Consider linting against 00B7 aka interpunct aka middle dot
[disposition: merge] Prevent opaque types being instantiated twice with different regions within the same function
[disposition: merge] instantiate higher ranked goals outside of candidate selection
[disposition: merge] Add wasm_c_abi future-incompat lint
[disposition: merge] stabilize ptr.is_aligned, move ptr.is_aligned_to to a new feature gate
[disposition: merge] feat: implement {Div,Rem}Assign<NonZero<X>> on X
Cargo
[disposition: merge] cargo: prevent dashes in lib.name
New and Updated RFCs
[new] Make cargo install respect lockfiles by default
Upcoming Events
Rusty Events between 2024-03-13 - 2024-04-10 🦀
Virtual
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Web Frontend Co-Learning (online)
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-03-14 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-03-14 | Virtual (San Diego, CA, US) | San Diego Rust
San Diego Rust March 2024 Tele-Meetup
2024-03-19 | Virtual | Formal Land
Rust for Lunch: Formal verification for Rust with coq-of-rust. Speaker: Guillaume Claret | Docs
2024-03-19 | Virtual (Washinigton, DC, US) | Rust DC
Mid-month Rustful
2024-03-20 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 3 - Designing Interfaces
2024-03-20 | Virtual (Vancouver, BC, CA)| Vancouver Rust
Rust Study/Hack/Hang-out
2024-03-21 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
2024-03-26 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-03-28 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-02 | Virtual (Buffalo, NY, US) | Buffalo Rust
Buffalo Rust User Group
2024-04-03 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 4 - Error Handling
2024-04-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-04-09 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
Africa
2024-04-05 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-03-30 | New Delhi, IN | Rust Delhi
Rust Delhi Meetup #6
Europe
2024-03-13 | Paris, FR | Paris Rustaceans
Rust Meetup in Paris
2024-03-14 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-03-19 | Aarhus, DK | Rust Aarhus
Hack Night
2024-03-19 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
Rust Interactive Session
2024-03-19 | Prague, CZ | Rust Prague
Rust Meetup @ Charles University
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-20 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #9
2024-03-21 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #6
2024-03-21 | Lille, FR | Rust Lille
Rust Lille #6: Du RSS et de L'ECS !
2024-03-21 | Vienna, AT | Rust Vienna
Rust Vienna Meetup - March - Unsafe Rust
2024-03-23 | Stockholm, SE | Ferris’ Fika Forum
Ferris’ Fika Forum | Map
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-26 - 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024 - Conference
2024-03-28 | Berlin, DE | Rust Berlin
Rust and Tell
2024-04-10 | Cambridge, UK | Cambridge Rust Meetup
Rust Meetup Reboot 3
2024-04-10 | Oslo, NO | Rust Oslo
Rust Hack'n'Learn at Kampen Bistro
North America
2024-03-13 | Boston, MA, US | Boston Rust Meetup
Northeastern Rust Lunch
2024-03-19 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-22 | Somerville, MA, US | Boston Rust Meetup
Somerville Union Square Rust Lunch, Mar 22
2024-03-26 | Minneapolis, MN, US | Minneapolis Rust Meetup
Minneapolis Rust: Getting started with Rust!
2024-03-27 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-27 | Hawthorne, CA, US | Freeform
Rust in the Physical World 🦀 Tech Talk Event at Freeform
2024-03-31 | Boston, MA, US | Boston Rust Meetup
Beacon Hill Rust Lunch, Mar 31
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
In 10 years we went from “Rust will never replace C and C++” to “New C/C++ should not be written anymore, and you should use Rust”. Good job.
– dpc_pw on lobste.rs
Thanks to Dennis Luxen 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
1 note · View note
this-week-in-rust · 2 months
Text
This Week in Rust 538
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.
Updates from Rust Community
Official
Announcing Rustup 1.27.0
crates.io: Download changes
Newsletters
This Month in Rust OSDev: February 2024
Project/Tooling Updates
Bevy Foundation
Rust Flashcards - 557 cards to learn Rust from first principles
Lib.rs website improvements
Sudo-rs dependencies: when less is better
rust-analyzer changelog #224
biscotti, a new crate for HTTP cookies
Boa release v0.18
Announcing Relm4 0.7 and 0.8
Meilisearch 1.7 — New OpenAI models & GPU support for Hugging Face embeddings
Cargo wizard: automate Cargo project configuration
GreptimeDB v0.7 is ready for cloud-native monitoring
[video] Project Syn - Simon Gerber - Rust Zürisee March 2024
Observations/Thoughts
Fast Development In Rust, Part One
Mental model for unsafe (complete rewrite)
10 years in Open Source
[audio] Season Finale - Rust in Production Podcast
[video] SemVer in Rust: Breakage, Tooling, and Edge Cases
Rust Walkthroughs
How to Use Rust Procedural Macros to Replace Panic with syn’s Fold
Rust Iterators Beyond the Basics - part 1
Rust Multi-crate project in a monorepo
Using Stripe Payments with Rust
Problems around modelling an asynchronous API for database transaction in Rust
Embedded Rust Bluetooth on ESP: BLE Scanner
[video] Implementing (parts of) git from scratch in Rust
[video] The Billion Rows Challenge in Rust - an intro to Rust for data engineering
Miscellaneous
Rust impact on engineering management
From medical doctor to rust developer
February 2024 Rust Jobs Report
Crate of the Week
This week's crate is biscotti, an opinionated library to deal with HTTP cookies on the server side.
We saw a lamentable lack of suggestions this week. Nevertheless, llogiq is pleased with his selection.
Please submit your suggestions and votes for next week!
Call for Testing
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:
Tracking Issue for min_exhaustive_patterns
Testing Steps
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.
Call for Participation; projects and speakers
CFP - Projects
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.
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Bambora
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Mollie
Hyperswitch - [REFACTOR]: Remove Default Case Handling - Braintree
GreptimeDB - Painless integrating with Grafana via Prometheus plugin
GreptimeDB - Add strict mode to validate protocol strings
Fluvio - fvm switch fails on some systems with running local cluster
Fluvio - Add new command fluvio cluster resume
quinn - Add CI for mobile platforms (iOS & Android)
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker. They are ordered below by when the CFP closes.
RustFest Zürich 2024 | Closes 2024-03-31 | Zürich, Switzerland | Event date: 2024-06-19 - 2024-06-24
Oxidize 2024 | Closes 2024-03-24 | Berlin, Germany | Event date: 2024-05-28 - 2024-05-30
RustConf 2024 | Closes 2024-04-25 | Montreal, Canada | Event date: 2024-09-10
EuroRust 2024| Closes 2024-06-03 | Vienna, Austria & online | Event on 2024-10-10
Scientific Computing in Rust 2024| Closes 2024-06-14 | online | Event date: 2024-07-17 - 2024-07-19
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
506 pull requests were merged in the last week
add new Tier-3 target: loongarch64-unknown-linux-musl
add arm64ec-pc-windows-msvc target
LLVM Bitcode Linker: A self contained linker for nvptx and other targets
AST validation: Improve handling of inherent impls nested within functions and anon consts
const_eval_select: make it safe but be careful with what we expose on stable for now
hir_analysis: enums return None in find_field
add a description field to target definitions
add an option to have an external download/bootstrap cache
add asm goto support to asm!
add metadata to targets
add proper cfgs for struct HirIdValidator used only with debug-assert
add the new description field to Target::to_json, and add descriptions for some MSVC targets
allow codegen backends to opt-out of parallel codegen
allow multiple impl Into<{D,Subd}iagMessage> parameters in a function
allow targets to override default codegen backend
apply EarlyBinder only to TraitRef in ImplTraitHeader
avoid invoking the intrinsic query for DefKinds other than Fn or AssocFn
avoid overlapping privacy suggestion for single nested imports
change some attributes to only_local
check that return type is WF in typeck
detect unused struct impls pub trait
diagnostics: do not suggest using #[unix_sigpipe] without a value
distinguish between library and lang UB in assert_unsafe_precondition
do not try to format removed files
don't ICE if we collect no RPITITs unless there are no unification errors
don't ICE in CTFE if raw/fn-ptr types differ
don't pass a break scope to Builder::break_for_else
don't require specifying unrelated assoc types when trait alias is in dyn type
dynamically size sigaltstk in std
errors: share SilentEmitter between rustc and rustfmt
fix crash in internal late lint checking
fix legacy numeric constant diag items
fix linting paths with qself in unused_qualifications
fix metadata for dyn-star in new solver
fix misaligned loads when loading UEFI arg pointers
fix redundant import errors for preload extern crate
fix type resolution of associated const equality bounds (take 2)
fix: localWaker memory leak and some stability attributes
implement async closure signature deduction
improve diagnostics for parenthesized type arguments
interpret: do not call machine read hooks during validation
limit the number of names and values in check-cfg diagnostics
lint singleton gaps after exclusive ranges
loongarch: add frecipe and relax target feature
lower transmutes from int to pointer type as gep on null
make TAITs and ATPITs capture late-bound lifetimes in scope
make DefiningAnchor::Bind only store the opaque types that may be constrained, instead of the current infcx root item
make std::os::unix::ucred module private
make not finding core a fatal error
make the lowering of thir::ExprKind::If easier to follow
match lowering: define a convenient struct
only compare ambiguity item that have hard error
only set noalias on Box with the global allocator
record mtime in bootstrap's LLVM linker script
refactor pre-getopts command line argument handling
refer to "slice" instead of "vector" in Ord and PartialOrd trait impl of slices
remove feed_local_def_id
removing absolute path in proc-macro
rework untranslatable_diagnostic lint
run a single huge par_body_owners instead of many small ones after each other
silence mismatched types errors for implied projections
stabilize the #[diagnostic] namespace and #[diagnostic::on_unimplemented] attribute
std support for wasm32 panic=unwind
store backtrace for must_produce_diag
temporarily make allow-by-default the non_local_definitions lint
tweak the way we protect in-place function arguments in interpreters
uplift some feeding out of associated_type_for_impl_trait_in_impl and into queries
use GEP inbounds for ZST and DST field offsets
use ptradd for vtable indexing
MIR printing: print the path of uneval'd const
miri: do not apply aliasing restrictions to Box with custom allocator
miri: remove the ability to disable ABI checking
perf: build rustc with 1CGU on x86_64-apple-darwin and x86_64-pc-windows-msvc
replace the default branch with an unreachable branch If it is the last variant
optimize write with as_const_str for shorter code
fix quadratic behavior of repeated vectored writes
net: don't use checked arithmetic when parsing numbers with known max digits
align_offset, align_to: no longer allow implementations to spuriously fail to align
impl From<TryReserveError> for io::Error
make impl<Fd: AsFd> impl take ?Sized
add Read impl for &Stdin
std::rand: enable getrandom for dragonflybsd too
std::threads: revisit stack address calculation on netbsd
win10: use GetSystemTimePreciseAsFileTime directly
windows: implement condvar, mutex and rwlock using futex
add slice::try_range
implement MaybeUninit::fill{,_with,_from}
RawVec::into_box: avoid unnecessary intermediate reference
Vec::try_with_capacity
add #[inline] to BTreeMap::new constructor
add std::ffi::c_str module
futures: add a helper for always ready futures
cargo: cli: allow logging to chrome traces
cargo: doc: collapse down generated statuses without --verbose
cargo: log: trace parameters to align with profile
cargo: lockfile: make diffing/printing more reusable
cargo: consistently compare MSRVs
rustfmt: fix failure with => in comment after match =>
clippy: new lints: duplicated_attributes, manual_unwrap_or_default, nonminimal_bool, zero_repeat_side_effects and const_is_empty
clippy: fix duplicate diagnostics in manual_retain, mut_mut, no_effect_replace and single_match
clippy: don't lint redundant_field_names across macro boundaries
clippy: fix std_instead_of_core false positive
clippy: fix missing_docs_in_private_items on some proc macros
clippy: have more lints respect #[allow] on exprs
rust-analyzer: add QuickFix for unresolved field
rust-analyzer: add fix for unused_variables
rust-analyzer: add proc macro semantic token type
rust-analyzer: add config and capability for test explorer
rust-analyzer: don't escape \ and $ in "Extract format expressions" assist
rust-analyzer: don't force draw a dependency edge to the real_span_map query
rust-analyzer: don't invalid body query results when generating desugared names
rust-analyzer: fix method resolution snapshotting receiver_ty too early
rust-analyzer: function argument type inference with associated type impl trait
rust-analyzer: keep attributes in assist 'generate_delegate_trait'
rust-analyzer: panic when using float numbers without dots in chain calls
rust-analyzer: preserve $ and \ in postfix format completions
rust-analyzer: remove accidental dependency between parse_macro_expansion and parse
rust-analyzer: skip match diagnostics for partially unknown types
rust-analyzer: for toolchain binaries use the full path found in $PATH
rust-analyzer: stop eagerly resolving inlay hint text edits for VSCode
Rust Compiler Performance Triage
A mixed week, with a vast number of improvements (in large part due to PR
122010, which undoes a prior regression; PR #120985, a host LLVM update).
But also three admittedly small-ish regressions which seemed unanticipated and were still large enough that I did not feel comfortable rubber-stamping them with a perf-regression-triaged marking.
Triage done by @pnkfelix. Revision range: 41d97c8a..e919669d
2 Regressions, 5 Improvements, 9 Mixed; 5 of them in rollups 54 artifact comparisons made in total
Full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
RFC: Packages as (optional) namespaces
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 entered Final Comment Period this week.
Tracking Issues & PRs
Rust
[disposition: merge] Normalize trait ref before orphan check & consider ty params in alias types to be uncovered
[disposition: merge] Split refining_impl_trait lint into _reachable, _internal variants
[disposition: merge] debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo]
[disposition: merge] Stabilize associated type bounds (RFC 2289)
[disposition: merge] c_unwind full stabilization request: change in extern "C" behavior
[disposition: postpone] Consider linting against 00B7 aka interpunct aka middle dot
[disposition: merge] Prevent opaque types being instantiated twice with different regions within the same function
[disposition: merge] instantiate higher ranked goals outside of candidate selection
[disposition: merge] Add wasm_c_abi future-incompat lint
[disposition: merge] stabilize ptr.is_aligned, move ptr.is_aligned_to to a new feature gate
[disposition: merge] feat: implement {Div,Rem}Assign<NonZero<X>> on X
Cargo
[disposition: merge] cargo: prevent dashes in lib.name
New and Updated RFCs
[new] Make cargo install respect lockfiles by default
Upcoming Events
Rusty Events between 2024-03-13 - 2024-04-10 🦀
Virtual
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Web Frontend Co-Learning (online)
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-03-14 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-03-14 | Virtual (San Diego, CA, US) | San Diego Rust
San Diego Rust March 2024 Tele-Meetup
2024-03-19 | Virtual | Formal Land
Rust for Lunch: Formal verification for Rust with coq-of-rust. Speaker: Guillaume Claret | Docs
2024-03-19 | Virtual (Washinigton, DC, US) | Rust DC
Mid-month Rustful
2024-03-20 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 3 - Designing Interfaces
2024-03-20 | Virtual (Vancouver, BC, CA)| Vancouver Rust
Rust Study/Hack/Hang-out
2024-03-21 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
2024-03-26 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-03-28 | Virtual + In Person (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-02 | Virtual (Buffalo, NY, US) | Buffalo Rust
Buffalo Rust User Group
2024-04-03 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 4 - Error Handling
2024-04-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-04-09 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
Africa
2024-04-05 | Kampala, UG | Rust Circle Kampala
Rust Circle Meetup
Asia
2024-03-30 | New Delhi, IN | Rust Delhi
Rust Delhi Meetup #6
Europe
2024-03-13 | Paris, FR | Paris Rustaceans
Rust Meetup in Paris
2024-03-14 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-03-19 | Aarhus, DK | Rust Aarhus
Hack Night
2024-03-19 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
Rust Interactive Session
2024-03-19 | Prague, CZ | Rust Prague
Rust Meetup @ Charles University
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-20 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #9
2024-03-21 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #6
2024-03-21 | Lille, FR | Rust Lille
Rust Lille #6: Du RSS et de L'ECS !
2024-03-21 | Vienna, AT | Rust Vienna
Rust Vienna Meetup - March - Unsafe Rust
2024-03-23 | Stockholm, SE | Ferris' Fika Forum
Ferris' Fika Forum | Map
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-26 - 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024 - Conference
2024-03-28 | Berlin, DE | Rust Berlin
Rust and Tell
2024-04-10 | Cambridge, UK | Cambridge Rust Meetup
Rust Meetup Reboot 3
2024-04-10 | Oslo, NO | Rust Oslo
Rust Hack'n'Learn at Kampen Bistro
North America
2024-03-13 | Boston, MA, US | Boston Rust Meetup
Northeastern Rust Lunch
2024-03-19 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-22 | Somerville, MA, US | Boston Rust Meetup
Somerville Union Square Rust Lunch, Mar 22
2024-03-26 | Minneapolis, MN, US | Minneapolis Rust Meetup
Minneapolis Rust: Getting started with Rust!
2024-03-27 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-27 | Hawthorne, CA, US | Freeform
Rust in the Physical World 🦀 Tech Talk Event at Freeform
2024-03-31 | Boston, MA, US | Boston Rust Meetup
Beacon Hill Rust Lunch, Mar 31
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
In 10 years we went from “Rust will never replace C and C++” to “New C/C++ should not be written anymore, and you should use Rust”. Good job.
– dpc_pw on lobste.rs
Thanks to Dennis Luxen 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
1 note · View note
this-week-in-rust · 2 months
Text
This Week in Rust 537
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.
Updates from Rust Community
Official
Clippy: Deprecating feature = "cargo-clippy"
Updated baseline standards for Windows targets
Project/Tooling Updates
Replacing PyO3’s API without breaking everything downstream
rust-analyzer changelog #223
rust-gcc February 2024 Monthly report
godot-rust February 2024 dev update
Fluvio v0.11.5 Release Updates
sshd-openpgp-auth version 0.3.0 and ssh-openpgp-auth version 0.2.2 as updates to the tooling providing OpenPGP based authentication for SSH host keys
Observations/Thoughts
Borrow checking without lifetimes
How to speed up the Rust compiler in March 2024
Code review in the Rust compiler
Rust thread_local!s are surprisingly expensive
Designing an Async Runtime for WASI 0.2
Rust Walkthroughs
Storing borrowed data in trait objects
Rust’s early vs. late lifetime binding
How moving from Pandas to Polars made me write better code without writing better code
A Full Stack SaaS Template with Loco
Async Rust in a Nutshell
Real-time Streaming Analytics with Fluvio, DeepCausality, and Rust
[video] Modern All Rust Stack - Dioxus, Axum, Warp, SurrealDB
[video] Serverless Data Pipelines in Rust by Michele Vigilante
[FR] [video] Rust Lyon Meetup #8 - Impl Snake for Micro:bit — Cyril MARPAUD
Miscellaneous
Czech Rust community index
Launching RustRover: JetBrains’ Investment in Rust
[audio] RustShip: Rust in Art with Lisa Passing
Crate of the Week
This week’s crate is srgn, a mix of tr, sed, rip-grep and tree-sitter.
Thanks to Alex Povel for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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.
Call for Participation; projects and speakers
CFP - Projects
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 - Output for both ockam project ticket and ockam project enroll is improved, with support for --output json
Ockam - Syntax highlighting for fenced code blocks, in command help output, on Linux works
Ockam - Command - refactor to use typed interfaces to implement commands for kafka services
ZeroCopy - Don’t generate warning when deriving on deprecated type
ZeroCopy - github.com/google/zerocopy
ZeroCopy - Test the output of zerocopy-derive
ZeroCopy - [CI] Check semver compatibility with all target platforms, not just the host platform
ZeroCopy - Inline many trait methods (in zerocopy and in derive-generated code)
Fluvio - fvm switch fails on some systems with running local cluster
Fluvio - Add new command fluvio cluster resume
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
Oxidize 2024 CFP closes 2024-03-24 | Berlin, Germany | Event date: 2024-05-28 - 2024-05-30
RustConf 2024 | CFP closes 2024-04-25 | Montreal, Canada | 2024-09-10
EuroRust 2024| CFP closes 2024-06-03 | Vienna, Austria & online | Event on 2024-10-10
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
488 pull requests were merged in the last week
ffi_unwind_calls: treat RustIntrinsic like regular Rust calls
pattern_analysis: rework how we hide empty private fields
rustc: fix wasm64 metadata object files
add a proper with_no_queries to printing
add a way to add constructors for rustc_type_ir types
add initial support for DataFlowSanitizer
add new pattern_complexity attribute to add possibility to limit and check recursion in pattern matching
add platform-specific function to get the error number for HermitOS
add profiling support to AIX
add proper cfg to keep only one AlignmentEnum definition for different target_pointer_widths
allow statics pointing to mutable statics
always generate GEP i8 / ptradd for struct offsets
avoid collecting into vecs in some places
avoid using unnecessary queries when printing the query stack in panics
consider middle segments of paths in unused_qualifications
correctly generate item info of trait items
delete line if suggestion would replace it with an empty line
display short types for unimplemented trait
don’t grab variances in TypeRelating relation if we’re invariant
don’t panic when waiting on poisoned queries
fix incorrect suggestion for uninitialized binding in pattern
fix issues in suggesting importing extern crate paths
fix link generation for foreign macro in jump to definition feature
implement missing ABI structures in StableMIR
improve renaming suggestion when item starts with underscore
made INVALID_DOC_ATTRIBUTES lint deny by default
make ZeroablePrimitive trait unsafe
make the success arms of if lhs || rhs meet up in a separate block
match lowering: Lower bindings in a predictable order
match lowering: Separate the bool case from other integers in TestKind
match lowering: pre-simplify or-patterns too
never say “Trait is implemented for{type error}"
normalizes-to: handle negative impls
opportunistically resolve regions when processing region outlives obligations
pattern analysis: Don’t panic when encountering unexpected constructor
pattern analysis: abort on arity mismatch
preserve same vtable pointer when cloning raw waker, to fix Waker::will_wake
process alias-relate obligations in CoerceUnsized loop
properly deal with GATs when looking for method chains to point at
safe Transmute: Revise safety analysis
skip unnecessary comparison with half-open range patterns
split rustc_type_ir to avoid rustc_ast from depending on it
style library/core/src/error.rs
suggest moving definition if non-found macro_rules! is defined later
suggest removing superfluous semicolon when statements used as expression
the ordinary lowering of thir::ExprKind::Let is unreachable
use volatile access instead of #[used] for on_tls_callback
miri: add -Zmiri-track-alloc-accesses to readme and fix its wording
miri: log when we change the active thread, and fix logging for concurrency
miri: print thread name in miri error backtraces; add option to track read/write accesses
miri: tree Borrows diagnostic improvements
miri: windows: support getting the thread name
add ASCII fast-path for char::is_grapheme_extended
perf: improve write_fmt to handle simple strings
add display method to OsStr
have String use SliceIndex impls from str
use the OS thread name by default if THREAD_INFO has not been initialized
add missing get_name for wasm::thread
remove Mutex::unlock Function
implement unwind safety for Condvar on all platforms
make ReentrantLock public
codegen_gcc: debuginfo: Add support for debuginfo, without scope support
codegen_gcc: switch to the new set_special_chars_allowed_in_func_names API
cargo add: Fallback to rustc -v when no MSRV is set
cargo toml: Warn on unset Edition
cargo msrv: Report all incompatible packages, not just a random one
cargo rustc: Always pass –edition to rustc
cargo toml: Don’t warn on unset Edition if only 2015 is compatible
cargo: add all unit’s children recursively for doc.extern-map option
cargo: add ”-Zpublic-dependency" for public-dependency feature
cargo: silently ignore cargo::rustc-check-cfg to avoid MSRV annoyance when stabilizing -Zcheck-cfg
cargo: stabilize global cache data tracking
rustdoc: Prevent inclusion of whitespace character after macro_rules ident
rustfmt: ensure space around binary exprs
clippy: identity_op: Fix duplicate diagnostics
clippy: let_underscore_untyped: fix false positive on async function
clippy: map_entry: Check insert expression for map use
clippy: misrefactored_assign_op: fix duplicate diagnostics
clippy: redundant_closure_call: don’t lint closure originating from a macro
clippy: unnecessary_cast: avoid breaking precedence
clippy: add assigning_clones lint
clippy: add mixed_attributes_style lint
clippy: added msrv to threadlocal initializer check
clippy: check for try blocks in question_mark more consistently
clippy: dedup std_instead_of_core by using first segment span for uniqueness
clippy: don’t emit “missing backticks” lint if the element is wrapped in <code> HTML tags
clippy: fix false positive in threadlocal! when falling back to os_local
clippy: fix derive_partial_eq_without_eq false positive on trait projection
clippy: fix nonminimal_bool lint regression
clippy: fix manual_memcpy wrong indexing for multi dimensional arrays
clippy: handle plural acronyms in doc_markdown
clippy: improve is_lint_level code
clippy: lower bstr version requirement to 1.6.0
clippy: pointers cannot be converted to integers at compile time
rust-analyzer: add hover display for trait assoc items
rust-analyzer: add basic support for native debug
rust-analyzer: autocomplete constants inside format strings
rust-analyzer: don’t destructure struct with no public fields
rust-analyzer: don’t highlight related assoc items of super traits
rust-analyzer: goto definition for deref_mut
rust-analyzer: goto definition for index_mut
rust-analyzer: goto-definition for constants inside range pattern
rust-analyzer: ignore generic arguments in intra doc link path resolution
rust-analyzer: put style lints behind disabled-by-default config
rust-analyzer: fix rust-project.json projects not preferring sysroot rustc
rust-analyzer: fix wrong closure kind deduction for closures with predicates
futures: parse rhs of select! arms using match-arm rules
Rust Compiler Performance Triage
A bunch of noise this week which has been dropped from the report (but may be present in the summary figures). As a result, the week is pretty busy in amount of changes, but the net effect is nearly neutral to a slight regression for most workloads.
Triage done by @simulacrum. Revision range: 71ffdf7..41d97c8
2 Regressions, 0 Improvements, 10 Mixed; 4 of them in rollups 51 artifact comparisons made in total
Full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
RFC: Make Cargo respect minimum supported Rust version (MSRV) when selecting dependencies
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
RFC: patchable-function-entry
RFC: Add native code coverage support in Cargo
RFC: Packages as (optional) namespaces
Tracking Issues & PRs Rust
[disposition: merge] alloc: implement FromIterator for Box<str>
[disposition: merge] rework opaque type region inference
[disposition: merge] Make impl<Fd: AsFd> impl take ?Sized
[disposition: merge] Tracking issue for Allow a re-export for main (RFC 1260)
[disposition: merge] Update Windows platform support
[disposition: close] Resolve region bounds from components of type projection
[disposition: merge] Propagate temporary lifetime extension into if and match.
[disposition: merge] more eagerly instantiate binders
[disposition: merge] E0492: borrow of an interior mutable value may end up in the final value during const eval when no inner mutability is involved
[disposition: merge] align_offset, align_to: no longer allow implementations to spuriously fail to align
[disposition: merge] Soft-destabilize RustcEncodable & RustcDecodable, remove from prelude in next edition
[disposition: merge] impl From<TryReserveError> for io::Error
Cargo
[disposition: merge] Tracking Issue for rustc --check-cfg integration
New and Updated RFCs
[new] Public Key Infrastructure for Rust Project
Upcoming Events
Rusty Events between 2024-03-06 - 2024-04-03 🦀
Virtual
2024-03-06 | Virtual (Dublin, IE) | Rust Dublin
An intro to nom, parsing made easy for Rustaceans
2024-03-06 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-03-07 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-12 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-03-12 | Hybrid (Virtual + In-person) Munich, DE | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-13 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 3 - Designing Interfaces
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Web Frontend Co-Learning (online)
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-03-14 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-03-19 | Virtual (Washinigton, DC, US) | Rust DC
Mid-month Rustful
2024-03-20 | Virtual (Vancouver, BC, CA)| Vancouver Rust
Rust Study/Hack/Hang-out
2024-03-21 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
2024-03-28 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-02 | Virtual (Buffalo, NY, US) | Buffalo Rust
Buffalo Rust User Group
2024-04-03 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 4 - Error Handling
2024-04-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
Asia
2024-03-09 | Karnataka, Bengaluru, IN | Rust Bangalore
March 2024 Rustacean Meetup
2024-03-12 | Tokyo, JP | Tokyo Rust Meetup
Building the Isograph Compiler in Rust
Europe
2024-03-06 | Cologne / Köln, DE | Rust Cologne
Macros by simple Examples
2024-03-06 | Zürich, CH | Rust Zürisee
How to (partial) Migration - March Meetup
2024-03-07 | Copenhagen, DK | Copenhagen Rust Community
Rust Hack Night #3: Embedded on Espressif’s ESP32C3
2024-03-12 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-13 | Paris, FR | Paris Rustaceans
Rust Meetup in Paris
2024-03-14 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-03-19 | Aarhus, DK | Rust Aarhus
Hack Night
2024-03-19 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
Rust Interactive Session
2024-03-19 | Prague, CZ | Rust Prague
Rust Meetup @ Charles University
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-20 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #9
2024-03-21 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #6
2024-03-21 | Lille, FR | Rust Lille
Rust Lille #6: Du RSS et de L'ECS !
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-27 - 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024 - Conference
2024-03-28 | Berlin, DE | Rust Berlin
Rust and Tell
North America
2024-03-07 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-03-12 | New York, NY, US | Rust NYC
Rust NYC Monthly Meetup
2024-03-13 | Boston, MA, US | Boston Rust Meetup
Northeastern Rust Lunch
2024-03-19 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-27 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-27 | Hawthorne, CA, US | Freeform
Rust in the Physical World 🦀 Tech Talk Event at Freeform
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
My experience with C++ is that, as I’ve become more of an expert in the language, I’ve become more disillusioned with it. It’s incredibly hard to do things that you should be able to do in software. And, it’s a huge problem for me to constantly be helping other engineers debug the same bugs over and over. It’s always another use after free. I’ve probably debugged 300 of those. […]
In our experience using the Rust ecosystem for almost three years now, I don’t think we found a bug in a single Rust crate that we’ve pulled off the shelf. We found a bug in one of them and that was a Rust crate wrapping a C library and the bug was in the C library. The software quality that you kind of get for free is amazing.
– Carter Schultz interviewed on the filtra blog
Thanks to George Barwood 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
1 note · View note
this-week-in-rust · 2 months
Text
This Week in Rust 537
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.
Updates from Rust Community
Official
Clippy: Deprecating feature = "cargo-clippy"
Updated baseline standards for Windows targets
Project/Tooling Updates
Replacing PyO3's API without breaking everything downstream
rust-analyzer changelog #223
rust-gcc February 2024 Monthly report
godot-rust February 2024 dev update
Fluvio v0.11.5 Release Updates
sshd-openpgp-auth version 0.3.0 and ssh-openpgp-auth version 0.2.2 as updates to the tooling providing OpenPGP based authentication for SSH host keys
Observations/Thoughts
Borrow checking without lifetimes
How to speed up the Rust compiler in March 2024
Code review in the Rust compiler
Rust thread_local!s are surprisingly expensive
Designing an Async Runtime for WASI 0.2
Rust Walkthroughs
Storing borrowed data in trait objects
Rust's early vs. late lifetime binding
How moving from Pandas to Polars made me write better code without writing better code
A Full Stack SaaS Template with Loco
Async Rust in a Nutshell
Real-time Streaming Analytics with Fluvio, DeepCausality, and Rust
[video] Modern All Rust Stack - Dioxus, Axum, Warp, SurrealDB
[video] Serverless Data Pipelines in Rust by Michele Vigilante
[FR] [video] Rust Lyon Meetup #8 - Impl Snake for Micro:bit — Cyril MARPAUD
Miscellaneous
Czech Rust community index
Launching RustRover: JetBrains’ Investment in Rust
[audio] RustShip: Rust in Art with Lisa Passing
Crate of the Week
This week's crate is srgn, a mix of tr, sed, rip-grep and tree-sitter.
Thanks to Alex Povel for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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.
Call for Participation; projects and speakers
CFP - Projects
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 - Output for both ockam project ticket and ockam project enroll is improved, with support for --output json
Ockam - Syntax highlighting for fenced code blocks, in command help output, on Linux works
Ockam - Command - refactor to use typed interfaces to implement commands for kafka services
ZeroCopy - Don't generate warning when deriving on deprecated type
ZeroCopy - github.com/google/zerocopy
ZeroCopy - Test the output of zerocopy-derive
ZeroCopy - [CI] Check semver compatibility with all target platforms, not just the host platform
ZeroCopy - Inline many trait methods (in zerocopy and in derive-generated code)
Fluvio - fvm switch fails on some systems with running local cluster
Fluvio - Add new command fluvio cluster resume
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
Oxidize 2024 CFP closes 2024-03-24 | Berlin, Germany | Event date: 2024-05-28 - 2024-05-30
RustConf 2024 | CFP closes 2024-04-25 | Montreal, Canada | 2024-09-10
EuroRust 2024| CFP closes 2024-06-03 | Vienna, Austria & online | Event on 2024-10-10
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
488 pull requests were merged in the last week
ffi_unwind_calls: treat RustIntrinsic like regular Rust calls
pattern_analysis: rework how we hide empty private fields
rustc: fix wasm64 metadata object files
add a proper with_no_queries to printing
add a way to add constructors for rustc_type_ir types
add initial support for DataFlowSanitizer
add new pattern_complexity attribute to add possibility to limit and check recursion in pattern matching
add platform-specific function to get the error number for HermitOS
add profiling support to AIX
add proper cfg to keep only one AlignmentEnum definition for different target_pointer_widths
allow statics pointing to mutable statics
always generate GEP i8 / ptradd for struct offsets
avoid collecting into vecs in some places
avoid using unnecessary queries when printing the query stack in panics
consider middle segments of paths in unused_qualifications
correctly generate item info of trait items
delete line if suggestion would replace it with an empty line
display short types for unimplemented trait
don't grab variances in TypeRelating relation if we're invariant
don't panic when waiting on poisoned queries
fix incorrect suggestion for uninitialized binding in pattern
fix issues in suggesting importing extern crate paths
fix link generation for foreign macro in jump to definition feature
implement missing ABI structures in StableMIR
improve renaming suggestion when item starts with underscore
made INVALID_DOC_ATTRIBUTES lint deny by default
make ZeroablePrimitive trait unsafe
make the success arms of if lhs || rhs meet up in a separate block
match lowering: Lower bindings in a predictable order
match lowering: Separate the bool case from other integers in TestKind
match lowering: pre-simplify or-patterns too
never say "Trait is implemented for{type error}"
normalizes-to: handle negative impls
opportunistically resolve regions when processing region outlives obligations
pattern analysis: Don't panic when encountering unexpected constructor
pattern analysis: abort on arity mismatch
preserve same vtable pointer when cloning raw waker, to fix Waker::will_wake
process alias-relate obligations in CoerceUnsized loop
properly deal with GATs when looking for method chains to point at
safe Transmute: Revise safety analysis
skip unnecessary comparison with half-open range patterns
split rustc_type_ir to avoid rustc_ast from depending on it
style library/core/src/error.rs
suggest moving definition if non-found macro_rules! is defined later
suggest removing superfluous semicolon when statements used as expression
the ordinary lowering of thir::ExprKind::Let is unreachable
use volatile access instead of #[used] for on_tls_callback
miri: add -Zmiri-track-alloc-accesses to readme and fix its wording
miri: log when we change the active thread, and fix logging for concurrency
miri: print thread name in miri error backtraces; add option to track read/write accesses
miri: tree Borrows diagnostic improvements
miri: windows: support getting the thread name
add ASCII fast-path for char::is_grapheme_extended
perf: improve write_fmt to handle simple strings
add display method to OsStr
have String use SliceIndex impls from str
use the OS thread name by default if THREAD_INFO has not been initialized
add missing get_name for wasm::thread
remove Mutex::unlock Function
implement unwind safety for Condvar on all platforms
make ReentrantLock public
codegen_gcc: debuginfo: Add support for debuginfo, without scope support
codegen_gcc: switch to the new set_special_chars_allowed_in_func_names API
cargo add: Fallback to rustc -v when no MSRV is set
cargo toml: Warn on unset Edition
cargo msrv: Report all incompatible packages, not just a random one
cargo rustc: Always pass --edition to rustc
cargo toml: Don't warn on unset Edition if only 2015 is compatible
cargo: add all unit's children recursively for doc.extern-map option
cargo: add "-Zpublic-dependency" for public-dependency feature
cargo: silently ignore cargo::rustc-check-cfg to avoid MSRV annoyance when stabilizing -Zcheck-cfg
cargo: stabilize global cache data tracking
rustdoc: Prevent inclusion of whitespace character after macro_rules ident
rustfmt: ensure space around binary exprs
clippy: identity_op: Fix duplicate diagnostics
clippy: let_underscore_untyped: fix false positive on async function
clippy: map_entry: Check insert expression for map use
clippy: misrefactored_assign_op: fix duplicate diagnostics
clippy: redundant_closure_call: don't lint closure originating from a macro
clippy: unnecessary_cast: avoid breaking precedence
clippy: add assigning_clones lint
clippy: add mixed_attributes_style lint
clippy: added msrv to threadlocal initializer check
clippy: check for try blocks in question_mark more consistently
clippy: dedup std_instead_of_core by using first segment span for uniqueness
clippy: don't emit "missing backticks" lint if the element is wrapped in <code> HTML tags
clippy: fix false positive in threadlocal! when falling back to os_local
clippy: fix derive_partial_eq_without_eq false positive on trait projection
clippy: fix nonminimal_bool lint regression
clippy: fix manual_memcpy wrong indexing for multi dimensional arrays
clippy: handle plural acronyms in doc_markdown
clippy: improve is_lint_level code
clippy: lower bstr version requirement to 1.6.0
clippy: pointers cannot be converted to integers at compile time
rust-analyzer: add hover display for trait assoc items
rust-analyzer: add basic support for native debug
rust-analyzer: autocomplete constants inside format strings
rust-analyzer: don't destructure struct with no public fields
rust-analyzer: don't highlight related assoc items of super traits
rust-analyzer: goto definition for deref_mut
rust-analyzer: goto definition for index_mut
rust-analyzer: goto-definition for constants inside range pattern
rust-analyzer: ignore generic arguments in intra doc link path resolution
rust-analyzer: put style lints behind disabled-by-default config
rust-analyzer: fix rust-project.json projects not preferring sysroot rustc
rust-analyzer: fix wrong closure kind deduction for closures with predicates
futures: parse rhs of select! arms using match-arm rules
Rust Compiler Performance Triage
A bunch of noise this week which has been dropped from the report (but may be present in the summary figures). As a result, the week is pretty busy in amount of changes, but the net effect is nearly neutral to a slight regression for most workloads.
Triage done by @simulacrum. Revision range: 71ffdf7..41d97c8
2 Regressions, 0 Improvements, 10 Mixed; 4 of them in rollups 51 artifact comparisons made in total
Full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
RFC: Make Cargo respect minimum supported Rust version (MSRV) when selecting dependencies
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
RFC: patchable-function-entry
RFC: Add native code coverage support in Cargo
RFC: Packages as (optional) namespaces
Tracking Issues & PRs
Rust
[disposition: merge] alloc: implement FromIterator for Box<str>
[disposition: merge] rework opaque type region inference
[disposition: merge] Make impl<Fd: AsFd> impl take ?Sized
[disposition: merge] Tracking issue for Allow a re-export for main (RFC 1260)
[disposition: merge] Update Windows platform support
[disposition: close] Resolve region bounds from components of type projection
[disposition: merge] Propagate temporary lifetime extension into if and match.
[disposition: merge] more eagerly instantiate binders
[disposition: merge] E0492: borrow of an interior mutable value may end up in the final value during const eval when no inner mutability is involved
[disposition: merge] align_offset, align_to: no longer allow implementations to spuriously fail to align
[disposition: merge] Soft-destabilize RustcEncodable & RustcDecodable, remove from prelude in next edition
[disposition: merge] impl From<TryReserveError> for io::Error
Cargo
[disposition: merge] Tracking Issue for rustc --check-cfg integration
New and Updated RFCs
[new] Public Key Infrastructure for Rust Project
Upcoming Events
Rusty Events between 2024-03-06 - 2024-04-03 🦀
Virtual
2024-03-06 | Virtual (Dublin, IE) | Rust Dublin
An intro to nom, parsing made easy for Rustaceans
2024-03-06 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-03-07 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-12 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-03-12 | Hybrid (Virtual + In-person) Munich, DE | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-13 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 3 - Designing Interfaces
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Web Frontend Co-Learning (online)
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-03-14 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-03-19 | Virtual (Washinigton, DC, US) | Rust DC
Mid-month Rustful
2024-03-20 | Virtual (Vancouver, BC, CA)| Vancouver Rust
Rust Study/Hack/Hang-out
2024-03-21 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
2024-03-28 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup
2024-04-02 | Virtual (Buffalo, NY, US) | Buffalo Rust
Buffalo Rust User Group
2024-04-03 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 4 - Error Handling
2024-04-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
Asia
2024-03-09 | Karnataka, Bengaluru, IN | Rust Bangalore
March 2024 Rustacean Meetup
2024-03-12 | Tokyo, JP | Tokyo Rust Meetup
Building the Isograph Compiler in Rust
Europe
2024-03-06 | Cologne / Köln, DE | Rust Cologne
Macros by simple Examples
2024-03-06 | Zürich, CH | Rust Zürisee
How to (partial) Migration - March Meetup
2024-03-07 | Copenhagen, DK | Copenhagen Rust Community
Rust Hack Night #3: Embedded on Espressif's ESP32C3
2024-03-12 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-13 | Paris, FR | Paris Rustaceans
Rust Meetup in Paris
2024-03-14 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-03-19 | Aarhus, DK | Rust Aarhus
Hack Night
2024-03-19 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
Rust Interactive Session
2024-03-19 | Prague, CZ | Rust Prague
Rust Meetup @ Charles University
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-20 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #9
2024-03-21 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #6
2024-03-21 | Lille, FR | Rust Lille
Rust Lille #6: Du RSS et de L'ECS !
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-27 - 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024 - Conference
2024-03-28 | Berlin, DE | Rust Berlin
Rust and Tell
North America
2024-03-07 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-03-12 | New York, NY, US | Rust NYC
Rust NYC Monthly Meetup
2024-03-13 | Boston, MA, US | Boston Rust Meetup
Northeastern Rust Lunch
2024-03-19 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-27 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-27 | Hawthorne, CA, US | Freeform
Rust in the Physical World 🦀 Tech Talk Event at Freeform
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
My experience with C++ is that, as I’ve become more of an expert in the language, I’ve become more disillusioned with it. It’s incredibly hard to do things that you should be able to do in software. And, it’s a huge problem for me to constantly be helping other engineers debug the same bugs over and over. It’s always another use after free. I’ve probably debugged 300 of those. [...]
In our experience using the Rust ecosystem for almost three years now, I don't think we found a bug in a single Rust crate that we've pulled off the shelf. We found a bug in one of them and that was a Rust crate wrapping a C library and the bug was in the C library. The software quality that you kind of get for free is amazing.
– Carter Schultz interviewed on the filtra blog
Thanks to George Barwood 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
1 note · View note
this-week-in-rust · 2 months
Text
This Week in Rust 536
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.
Updates from Rust Community
Project/Tooling Updates
This month in Servo: gamepad support, font fallback, Space Jam, and more!
Announcing Jco 1.0
This month in Pavex, #9
argmin 0.10.0 - a Rust crate for numerical optimization
Observations/Thoughts
Text labels rendering on a map with Rust - research and design
Rust developers fear language is getting too complex and prefer bug fixes to new features
Lessons learnt from building a distributed system in Rust
How Rust Could Change Robotics
Asynchronous clean-up
Edge IoT with Rust on ESP: Ping!
ESP Embedded Rust: Command Line Interface
ESP Embedded Rust: Ping CLI App Part 2
Convert a String to int in Rust
Mastering ManuallyDrop<T> - A Guide to Explicit Resource Management in Rust
Rust, but async
Rust Walkthroughs
Matching and iterators in Rust
Practical guide to Error Handling in Rust
Building an Async Runtime with mio
[HE] [video] Rust Course
Miscellaneous
Guide to using TensorFlow in Rust
A Twist on Wadler’s Printer
Implementing API Rate Limiting in Rust
How to benchmark Rust code with Iai
Sequential-storage: efficiently store data in flash
[audio] Sentry - Rust in Production Podcast
[video] A First Look at Lifetimes in Rust
[video] Firmware for an ESP32 to read from a noise sensor in Rust
Crate of the Week
This week’s crate is web-audio-api-rs, a Rust implementation of the Web Audio API for use outside the browser.
Thanks to Otto Rottier for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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.
Call for Participation; projects and speakers
CFP - Projects
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.
Hyperswitch - [FEATURE] : add offset field to disputes list
Hyperswitch - [FEATURE]: addoffset field to mandates list
Ockam - ockam node create --identity X should fail if X doesn’t exist
Ockam - Output for ockam project ticket is improved and information is not opaque
Ockam - Output for both ockam project ticket and ockam project enroll is improved, with support for --output json
ZeroCopy - In zerocopy-derive UI tests, detect whether we’re building with RUSTFLAGS='-Wwarnings'
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
430 pull requests were merged in the last week
Avoid non-local definitions in functions (RFC #3373)
wasm: store rlib metadata in wasm object files
account for RPITIT in E0310 explicit lifetime constraint suggestion
actually use the right closure kind when checking async Fn goals
add #[rustc_no_mir_inline] for standard library UB checks
allow for a missing adt_def in NamePrivacyVisitor
avoid generalization inside of aliases
by changing some attributes to only_local, reducing encoding attributes in the crate metadate
do not const prop unions
don’t ICE on anonymous struct in enum variant
expand weak alias types before collecting constrained/referenced late bound regions + refactorings
fix panic when compiling Rocket
make intrinsic fallback bodies cross-crate inlineable
make it possible for outside crates to inspect a mir::ConstValue with the interpreter
make non-PartialEq-typed consts as patterns a hard error
mark min_exhaustive_patterns as complete
match lowering: Introduce a TestCase enum to replace most matching on PatKind
match lowering: eagerly simplify match pairs
match lowering: simplify empty candidate selection
match lowering: test one or pattern at a time
Fix liveness analysis in the presence of never patterns
no need to validate_alias_bound_self_from_param_env in assemble_alias_bound_candidates
prevent cycle in implied predicates computation
promotion: don’t promote int::MIN / -1
properly emit expected ; on #[attr] expr
provide suggestions through rustc_confusables annotations
refactor trait implementations in core::convert::num
split Diagnostics for Uncommon Codepoints: Add Individual Identifier Types
support async trait bounds in macros
unify dylib loading between proc macros and codegen backends
when encountering <&T as Clone>::clone(x) because T: Clone, suggest #[derive(Clone)]
miri: /miri many-seeds: support MIRI_SEED_END to control the end of the seed range
miri: add “cargo miri clean” command
miri: windows miri-script execution ergonomics
use br instead of a conditional when switching on a constant boolean
stabilize cfg_target_abi
improve UEFI stdio
windows: use ProcessPrng for random keys
require simd_insert, simd_extract indices to be constants
make Barrier::new() const
implement MappedMutexGuard, MappedRwLockReadGuard, and MappedRwLockWriteGuard
add “algebraic” fast-math intrinsics, based on fast-math ops that cannot return poison
remove useless 'static bounds on Box allocator
mpsc: fix race between block initialization and receiver disconnection
futures: add 'static bound to waker_ref
cargo add: Improve error when adding registry packages while vendored
cargo: Control clap colors through config
cargo: Respect CARGO_TERM_COLOR in ’–list’ and ’-Zhelp’
cargo: error messages when collecting workspace members now mention the workspace root location
cargo: support target.<triple>.rustdocflags officially
rustdoc: include crate name in links for local primitives
clippy: box_default: preserve required path segments
clippy: read_line_without_trim: detect string literal comparison and .ends_with() calls
clippy: add unnecessary_clippy_cfg lint
clippy: add new multiple_bound_locations lint
clippy: add new unnecessary_get_then_check lint
clippy: allow unused_imports, and unused_import_braces on use
clippy: don’t lint infinite_loop in external or proc macros
clippy: make redundant_guards take constness into account
clippy: unused_unit: be careful with expressions with attributes
clippy: new lint: empty docs
clippy: extend unnecessary_to_owned to handle Borrow trait in map types
clippy: fix sign-handling bugs and false negatives in cast_sign_loss
clippy: fix suggestion error in useless_vec
clippy: fix no_effect_underscore_binding firing on ignored parameters of async fns
clippy: look for implied_bounds_in_impls in more positions
clippy: take lifetime extension into account in ref_as_ptr
rust-analyzer: add assist for filling fields by replacing ellipsis in record syntax
rust-analyzer: add short flag -V for consistency with other rust tooling
rust-analyzer: add “make tuple” tactic to term search
rust-analyzer: replace_filter_map_next_with_find_map shouldn’t work for dyn trait
rust-analyzer: don’t panic on synthetic syntax in inference diagnostics
rust-analyzer: fix completions panicking with certain macro setups
rust-analyzer: fix deadlock in recreate_crate_graph <-> file_line_index
rust-analyzer: fix modules in blocks not resolving in ide layer
rust-analyzer: fix proc-macro server not accounting for string delimiters correctly
rust-analyzer: fix recompiles due to RUSTC_BOOTSTRAP
rust-analyzer: panic when inlining callsites inside macros’ parameters
rust-analyzer: merge BorrowKind::Unique into BorrowKind::Mut
rust-analyzer: speed up Method Completions By Taking Advantage of Orphan Rules
Rust Compiler Performance Triage
A rare week where regressions out powered improvements to make the compiler roughly half a percent slower on average on nearly 100 benchmarks. Some regressions have fixes in the pipeline, but some remain elusive or were introduced to address correctness issues.
Triage done by @rylev. Revision range: 5af21304..71ffdf7f
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 1.0% [0.2%, 4.4%] 69 Regressions ❌ (secondary) 1.4% [0.2%, 4.9%] 66 Improvements ✅ (primary) -1.1% [-3.3%, -0.2%] 28 Improvements ✅ (secondary) -0.6% [-1.5%, -0.2%] 33 All ❌✅ (primary) 0.4% [-3.3%, 4.4%] 97
4 Regressions, 6 Improvements, 5 Mixed; 2 of them in rollups 58 artifact comparisons made in total
Full report here
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 entered Final Comment Period this week.
Tracking Issues & PRs
Rust
[disposition: merge] Lint singleton gaps after exclusive ranges
[disposition: merge] Tracking Issue for slice::split_at_unchecked() and split_at_mut_unchecked()
[disposition: merge] Tracking Issue for generic NonZero
[disposition: merge] Made INVALID_DOC_ATTRIBUTES lint deny by default
[disposition: merge] Tracking Issue for ARM CRC32 intrinsics
[disposition: merge] use confstr(_CS_DARWIN_USER_TEMP_DIR, ...) as a TMPDIR fallback on Darwin
New and Updated RFCs
[new] RFC: RArrow Dereference for Pointer Ergonomics
Upcoming Events
Rusty Events between 2024-02-28 - 2024-03-27 🦀
Virtual
2024-02-29 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-02-29 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Surfing the Rusty Wireless Waves with the ESP32-C3 Board
2024-03-06 | Virtual (Dublin, IE) | Rust Dublin
An intro to nom, parsing made easy for Rustaceans
2024-03-06 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-03-07 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-12 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-03-12 | Hybrid (Virtual + In-person) Munich, DE | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Web Frontend Co-Learning (online)
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-03-14 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
Europe
2024-02-29 | Berlin, DE | Rust Berlin
Rust and Tell - Season start 2024
2024-02-29 | Copenhagen, DK | Copenhagen Rust Community
Rust Meetup #44 sponsored by Bang & Olufsen
2024-03-06 | Zürich, CH | Rust Zürisee
How to (partial) Migration - March Meetup
2024-03-12 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-13 | Paris, FR | Paris Rustaceans
Rust Meetup in Paris
2024-03-14 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-03-19 | Aarhus, DK | Rust Aarhus
Hack Night
2024-03-19 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
Rust Interactive Session
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-21 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #6
2024-03-21 | Lille, FR | Rust Lille
Rust Lille #6: Du RSS et de L'ECS !
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-26, 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024
North America
2024-02-28 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-02-28 | Chicago, IL, US | Deep Dish Rust
Rust Happy Hour
2024-03-04 | Cambridge, MA, US | Boston Rust Meetup
Central Cambridge Rust Lunch
2024-03-07 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-03-13 | Boston, MA, US | Boston Rust Meetup
Northeastern Rust Lunch
2024-03-19 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-03-27 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-27 | Hawthorne, CA, US | Freeform
Rust in the Physical World 🦀 Tech Talk Event at Freeform
Oceania
2024-02-29 | Brisbane, QLD, AU | Rust Brisbane
February Meetup
2024-03-05 | Auckland, NZ | Rust AKL
Rust AKL: Introduction to Embedded Rust + The State of Rust UI
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
That would take 18 million terabytes of RAM. You don’t have that much memory.
– Alice Ryhl answering “What is MAX array size” on rust-users
Thanks to Zeroexcuses 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
1 note · View note
this-week-in-rust · 2 months
Text
This Week in Rust 536
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.
Updates from Rust Community
Project/Tooling Updates
This month in Servo: gamepad support, font fallback, Space Jam, and more!
Announcing Jco 1.0
This month in Pavex, #9
argmin 0.10.0 - a Rust crate for numerical optimization
Observations/Thoughts
Text labels rendering on a map with Rust - research and design
Rust developers fear language is getting too complex and prefer bug fixes to new features
Lessons learnt from building a distributed system in Rust
How Rust Could Change Robotics
Asynchronous clean-up
Edge IoT with Rust on ESP: Ping!
ESP Embedded Rust: Command Line Interface
ESP Embedded Rust: Ping CLI App Part 2
Convert a String to int in Rust
Mastering ManuallyDrop<T> - A Guide to Explicit Resource Management in Rust
Rust, but async
Rust Walkthroughs
Matching and iterators in Rust
Practical guide to Error Handling in Rust
Building an Async Runtime with mio
[HE] [video] Rust Course
Miscellaneous
Guide to using TensorFlow in Rust
A Twist on Wadler's Printer
Implementing API Rate Limiting in Rust
How to benchmark Rust code with Iai
Sequential-storage: efficiently store data in flash
[audio] Sentry - Rust in Production Podcast
[video] A First Look at Lifetimes in Rust
[video] Firmware for an ESP32 to read from a noise sensor in Rust
Crate of the Week
This week's crate is web-audio-api-rs, a Rust implementation of the Web Audio API for use outside the browser.
Thanks to Otto Rottier for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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.
Call for Participation; projects and speakers
CFP - Projects
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.
Hyperswitch - [FEATURE] : add offset field to disputes list
Hyperswitch - [FEATURE]: addoffset field to mandates list
Ockam - ockam node create --identity X should fail if X doesn't exist
Ockam - Output for ockam project ticket is improved and information is not opaque
Ockam - Output for both ockam project ticket and ockam project enroll is improved, with support for --output json
ZeroCopy - In zerocopy-derive UI tests, detect whether we're building with RUSTFLAGS='-Wwarnings'
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
430 pull requests were merged in the last week
Avoid non-local definitions in functions (RFC #3373)
wasm: store rlib metadata in wasm object files
account for RPITIT in E0310 explicit lifetime constraint suggestion
actually use the right closure kind when checking async Fn goals
add #[rustc_no_mir_inline] for standard library UB checks
allow for a missing adt_def in NamePrivacyVisitor
avoid generalization inside of aliases
by changing some attributes to only_local, reducing encoding attributes in the crate metadate
do not const prop unions
don't ICE on anonymous struct in enum variant
expand weak alias types before collecting constrained/referenced late bound regions + refactorings
fix panic when compiling Rocket
make intrinsic fallback bodies cross-crate inlineable
make it possible for outside crates to inspect a mir::ConstValue with the interpreter
make non-PartialEq-typed consts as patterns a hard error
mark min_exhaustive_patterns as complete
match lowering: Introduce a TestCase enum to replace most matching on PatKind
match lowering: eagerly simplify match pairs
match lowering: simplify empty candidate selection
match lowering: test one or pattern at a time
Fix liveness analysis in the presence of never patterns
no need to validate_alias_bound_self_from_param_env in assemble_alias_bound_candidates
prevent cycle in implied predicates computation
promotion: don't promote int::MIN / -1
properly emit expected ; on #[attr] expr
provide suggestions through rustc_confusables annotations
refactor trait implementations in core::convert::num
split Diagnostics for Uncommon Codepoints: Add Individual Identifier Types
support async trait bounds in macros
unify dylib loading between proc macros and codegen backends
when encountering <&T as Clone>::clone(x) because T: Clone, suggest #[derive(Clone)]
miri: /miri many-seeds: support MIRI_SEED_END to control the end of the seed range
miri: add "cargo miri clean" command
miri: windows miri-script execution ergonomics
use br instead of a conditional when switching on a constant boolean
stabilize cfg_target_abi
improve UEFI stdio
windows: use ProcessPrng for random keys
require simd_insert, simd_extract indices to be constants
make Barrier::new() const
implement MappedMutexGuard, MappedRwLockReadGuard, and MappedRwLockWriteGuard
add "algebraic" fast-math intrinsics, based on fast-math ops that cannot return poison
remove useless 'static bounds on Box allocator
mpsc: fix race between block initialization and receiver disconnection
futures: add 'static bound to waker_ref
cargo add: Improve error when adding registry packages while vendored
cargo: Control clap colors through config
cargo: Respect CARGO_TERM_COLOR in '--list' and '-Zhelp'
cargo: error messages when collecting workspace members now mention the workspace root location
cargo: support target.<triple>.rustdocflags officially
rustdoc: include crate name in links for local primitives
clippy: box_default: preserve required path segments
clippy: read_line_without_trim: detect string literal comparison and .ends_with() calls
clippy: add unnecessary_clippy_cfg lint
clippy: add new multiple_bound_locations lint
clippy: add new unnecessary_get_then_check lint
clippy: allow unused_imports, and unused_import_braces on use
clippy: don't lint infinite_loop in external or proc macros
clippy: make redundant_guards take constness into account
clippy: unused_unit: be careful with expressions with attributes
clippy: new lint: empty docs
clippy: extend unnecessary_to_owned to handle Borrow trait in map types
clippy: fix sign-handling bugs and false negatives in cast_sign_loss
clippy: fix suggestion error in useless_vec
clippy: fix no_effect_underscore_binding firing on ignored parameters of async fns
clippy: look for implied_bounds_in_impls in more positions
clippy: take lifetime extension into account in ref_as_ptr
rust-analyzer: add assist for filling fields by replacing ellipsis in record syntax
rust-analyzer: add short flag -V for consistency with other rust tooling
rust-analyzer: add "make tuple" tactic to term search
rust-analyzer: replace_filter_map_next_with_find_map shouldn't work for dyn trait
rust-analyzer: don't panic on synthetic syntax in inference diagnostics
rust-analyzer: fix completions panicking with certain macro setups
rust-analyzer: fix deadlock in recreate_crate_graph <-> file_line_index
rust-analyzer: fix modules in blocks not resolving in ide layer
rust-analyzer: fix proc-macro server not accounting for string delimiters correctly
rust-analyzer: fix recompiles due to RUSTC_BOOTSTRAP
rust-analyzer: panic when inlining callsites inside macros' parameters
rust-analyzer: merge BorrowKind::Unique into BorrowKind::Mut
rust-analyzer: speed up Method Completions By Taking Advantage of Orphan Rules
Rust Compiler Performance Triage
A rare week where regressions out powered improvements to make the compiler roughly half a percent slower on average on nearly 100 benchmarks. Some regressions have fixes in the pipeline, but some remain elusive or were introduced to address correctness issues.
Triage done by @rylev. Revision range: 5af21304..71ffdf7f
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 1.0% [0.2%, 4.4%] 69 Regressions ❌ (secondary) 1.4% [0.2%, 4.9%] 66 Improvements ✅ (primary) -1.1% [-3.3%, -0.2%] 28 Improvements ✅ (secondary) -0.6% [-1.5%, -0.2%] 33 All ❌✅ (primary) 0.4% [-3.3%, 4.4%] 97
4 Regressions, 6 Improvements, 5 Mixed; 2 of them in rollups 58 artifact comparisons made in total
Full report here
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 entered Final Comment Period this week.
Tracking Issues & PRs
Rust
[disposition: merge] Lint singleton gaps after exclusive ranges
[disposition: merge] Tracking Issue for slice::split_at_unchecked() and split_at_mut_unchecked()
[disposition: merge] Tracking Issue for generic NonZero
[disposition: merge] Made INVALID_DOC_ATTRIBUTES lint deny by default
[disposition: merge] Tracking Issue for ARM CRC32 intrinsics
[disposition: merge] use confstr(_CS_DARWIN_USER_TEMP_DIR, ...) as a TMPDIR fallback on Darwin
New and Updated RFCs
[new] RFC: RArrow Dereference for Pointer Ergonomics
Upcoming Events
Rusty Events between 2024-02-28 - 2024-03-27 🦀
Virtual
2024-02-29 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-02-29 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Surfing the Rusty Wireless Waves with the ESP32-C3 Board
2024-03-06 | Virtual (Dublin, IE) | Rust Dublin
An intro to nom, parsing made easy for Rustaceans
2024-03-06 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-03-07 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-12 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-03-12 | Hybrid (Virtual + In-person) Munich, DE | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Web Frontend Co-Learning (online)
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-03-14 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
Europe
2024-02-29 | Berlin, DE | Rust Berlin
Rust and Tell - Season start 2024
2024-02-29 | Copenhagen, DK | Copenhagen Rust Community
Rust Meetup #44 sponsored by Bang & Olufsen
2024-03-06 | Zürich, CH | Rust Zürisee
How to (partial) Migration - March Meetup
2024-03-12 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-13 | Paris, FR | Paris Rustaceans
Rust Meetup in Paris
2024-03-14 | Reading, UK | Reading Rust Workshop
Reading Rust Meetup at Browns
2024-03-19 | Aarhus, DK | Rust Aarhus
Hack Night
2024-03-19 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
Rust Interactive Session
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-21 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #6
2024-03-21 | Lille, FR | Rust Lille
Rust Lille #6: Du RSS et de L'ECS !
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-26, 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024
North America
2024-02-28 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-02-28 | Chicago, IL, US | Deep Dish Rust
Rust Happy Hour
2024-03-04 | Cambridge, MA, US | Boston Rust Meetup
Central Cambridge Rust Lunch
2024-03-07 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-03-13 | Boston, MA, US | Boston Rust Meetup
Northeastern Rust Lunch
2024-03-19 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2024-03-27 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-27 | Hawthorne, CA, US | Freeform
Rust in the Physical World 🦀 Tech Talk Event at Freeform
Oceania
2024-02-29 | Brisbane, QLD, AU | Rust Brisbane
February Meetup
2024-03-05 | Auckland, NZ | Rust AKL
Rust AKL: Introduction to Embedded Rust + The State of Rust UI
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
That would take 18 million terabytes of RAM. You don't have that much memory.
– Alice Ryhl answering "What is MAX array size" on rust-users
Thanks to Zeroexcuses 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
1 note · View note
this-week-in-rust · 2 months
Text
This Week in Rust 535
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.
Updates from Rust Community
Official
2023 Annual Rust Survey Results
Rust participates in Google Summer of Code 2024
Leadership Council March Representative Selections
Foundation
Save the Date: RustConf 2024 – September 10-13
Second Security Initiative Report Details Rust Security Advancements
Project/Tooling Updates
Bevy 0.13
Bevy XPBD 0.4: Collider Agnosticism, Layer Rework, and Bevy 0.13
uv: Python packaging in Rust
git-cliff: What’s new in 2.0.0? (highly customizable changelog generator)
rustc_codegen_gcc: Progress Report #30
RustRover Q4 2023 Feature Updates Retrospective
rust-analyzer changelog #221
Anouncing Stabby 3.0
argmin_testfunctions 0.2.0: test functions for optimization problems in Rust and Python
vscode-rustup released: interface with rustup as a VSCode extension
OpenPGP-card-tools 0.10.0 released. The project provides the oct commandline tool for inspecting, configuring and using OpenPGP card devices such as Nitrokey or Yubikey.
Rust Client for Timeplus Proton SQL Streaming
Observations/Thoughts
FuturesUnordered and the order of futures
Rust Tooling: 8 tools that will increase your productivity
Writing down my mental model of unsafe
How can Rust be so fast in the TechEmpower Web Framework Benchmarks?
Rust Walkthroughs
From 1s to 4ms
Translating OpenStreetMap data to HTML5 Canvas with Rust and WebAssembly
macros_rule!
Implementing JWT Authentication in Rust
Deploying Axum to Lambda and ECS, using Lambda Web Adapter
Rust/C++ Interop Part 3 - Cxx
[FR] Les closures en Rust
[video] Safe Rust AIN’T SAFE!? (cve-rs)
Miscellaneous
[video] Release-plz: releasing crates like it’s 2023 (RustLab 2023)
Crate of the Week
This week’s crate is kind, a helper crate for typed UUIDs.
Thanks to Denys Séguret for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Testing
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:
RFC: Checking conditional compilation at compile time
Testing steps
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.
Call for Participation; projects and speakers
CFP - Projects
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 - Syntax highlighting for fenced code blocks, in command help output, on Linux works
Ockam - Shut down Worker/Processor if initialization failed
Ockam - Output for ockam project ticket is improved and information is not opaque
Hyperswitch - [FEATURE] : add offset field to disputes list
Hyperswitch - [FEATURE]: addoffset field to mandates list
Hyperswitch - [FEATURE]: add pagination support for customers list
If you are a Rust project owner and are looking for contributors, please submit tasks here.
CFP - Speakers
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
If you are an event organizer hoping to expand the reach of your event, please submit a link to the submission website through a PR to TWiR.
Updates from the Rust Project
508 pull requests were merged in the last week
implicitly enable evex512 if avx512 is enabled
const_mut_refs: allow mutable pointers to statics
macro_rules: Preserve all metavariable spans in a global side table
add APIs for fetching foreign items
add rust.frame-pointers config option
add more checks for unnamed_fields during HIR analysis
allow AST and HIR visitors to return ControlFlow
allow mutable references in const values when they point to no memory
always evaluate free constants and statics, even if previous errors occurred
avoid an ICE in diagnostics
be less confident when dyn suggestion is not checked for object safety
check normalized call signature for WF in mir typeck
consider principal trait ref’s auto-trait super-traits in dyn upcasting
continue compilation after check_mod_type_wf errors
continue compilation even if inherent impl checks fail
continue reporting remaining errors instead of silently dropping them
detect when method call on argument could be removed to fulfill failed trait bound
fix an ICE in the recursion lint
ignore unsized types when trying to determine the size of the original type
make ConstPropLint lint run on promoteds
make async Fn trait kind errors better
properly deal with weak alias types as self types of impls
rename ConstPropLint to KnownPanicsLint
store static initializers in metadata instead of the MIR of statics
suggest into_iter() when Iterator method called on impl IntoIterator
trigger unsafe_code lint on invocations of global_asm
use fulfillment in next trait solver coherence
miri: implement x86 AVX intrinsics
optimize delayed_bug handling
optimize away poison guards when std is built with panic=abort
overhaul Diagnostic and DiagnosticBuilder
implement Instant for UEFI
implement Default for AsciiChar
store core::str::CharSearcher::utf8_size as u8
make File::read_to_end less special
implement NonZero traits generically
make NonZero::get generic
make io::BorrowedCursor::advance safe
make is_nonoverlapping #[inline]
specialize flattening iterators with only one inner item
specialize some methods of io::Chain
rename MaybeUninit::write_slice
don’t use mem::zeroed in vec::IntoIter
optimize VecDeque::drain for (half-)open ranges
fix BTreeMap’s Cursor::remove_{next,prev}
add Future and IntoFuture to the 2024 prelude
hashbrown: inline tweaks to HashTable
hashbrown: make HashSet::insert return OccupiedEntry
codegen_gcc: correctly handle --use-system-gcc
codegen_gcc: implement dummy emit=llvm-ir
codegen_gcc: use the default rust mangling
codegen_cranelift: fix simd_select_bitmask on big-endian systems
codegen_cranelift: fix download hash check on big-endian systems
cargo add: Ensure users know a feature is being created
cargo add: Remove inconsistent period
cargo test: Suggest -- for libtest arguments
cargo: respect rust-version when generating lockfile
rustdoc: correctly handle long crate names on mobile
rustdoc: cross-crate re-exports: correctly render late-bound params in source order even if early-bound params are present
rustdoc: fix handling of doc_auto_cfg feature for cfg attributes on glob reexport
rustfmt: fix error trying to format unnormalized UTF8
format async trait bounds in rustfmt
add clippy into the known cfg list
clippy: add new lint deprecated_clippy_cfg_attr
clippy: case_sensitive_file_extension_comparisons: Don’t trigger on digits-only extensions
clippy: implied_bounds_in_impls: avoid linting on overlapping associated tys
clippy: incompatible_msrv: allow expressions that come from desugaring
clippy: new_without_default: Now emits on const fns
clippy: allow negative literals in redundant_guards
clippy: check trait items in min_ident_chars
clippy: default test output conflict handling to error
clippy: ensure ASM syntax detect global_asm! and asm! only on x86 architectures
clippy: add check for identical guards in lint match_same_arms
clippy: make #[allow] work on field for pub_underscore_fields
clippy: ignore imported items in min_ident_chars
rust-analyzer: activate on top level Cargo.toml and rust-project.json files
rust-analyzer: deduplicate references when some of them are in macro expansions
rust-analyzer: create alias when renaming an import
rust-analyzer: add non-exhaustive-let diagnostic
rust-analyzer: add unresolved-ident diagnostic
rust-analyzer: support multiple tab stops for completions in VSCode
rust-analyzer: add basic support for become expr/tail calls
rust-analyzer: don’t add \ before {
rust-analyzer: don’t show type mismatches for {unknown} to non-{unknown} mismatches
rust-analyzer: fix “needless return” diagnostic for trailing item declarations
rust-analyzer: fix build scripts not being rebuilt in some occasions
rust-analyzer: fix false positives for “unnecessary else” diagnostic
rust-analyzer: fix snippets being placed leftwards of where they should be
rust-analyzer: improve recover on = for record field initializer and pattern
rust-analyzer: only complete traits in impl .. for
rust-analyzer: place snippets correctly in multi-edit assists
rust-analyzer: server hanging up on build script task
Rust Compiler Performance Triage
Relatively few PRs affecting performance, but massive improvements thanks to the update to LLVM 18 (PR #12005), as well as the merging of two related compiler queries (PR #120919) and other small improvements from a rollup (PR #121055).
Triage done by @pnkfelix. Revision range: 74c3f5a1..5af21304
3 Regressions, 1 Improvements, 6 Mixed; 1 of them in rollups 65 artifact comparisons made in total
Full report here
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
eRFC: Iterate on and stabilize libtest’s programmatic output
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
RFC: Make Cargo respect minimum supported Rust version (MSRV) when selecting dependencies
Tracking Issues & PRs
Rust
[disposition: merge] change equate for binders to not rely on subtyping
[disposition: merge] Implement RFC 3373: Avoid non-local definitions in functions
[disposition: merge] Tracking Issue for waker_getters
[disposition: merge] Stabilize the #[diagnostic] namespace and #[diagnostic::on_unimplemented] attribute
[disposition: merge] Tracking Issue for cfg-target-abi
[disposition: merge] make non-PartialEq-typed consts as patterns a hard error
[disposition: close] Allow ?-converting from Result<T, E> in functions returning Option<Result<T, E>>
[disposition: merge] Add Read Impl for &Stdin
[disposition: merge] Make Barrier::new() const
[disposition: close] Implement Future for Option<F>
New and Updated RFCs
[new] is operator for pattern-matching and binding
Upcoming Events
Rusty Events between 2024-02-21 - 2024-03-20 🦀
Virtual
2024-02-21 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club: Chapter 2 - Types
2024-02-21 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2024-02-22 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-02-27 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-02-29 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack and Learn | Mirror: Rust Hack n Learn Meetup | Mirror: Berline.rs page
2024-02-29 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Surfing the Rusty Wireless Waves with the ESP32-C3 Board
2024-03-06 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-03-07 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-03-12 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-03-12 | Hybrid (Virtual + In-person) Munich, DE | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-14 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Web Frontend Co-Learning (online)
2024-03-21 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2024-03-26 | Virtual + In Person (Barcelona, ES) | BcnRust
13th BcnRust Meetup - Stream
Europe
2024-02-21 | Lyon, FR | Rust Lyon
Rust Lyon Meetup #8
2024-02-22 | Aarhus, DK | Rust Aarhus
Rust and Talk at Partisia
2024-02-29 | Berlin, DE | Rust Berlin
Rust and Tell - Season start 2024
2024-03-12 | Munich, DE + Virtual | Rust Munich
Rust Munich 2024 / 1 - hybrid
2024-03-19 | Aarhus, DK | Rust Aarhus
Hack Night
2024-03-20 | Girona, ES | Rust Girona
Introduction to programming Microcontrollers with Rust
2024-03-26 | Barcelona, ES + Virtual | BcnRust
13th BcnRust Meetup
2024-03-26, 2024-03-28 | London, UK | Rust Nation UK
Rust Nation 2024
North America
2024-02-21 | Boston, MA, US | Boston Rust Meetup
Evening Boston Rust Meetup at Microsoft, February 21
2024-02-22 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2024-02-28 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-03-07 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
Oceania
2024-02-27 | Canberra, ACT, AU | Canberra Rust User Group
February Meetup
2024-02-27 | Sydney, NSW, AU | Rust Sydney
🦀 spire ⚡ & Quick
2024-02-29 | Brisbane, QLD, AU | Rust Brisbane
February Meetup
2024-03-05 | Auckland, NZ | Rust AKL
Rust AKL: Introduction to Embedded Rust + The State of Rust UI
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.
Jobs
Please see the latest Who’s Hiring thread on r/rust
Quote of the Week
Shared mutable state is evil, and you can solve it by forbidding mutation, or by forbidding sharing. Rust supports both.
– kornel on Lobste.rs
Thanks to Aleksey Kladov 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
1 note · View note