#rustc_codegen_gcc
Explore tagged Tumblr posts
Text
LLVM Weekly - #595, May 26th 2025
AsiaLLVM registration last call, GCC backend for rustc milestone, release process changes proposal, integrated distributed ThinLTO, and more
0 notes
Link
0 notes
Text
Rustc_codegen_GCC can now bootstrap rustc
https://blog.antoyo.xyz/rustc_codegen_gcc-progress-report-10 Comments
0 notes
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
Text
This Week in Rust 531
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
Q4 2023 Recap from Rebecca Rumbul
Project/Tooling Updates
Ruffle 2023 in review
Four challenges cargo-semver-checks has yet to tackle
rustc_codegen_gcc: Progress Report #29
Roadmap for the Xilem backend in 2024
rust-analyzer changelog #217
pq-sys 0.5.0
What's new in SeaORM 0.12.x
Rust on Espressif chips - January 24 2024
Observations/Thoughts
Making Rust binaries smaller by default
My Best and Worst Deadlock in Rust
Why SQL hang for exactly 940s? TCP and Async Rust!
Making Async Rust Reliable
Identifying Rust’s collect::() memory leak footgun
[video] embassy is now on crates.io
[video] Rust full stack web frameworks have a bright future
[video] Rust Halifax - Rust & Tell #1
[video] Why Rust will keep growing in 2024
Rust Walkthroughs
Using mem::take to reduce heap allocations
Writing your own Rust linter
Using Serde in Rust
Parsing JSON in Rust
Billion-row challenge: Rust walkthrough
Embassy on ESP: Timers
Supporting LoRa on the SparkFun expLoRaBLE Thing Plus with Rust
How to work with !Sized types in Rust
Rocket - logging in the web application
Rocket - access custom configuration in the routes
Testing with tempfiles and environment variables
Research
Profiling Programming Language Learning
Rust-lancet: Automated Ownership-Rule-Violation Fixing with Behavior Preservation
Crate of the Week
This week's crate is apistos, an OpenAPI documentation tool.
Thanks to Romain Lebran for the self-suggestion!
Please submit your suggestions and votes for next week!
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 - Have a single SqlxDatabase instance per process * Ockam - Improve database migrations to pair sql and rust migration code * Ockam - Make install.sh not fail during upgrade process * Hyperswitch - [FEATURE]: Make cache configuration configurable at runtime * Hyperswitch - [FEATURE]: Implement Code cov for local system using makefile * Hyperswitch - [FEATURE]: Setup code coverage for local tests & CI * Hyperswitch - [FEATURE]: Add domain type for client secret * Hyperswitch - [FEATURE]: Have get_required_value to use ValidationError in OptionExt
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
453 pull requests were merged in the last week
HashMap/HashSet: forward fold implementations of iterators
dead_code treats #[repr(transparent)] the same as #[repr(C)]
fix(rust-analyzer): use new pkgid spec to compare
large_assignments: Lint on specific large args passed to functions
maybe_lint_impl_trait: separate is_downgradable from is_object_safe
never_patterns: Count ! bindings as diverging
never_patterns: typecheck never patterns
pat_analysis: Don't rely on contiguous VariantIds outside of rustc
pattern_analysis: Remove Ty: Copy bound
proc_macro: Add Literal::c_string constructor
single_use_lifetimes: Don't suggest deleting lifetimes with bounds
add #[track_caller] to the "From implies Into" impl
add Ipv6Addr::is_ipv4_mapped
add PatKind::Err to AST/HIR
add help message for exclusive_range_pattern error
add private NonZero<T> type alias
add way to express that no values are expected with check-cfg
added NonZeroXxx::from_mut(_unchecked)?
allow any const expression blocks in thread_local!
always use RevealAll for const eval queries
avoid ICEs in trait names without dyn
consolidate logic around resolving built-in coroutine trait impls
deny braced macro invocations in let-else
detect NulInCStr error earlier
improve let_underscore_lock
improved collapse_debuginfo attribute, added command-line flag
make unsafe_op_in_unsafe_fn migrated in edition 2024
restrict access to the private field of newtype indexes
simplify closure_env_ty and closure_env_param
suggest .swap() when encountering conflicting borrows from mem::swap on a slice
undeprecate lint unstable_features and make use of it in the compiler
make MIR pass name a compile-time constant
make stable_mir::with_tables sound
SMIR: make the remaining "private" fields actually private
use an interpreter in MIR jump threading
use implied bounds compat mode in MIR borrowck
validate AggregateKind types in MIR
sandwich MIR optimizations between DSE
cache local DefId-keyed queries without hashing
pack u128 in the compiler to mitigate new alignment
use UnhashMap for a few more maps
fold arithmetic identities in GVN
optimize large array creation in const-eval
implement iterator specialization traits on more adapters
optimize EscapeAscii's Display and CStr's Debug
stabilise bound_map
stabilize round_ties_even
stabilize slice_first_last_chunk
stabilize single-field offset_of!
implement strict integer operations that panic on overflow
core: introduce split_at{,_mut}_checked
un-hide iter::repeat_n
fix deallocation with wrong allocator in (A)Rc::from_box_in
use bool instead of PartialOrd as return value of the comparison closure in {slice,Iterator}::is_sorted_by
regex: make Input::new guard against incorrect AsRef implementations
cargo-rustdoc: use same path by output format logic everywhere
cargo: use pkgid spec in in JSON messages
cargo: remap common prefix only
cargo doc: add a heading to highlight "How to find features enabled on dependencies"
cargo: inherit jobserver from env for all kinds of runner
cargo: fix precise-prerelease tracking link
cargo: go back to passing an empty values() when no features are declared
cargo: improve GitHub Actions CI config
rustdoc: Allows links in headings
rustdoc: hide modals when resizing the sidebar
rustfmt: check that a token can begin a nonterminal kind before parsing it as a macro arg
rustfmt: add config option generated_marker_line_search_limit
clippy: blocks_in_conditions: do not warn if condition comes from macro
clippy: default_numeric_fallback: improve const context detection
clippy: no_effect_underscore_binding: _ prefixed variables can be used
clippy: unused_io_amount captures Ok(_)s
clippy: add suspicious_open_options lint
clippy: correctly handle type relative in trait_duplication_in_bounds lint
clippy: don't emit derive_partial_eq_without_eq lint if the type has the non_exhaustive attribute
clippy: find function path references early in the same lint pass
clippy: fix FP on semicolon_if_nothing_returned
clippy: fix multiple_crate_versions to correctly normalize package names to avoid missing the local one
clippy: fix warning span for no_effect_underscore_binding
clippy: respect #[allow] attributes in single_call_fn lint
clippy: improve wording and fix dead link in description of arc_with_non_send_sync lint
rust-analyzer: add "One" import granularity
rust-analyzer: add a new config to allow renaming of non-local defs
rust-analyzer: goto type actions for notable trait hovers
rust-analyzer: show additional value information when hovering over literals
rust-analyzer: show notable implemented traits on hover
rust-analyzer: add error recovery for use_tree_list parsing
rust-analyzer: fix panic when extracting struct from enum variant
rust-analyzer: fix progress reporting getting stuck
rust-analyzer: handle SelfParam better in "Inline call"
rust-analyzer: include for construct in convert to guarded return conditions
rust-analyzer: infer OUT_DIR when workspace root contains a symlink
rust-analyzer: make value_ty query fallible
rust-analyzer: parse macro_rules as macro name
Rust Compiler Performance Triage
This week saw a bunch of regressions caused by correctness fixes and in general doing more work in the compiler. These were offset by many improvements (especially around hashing in the compiler) that improved performance by ~2% across a large number of benchmarks. Don't get too excited about the large 45+% wins though, these were only for tiny benchmarks like helloworld. They were caused by a change in Cargo which introduces stripping of debug symbols from Rust release binaries by default, and in turn also improves compilation time for small crates.
Triage done by @kobzol. Revision range: f9c2421a..d6b151fc
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 0.7% [0.2%, 1.5%] 11 Regressions ❌ (secondary) 2.2% [0.2%, 9.9%] 26 Improvements ✅ (primary) -3.2% [-47.5%, -0.2%] 191 Improvements ✅ (secondary) -7.9% [-46.5%, -0.1%] 123 All ❌✅ (primary) -3.0% [-47.5%, 1.5%] 202
4 Regressions, 4 Improvements, 9 Mixed; 4 of them in rollups 48 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
[disposition: close] Add a default flag for enum documentation
[disposition: merge] impl From<&[T; N]> for Cow<[T]>
[disposition: merge] Tracking Issue for array_methods
Language Reference
No Language Reference RFCs entered Final Comment Period this week.
Unsafe Code Guidelines
No Unsafe Code Guideline RFCs entered Final Comment Period this week.
New and Updated RFCs
eRFC: Iterate on and stabilize libtest's programmatic output
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.
Upcoming Events
Rusty Events between 2024-01-24 - 2024-02-21 🦀
Virtual
2024-01-24 | Virtual (Berlin, DE) | WeAreDevelopers Community
WeAreDevelopers LIVE - Rust Day
2024-01-25 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-01-25 | Virtual (Linz, AT) | Rust Linz
Rust Meetup Linz - 36th Edition
2024-01-25 | Virtual (Mexico City, DF, MX) | Rust MX
Iniciando 2024 con Rust
2024-01-28 | Virtual (Wrocław, PL) | Stacja IT Wrocław
Wprowadzenie do języka Rust
2024-01-30 | Virtual | Bevy Game Development
Bevy Meetup #1
2024-01-30 | Virtual (Buffalo, NY, US) | Buffalo Rust User Group
Buffalo Rust User Group
2024-01-30 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2024-01-31 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust for Rustaceans Book Club launch!
2024-02-01 | Virtual + In Person (Barcelona, ES) | BcnRust
12th BcnRust Meetup - Stream
2024-02-01 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack n Learn | Mirror: Rust Hack n Learn
2024-02-03 | Virtual + In-person (Brussels, BE) | FOSDEM 2024
FOSDEM Conference: Rust devroom - talks
2024-02-03 | Virtual (Kampala, UG) | Rust Circle
Rust Circle Meetup
2024-02-04 | Virtual | Rust Maven
Web development with Rocket - In English
2024-02-07 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2024-02-08 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2024-02-08 | Virtual (Nürnberg, DE) | Rust Nüremberg
Rust Nürnberg online
2024-02-10 | Virtual (Wrocław, PL) | Stacja IT Wrocław
Rust – budowanie narzędzi działających w linii komend
2024-02-13 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2024-02-15 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
Rust Hack n Learn | Mirror: Rust Hack n Learn
2024-02-21 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
Europe
2024-01-24 | Zagreb, HR | impl Zagreb for Rust
Rust Meetup 2024/01: WebGPU intro using Rust
2024-01-25 | Augsburg, DE | Rust Meetup Augsburg
Augsburg Rust Meetup #5: Async Part2 and Async in action
2024-01-25 | Vienna, AT | Rust Vienna
Rust Vienna Meetup - January - Blockchains and Data Pipelines
2024-02-01 | Hybrid (Barcelona, ES) | BcnRust
12th BcnRust Meetup
2024-02-03 | Brussels, BE | FOSDEM '24
FOSDEM '24 Conference: Rust devroom - talks | Rust Aarhus FOSDEM Meetup
2024-02-03 | Nürnberg, BY, DE | Paessler Rust Camp 2024
Paessler Rust Camp 2024
2024-02-06 | Bremen, DE | Rust Meetup Bremen
Rust Meetup Bremen [1]
2024-02-07 | London, UK | Rust London User Group
Rust for the Web — Mainmatter x Shuttle Takeover
2024-02-08 | Bern, CH | Rust Bern
Rust Bern Meetup #1 2024 🦀
North America
2024-01-24 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2024-01-27-28 | Calgary, AB, CA | Rust Calgary
Harnessing Rust for Real-World Problems hackathon: Day 1
Harnessing Rust for Real-World Problems hackathon: Day 2
2024-01-25 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Study/Hack/Hang-out
2024-01-30 | Cambridge, MA, US | Boston Rust Meetup
Harvard Square Rust Lunch
2024-02-07 | Brookline, MA, US | Boston Rust Meetup
Coolidge Corner Brookline Rust Lunch, Feb 7
2024-02-12 | Minneapolis, MN, US | Minneapolis Rust Meetup
Minneapolis Rust: Open Source Contrib Hackathon & Happy Hour
2024-02-13 | New York, NY, US | Rust NYC
Rust NYC Monthly Mixer
2024-02-13 | Seattle, WA, US | Cap Hill Rust Coding/Hacking/Learning
Rusty Coding/Hacking/Learning Night
2024-02-15 | Boston, MA, US | Boston Rust Meetup
Back Bay Rust Lunch, Feb 15
2024-02-15 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
Oceania
2024-02-06 | Perth, WA, AU | Perth Rust Meetup Group
Rust Feb 2024 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
The functional ML roots of the language, Graydon's first Rust compiler was written in OCaml, shine through, influencing it right from the start.
It's not "C++ but better".
It's Haskell standing on Lisp's shoulders, hiding in C's coat to sneak into PRDCTN. (The fancy nightclub where all the popular language's hang out)
– tris on his "No Boilerplate" Youtube channel
Thanks to PrototypeNM1 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
Text
This Week in Rust 521
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
Faster compilation with the parallel front-end in nightly
November 2023 Leadership Council Update
Our Vision for the Rust Specification
Foundation
The Rust Foundation to Develop Training and Certification Program
Project/Tooling Updates
Slint 1.3 Released with Revamped Native Styles and JavaScript API
rustc_codegen_gcc: Progress Report #27
rust-analyzer changelog #207
breadcrumbs 0.1.4
Observations/Thoughts
Why Rust in Production?
Building a Web App in Rust
Rust without crates.io
How I Improved My Rust Compile Times by 75%
Iterator as an Alias
What is a team?
Rust Walkthroughs
Building and Deploying A Static Site Generator
Tracking the current active process in Windows with Rust
Edge IoT with Rust on ESP: MQTT Subscriber
Building a Central Authentication Server with Rust, PostgreSQL, Kafka and gRPC
I Got a Milk-V Duo (and It’s Running Rust)
[video] An Introduction to Veilid, by Christien Rioux
[video] Code in Rust with RustRover, by Vitaly Bragilevsky
[video] Create a Dummy GitHub CLI in Rust!
Miscellaneous
[audio] RustShip: Corrode.dev and lychee with Matthias Endler
Crate of the Week
This week's crate is cargo-msrv, a cargo subcommand to find out the Minimum Supported Rust Version (MSRV) of your crate.
llogiq is a bit worried about not having received suggestions for two weeks in a row, but still offers you his choice.
Please submit your suggestions and votes for next week!
Call for Participation
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.
Updates from the Rust Project
364 pull requests were merged in the last week
speed up x clean
llvm-wrapper: remove include of non-existant Vectorize.h
rustc_llvm: Link to libkstat on Solaris/SPARC
add -Zcross-crate-inline-threshold=yes
add std::hash::{DefaultHasher, RandomState} exports
add a new download-ci-llvm = if-unchanged option and enable it by default for profile = codegen
allow configuring the parent GitHub repository
build a better MIR body when errors are encountered
compute layout with spans for better cycle errors in coroutines
compute polonius loan scopes over the region graph
coverage: avoid creating malformed macro name spans
coverage: rename the run-coverage test mode to coverage-run
deny more ~const trait bounds
extend builtin/auto trait args with error when they have >1 argument
format macro const literals with pretty printer
generator layout: ignore fake borrows
give a better diagnostic for missing parens in Fn* bounds
handle the case when the change-id isn't found
improve diagnostic for const ctors in array repeat expressions
make FatalErrorMarker lower priority than other panics
on method chain expression failure, look for missing method in earlier segments of the chain
only instantiate binder during dyn's built-in trait candidate probe once
only use normalize_param_env when normalizing predicate in check_item_bounds
patterns: reject raw pointers that are not just integers
recover from incorrectly ordered/duplicated function keywords
reorder checks to make sure potential missing expect on Option/Result…
restore rustc shim error message
catch stray { in let-chains
suggest removing ; for ; within let-chains
thir unsafeck fixes
warn when using an unstable feature with -Ctarget-feature
when not finding assoc fn on type, look for builder fn
miri: data_race: link to docs for 'unusual' race conditions
miri: freebsd adding getentropy interception support
miri: implement round.ps and round.pd SSE4.1 intrinsics
miri: share getentropy shim across various unixes
miri: treat thread-local statics on main thread as static roots for leakage analysis
emit #[inline] on derive(Debug)
stabilize result_option_inspect
move BorrowedBuf and BorrowedCursor from std:io to core::io
closure-consuming helper functions for fmt::Debug helpers
don't panic in <BorrowedCursor as io::Write>::write
futures: provide a non-destructive mechanism to determine if a sink/stream are paired
codegen-cranelift: implement AArch64 intrinsics necessary for simd-json
codegen-cranelift: implement AES-NI and SHA256 crypto intrinsics using inline asm
codegen-cranelift: implement a lot of SIMD intrinsics
codegen_gcc: do not emit .eh_frame section if using -Cpanic=abort
cargo: query{_vec} use IndexSummary
cargo: add better error message when it can not find the search section
cargo: add cache garbage collection
cargo credential: include license files in all published crates
cargo: do not allow empty feature name
cargo: make browser links out of HTML file paths
cargo: filter cargo-credential-* dependencies by OS
cargo: fix --quiet being used with nested subcommands
cargo: fix non-deterministic behavior in last-use repopulation
cargo: do not panic when failed to parse rustc commit-hash
cargo: preserve jobserver file descriptors on rustc invocation in fix_exec_rustc
cargo: report more detailed semver errors
rustdoc: properly elide cross-crate host effect args
clippy: arc_with_non_send_sync Improve suggested resolution
clippy: map_identity: respect match ergonomics
clippy: mod_module_files Don't emit lint for mod.rs in tests
clippy: add type details to unnecessary_fallible_conversions note
clippy: destructure Conf in register_lints
clippy: disable vec_box when using different allocators
clippy: don't check for late-bound vars, check for escaping bound vars
clippy: fixes to manual_let_else's divergence check
clippy: lint needless_borrow and explicit_auto_deref on most union field accesses
clippy: move suspicious_doc_comments to doc pass
clippy: replace if_chain with let chains
rust-analyzer: add config for preferring / ignoring prelude modules when inserting imports
rust-analyzer: preview adt field when hover
rust-analyzer: find Self reference
rust-analyzer: ignore doc(hidden) attr if no body is present
rust-analyzer: truncate closure capture place for raw pointer
rust-analyzer: improve check for include macro
Rust Compiler Performance Triage
A week dominated by one particular perf improvement that lead to huge performance gains - an avg of 5% improvement across 121 test cases! The perf improvement comes from adding an #[inline] hint to the output from #[derive(Debug)] which presumably allows the compiler to more easily do deadcode elimination reducing the binary size and the amount of code that actually needs to be code-gened.
Triage done by @rylev. Revision range: 7b97a5ca..173b6e68
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 0.4% [0.2%, 0.9%] 10 Regressions ❌ (secondary) 1.9% [0.2%, 3.6%] 12 Improvements ✅ (primary) -5.6% [-49.2%, -0.1%] 111 Improvements ✅ (secondary) -3.5% [-25.0%, -0.2%] 155 All ❌✅ (primary) -5.1% [-49.2%, 0.9%] 121
2 Regressions, 2 Improvements, 3 Mixed; 3 of them in rollups 55 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] RFC: Superseding public/private dependencies
Tracking Issues & PRs
[disposition: merge] Tracking Issue for mutex_unpoison
[disposition: merge] Tracking issue for dyn upcasting coercion
[disposition: merge] rustdoc-search: add support for traits and associated types
Language Reference
No Language Reference RFCs entered Final Comment Period this week.
Unsafe Code Guidelines
No Unsafe Code Guidelines entered Final Comment Period this week.
New and Updated RFCs
[new] Add named path bases to cargo (v2)
[new] RFC: Associated const underscore
[new] Add forbidden function casts RFC
[new] Struct target features RFC
[new] Create 0000-cargo-dns.md
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.
Upcoming Events
Rusty Events between 2023-11-15 - 2023-12-13 🦀
Virtual
2023-11-15 | Virtual (Cardiff, UK)| Rust and C++ Cardiff
Building Our Own Locks (Atomics & Locks Chapter 9)
2023-11-15 | Virtual (Richmond, VA, US) | Linux Plumbers Conference
Rust Microconference in LPC 2023 (Nov 13-16)
2023-11-15 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Nightly Night: impl Trait in Type Aliases
2023-11-16 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2023-11-16 | Virtual (San Diego, CA, US) | San Diego Rust
San Diego Rust November 2023 Tele-Meetup
2023-11-16 | Virtual (Vilnius, LT) | Vilnius Rust and Go Meetup Group
Enjoy our first Rust event
2023-11-21 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Rust Hack and Learn
2023-11-21 | Virtual (Washington, DC, US) | Rust DC
Mid-month Rustful
2023-11-23 | Virtual (Edmonton, AB, CA) | Edmonton R User Group - Yegrug
Edmonton R User Group Meetup: R and Rust, like a match made in heaven
2023-11-28 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2023-11-29 | Virtual (Cardiff, UK)| Rust and C++ Cardiff
Atomics & Locks Book Club Final Chapter! (Chapter 10)
2023-11-30 | Virtual (Charlottesville, NC, US) | Charlottesville Rust Meetup
Crafting Interpreters in Rust Collaboratively
2023-11-30 | Virtual (Dublin, IE) | Rust Dublin
Automating expertise with cargo-semver-checks
2023-12-01 | Virtual (Cardiff, UK)| Rust and C++ Cardiff
Rust & C++ Christmas Game Jam Kick-Off!
2023-12-02 | Virtual (Kampala, UG) | Rust Circle Kampala
Rust Circle Meetup
2023-12-05 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Rust Hack and Learn | Mirror
2023-12-05 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
Buffalo Rust User Group, First Tuesdays
Europe
2023-11-21 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
GPU processing in Rust
2023-11-23 | Biel/Bienne, CH | Rust Bern
Rust Talks Bern @ Biel: Embedded Edition
2023-12-07 | Aarhus, DK | Rust Aarhus
Rust and Talk at Danske Commodities
2023-11-30 | Brussels, BE | Lambda Brussels
Lambda Brussels
North America
2023-11-15 | Richmond, VA, US + Virtual | Linux Plumbers Conference
Rust Microconference in LPC 2023 (Nov 13-16)
2023-11-16 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2023-11-16 | Nashville, TN, US | Music City Rust Developers
Python loves Rust!
2023-11-16 | Seattle, WA, US | Seattle Rust User Group
Seattle Rust User Group Meetup
2023-11-21 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2023-11-22 | Austin, TX, US | Rust ATX
Rust Lunch - Fareground
2023-11-28 | Pasadena, CA, US | Pasadena Thursday Go / Rust
Monthly Rust group
2023-12-12 | Seattle, WA, US | Cap Hill Rust Coding/Hacking/Learning
Rusty Coding/Hacking/Learning Night
Oceania
2023-11-21 | Christchurch, NZ | Christchurch Rust Meetup Group
Christchurch Rust meetup meeting
2023-11-28 | Canberra, ACT, AU | Rust Canberra
November Meetup
2023-12-11 | Perth, WA, AU | Rust Perth Meetup Group
Rust End of Year Event
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
I decided to keep learning Rust because I liked the syntax. I liked the speed. I liked the community. I liked it all. It felt like a breath of fresh air: a syntax more intuitive than Python, JavaScript, or C, yet still faster.
– Goren Barak on their blog
Thanks to Goren Barak 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
1 note
·
View note
Text
This Week in Rust 464
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? Tweet us at @ThisWeekInRust or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.
Updates from Rust Community
Project/Tooling Updates
rust-analyzer changelog #150
IntelliJ Rust Changelog #180
This Month in hyper: September 2022
Fornjot - Weekly Release - 2022-W41
This Month in Rust OSDev: September 2022
rustc_codegen_gcc: Progress Report #16
Fyrox 0.28 Feature Highlights
zerocal - A Serverless Calendar App in Rust Running on shuttle.rs
Announcing error-stack v0.2
Observations/Thoughts
When to vendor (or not) your dependencies in Rust
RAII: Compile-Time Memory Management in C++ and Rust
Hard Mode Rust
Single Pass Recursion in Rust
Platform Agnostic Drivers in Rust: The MAX7219 Driver
Different test scopes in Rust
Rust Walkthroughs
Avoiding allocations in Rust to shrink Wasm modules
Building a JobSystem
[video] Fast Rest API - Rust + Actix Web (2022)
Using C libraries in your Rust project
Miscellaneous
Call for Papers: Rust Nation UK Conference 2023 (Deadline 2022-10-31)
[audio] What's New in Rust 1.62, 1.63, and 1.64 :: Rustacean Station
[audio] Veloren with Forest Anderson :: Rustacean Station
[video] Day in the Life of Open Source Maintenance: 2022-10-08
[video] Static Async Concurrency in Rust
[video] Rust makes cents (Speed is a FEATURE)
[video] Rust Wrocław Meetup 29 - Live stream, 6.10.2022
Crate of the Week
This week's crate is pci-driver, a crate to develop user-space PCI(e) linux drivers.
Thanks to Alberto Faria for the self-suggestion!
Please submit your suggestions and votes for next week!
Call for Participation
Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
zerocopy - Miri can't run tests for wasm32-wasi target
zerocopy - Test in CI that we have the same MSRV in all source files
zerocopy - Add comment to README.md stating that it's auto-generated and shouldn't be edited directly
zerocopy - Test Clippy in CI
Ockam - Partition rust test jobs with nextest
Ockam - Refactor ockam identity show command to use rpc abstraction
Ockam - Refactor tcp connection list command to use rpc abstraction
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
388 pull requests were merged in the last week
use BOLT in CI to optimize LLVM
stabilize half_open_range_patterns
check WhereClauseReferencesSelf after all other object safety checks
check generic argument compatibility when projecting assoc ty
delay evaluating lint primary message until after it would be suppressed
disable compressed debug sections on i586-gnu
don't ICE when trying to copy unsized value in const prop
enable inline stack probes on X86 with LLVM 16
suggest .into() when all other coercion suggestions fail
suggest == to wrong assign expr
suggest calling method if fn does not exist
suggest unwrap_or_else when a closure is given
fix MIR inlining of asm_unwind
fix #[derive(Default)] on a generic #[default] enum adding unnecessary Default bounds
fix unwind drop glue for if-then scopes
lint against nested opaque types that don't satisfy associated type bounds
make tests capture the error printed by a Result return
only allow ~const bounds for traits with #[const_trait]
recover from impl Trait in type param bound
remove TypeckResults from InferCtxt
show let-else suggestion on stable
skip chained OpaqueCast when building captures
trying to suggest additional lifetime parameter
uplift clippy::for_loops_over_fallibles lint into rustc
don't ICE when normalizing closure input tys
make const_err a hard error
panic-on-uninit: adjust checks to 0x01-filling
introduce {char, u8}::is_ascii_octdigit
std: use futex in Once
EscapeAscii is not an ExactSizeIterator
slice: #[inline] a couple iterator methods
add Vec::push_within_capacity - fallible, does not allocate
add T to impl Debug for PhantomData
only export __tls_* on wasm32-unknown-unknown
add AsFd implementations for stdio lock types on WASI
add ptr::Alignment type
reduce CString allocations in std as much as possible
avoid repeated re-initialization of the BufReader buffer
do the calloc optimization for Option<bool>
From<Alignment> for {usize, NonZeroUsize}
Make Hash{Set, Map}::with_hasher unstably const
implement Ready::into_inner()
futures: implement Clone for Drain
codegen_gcc: fix fmaddsub
codegen_gcc: fix simd bitmask
codegen_gcc: fix simd select bitmask
codegen_gcc: simd: enable simd_as intrinsic
cargo: import cargo remove into cargo
cargo: add completions for cargo remove
cargo: add retry support to sparse registries
cargo: config file loaded via CLI takes priority over env vars
cargo: fix sparse registry lockfile urls containing 'registry+sparse+'
cargo: source replacement ambiguity (RFC #3289)
rustdoc: render more cross-crate HRTBs properly
bindgen: generated name override
bindgen: context: fix tokenization of C++20 inline namespace
clippy: add disallowed_macros lint
clippy: add manual_filter lint for Option
clippy: new implicit_saturating_add lint
clippy: add a temporary workaround for multiline formart arg inlining
clippy: don't suggest moving tuple structs with a significant drop to late evaluation
clippy: fix arithmetic_side_effects false negative
clippy: don't ignore literal references on arithmetic-side-effects
clippy: FormatArgsExpn: find comma spans and ignore weird proc macro spans
clippy: further enhance needless_borrow, mildly refactor redundant_clone
clippy: match_single_binding add curlies for more cases to fix suggestion
clippy: suboptimal_flops lint for multiply and subtract
clippy: extend box-default lint, add suggestion
clippy: let upper_case_acronyms check the enum name
clippy: unsafe_removed_from_name: fix false positive when #[allow]ed
rust-analyzer: add convert_named_struct_to_tuple_struct assist
rust-analyzer: prefer similar tokens when expanding macros speculatively
rust-analyzer: fix generate_method: correct method indentation inside generated impl and change gen loc
rust-analyzer: expand unmatched mbe fragments to reasonable default token trees
rust-analyzer: honor cfg attributes on params when lowering their patterns
rust-analyzer: make go-to-def work for #[doc = include_str!("path")]
rust-analyzer: in VSCode, correctly resolve relative paths to errors
rust-analyzer: treat enum variants as generic item on their own
rust-analyzer: use BoundVars from current generic scope
perf: add basic runtime benchmark infrastructure
add n-body simulation runtime benchmark
Rust Compiler Performance Triage
Overall, a fairly quiet week where the change to primary benchmarks ended up breaking exactly even. Secondary benchmarks saw improvements but not in large enough numbers for it to be particularly noteworthy.
Triage done by @rylev. Revision range: 02cd79a..1e926f0
Summary:
(instructions:u) mean range count Regressions ❌ (primary) 0.8% [0.2%, 1.4%] 19 Regressions ❌ (secondary) 1.0% [0.3%, 1.8%] 9 Improvements ✅ (primary) -0.6% [-1.8%, -0.3%] 29 Improvements ✅ (secondary) -1.0% [-6.4%, -0.2%] 39 All ❌✅ (primary) -0.0% [-1.8%, 1.4%] 48
3 Regressions, 1 Improvements, 6 Mixed; 4 of them in rollups 41 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 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.
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
[disposition: merge] make unaligned_reference a hard error
[disposition: merge] Stabilize raw-dylib for non-x86
[disposition: merge] Only apply ProceduralMasquerade hack to older versions of rental
[disposition: merge] Remove save-analysis.
[disposition: merge] make order_dependent_trait_objects show up in future-breakage reports
[disposition: merge] merge functionality of io::Sink into io::Empty
[disposition: merge] Stabilize duration_checked_float
[disposition: merge] Change process spawning to inherit the parent's signal mask by default
New and Updated RFCs
[new] unsafe attributes
[new] Support upcasting of dyn Trait values
[new] Restrictions
Upcoming Events
Rusty Events between 2022-10-12 - 2022-11-09 🦀
Virtual
2022-10-12 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust and C++ Cardiff Virtual Meet
2022-10-12 | Virtual (Erlangen, DE) | Rust Franken
Rust Franken Meetup #4
2022-10-12 | Virtual (San Francisco, CA, US / Redmond, WA, US / New York, NY, US / Toronto, CA / London, UK) | Microsoft Reactor San Francisco
Getting Started with Rust: Building Rust Projects | Redmond Mirror | New York Mirror | Toronto Mirror | London Mirror
2022-10-13 | Virtual (Berlin, DE) | EuroRust
EuroRust (Oct 13-14)
2022-10-15 | Virtual (Nürnberg, DE) | Rust Nuremberg
Deep Dive Session 2 (CuteCopter): Reverse Engineering a tiny drone
2022-10-18 | Virtual (Myrtle Point, OR, US) | #EveryoneCanContribute Cafe
Cloud Native: KubeCon NA - expectations, learnings, etc. -- incl. WebAssembly and Containers -- OpenTelemetry + Rust
2022-10-18 | Virtual (Washington, DC, US) | Rust DC
Mid-month Rustful—Impractical Rust: The HATETRIS World Record
2022-10-19 | Virtual (Boulder, CO, US) | Boulder Elixir and Rust
Monthly Meetup
2022-10-19 | Virtual (Chennai, IN) | Techceleration at Toyota Connected
Techceleration's! Let's Talk Tech! Rust | BreakTheCode Contest - 14th Edition
2022-10-19 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rapid Prototyping in Rust: Write fast like Python; Run fast like C
2022-10-19 | Virtual | Boston NoSQL Database Group (ScyllaDB)
p99 Conf: All Things Performance (including talks on Rust) - Free | Official conference page
2022-10-20 | Virtual (México City, MX) | Rust MX
Graphul, un web framework escrito en Rust
2022-10-20 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
Rust-Meetup
2022-10-25 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Rust Hack and Learn
2022-10-25 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
2022-10-26 | Virtual (Redmond, WA, US / New York, NY, US / Toronto, CA / Stockholm, SE) | Microsoft Reactor Redmond
Your First Rust Project: Rust Basics | New York Mirror | Toronto Mirror | Stockholm Mirror
2022-10-27 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
Using Applicative Functors to parse command line options
2022-10-27 | Karlsruhe, DE | The Karlsruhe Functional Programmers Meetup Group
Stammtisch (gemeinsam mit der C++ UG KA) (various topics, from C++ to Rust...)
2022-11-01 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
Buffalo Rust User Group, First Tuesdays
2022-11-02 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2022-11-02 | Virtual (Redmond, WA, US / San Francisco, SF, US / New York, NY, US / Toronto, CA / London, UK) | Microsoft Reactor Redmond
Getting Started with Rust: From Java Dev to Rust Developer | San Francisco Mirror | New York Mirror | Toronto Mirror | London Mirror
2022-11-02 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Rust and C++ Cardiff Virtual Meet
2022-11-08 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2022-11-08 | Virtual (Stockholm, SE) | Func Prog Sweden
Tenth Func Prog Sweden MeetUp 2022 – Online (with "Ready for Rust" by Erik Dörnenburg)
Europe
2022-10-12 | Berlin, DE | Rust Berlin
Rust and Tell - EuroRust B-Sides
2022-10-12 | Cologne, DE | Rust Cologne
Iterators in Rust
2022-10-13 | Berlin, DE + Virtual | EuroRust
EuroRust (Oct 13-14)
2022-10-13 | Roma, IT | Rust Roma
GraphQL server with Rust #Aperitech
2022-10-20 | London, UK | Rust London User Group
Rust London x JFrog SwampUP After Party
2022-10-25 | Paris, FR | Rust Paris
Rust Paris meetup #53
2022-10-26 | London, UK | Rust London User Group
LDN Talks October 2022: Host by Amazon Prime Video
2022-10-27 | København, DK | Copenhagen Rust Group
Hack Night #30
North America
2022-10-13 | Columbus, OH, US | Columbus Rust Society
Monthly Meeting
2022-10-18 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2022-10-20 | New York, NY, US | Rust NYC
Anyhow ? Turbofish ::<> / HTTP calls and errors in Rust.
2022-10-20 | New York, NY, US | Cloud Native New York
Cloud-native Search Engine for Log Management and Analytics.
2022-10-25 | Toronto, ON, CA | Rust Toronto
Rust DHCP
2022-10-27 | Lehi, UT, US | Utah Rust
Bevy Crash Course with Nathan and Food!
Oceania
2022-10-20 | Brisbane, QLD, AU | Rust Brisbane
October Meetup
2022-10-20 | Wellington, NZ | Rust Wellington
Tune Up Edition: software engineering management
2022-11-09 | Sydney, NSW, AU | Rust Sydney
RustAU Sydney - Last physical for 2022 !
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's a lot of weird debate about whether Rust in the kernel is useful or not... in my experience, it's way more useful than I could've ever imagined!
I went from 1st render to a stable desktop that can run run games, browsers, etc. in about two days of work on my driver (!!!)
All the concurrency bugs just vanish with Rust! Memory gets freed when it needs to be freed! Once you learn to make Rust work with you, I feel like it guides you into writing correct code, even beyond the language's safety promises. It's seriously magic! ✨
There is absolutely no way I wouldn't have run into race conditions, UAFs, memory leaks, and all kinds of badness if I'd been writing this in C.
In Rust? Just some logic bugs and some core memory management issues. Once those were fixed, the rest of the driver just worked!!
– Asahi Lina on twitter
llogiq is mightily pleased with his 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
0 notes
Text
This Week in Rust 451
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? Tweet us at @ThisWeekInRust or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.
Updates from Rust Community
Official
Announcing Rustup 1.25.0
Announcing Rustup 1.25.1
Changes in the Core Team
Newsletters
This Month in Rust OSDev: June 2022
This Month in Rust GameDev #35 - June 2022
Project/Tooling Updates
Tauri 1.0 Release
Lyon 1.0
rust-analyzer changelog #137
IntelliJ Rust Changelog #174
rustc_codegen_gcc: Progress Report #13
Accouncing Fornjot 0.7 (code-first CAD in Rust)
Announcing Experimental Rust Filesystem and Path Support for Xous PDDB!
This week in Fluvio #38: The programmable streaming platform
HexoSynth (modular synthesizer) - Devlog #4 - The Tracker Sequencer is Back
Slint UI crate weekly updates
Black Hat Rust updated for Rust 1.62 (and announcing the online course)
This week in Databend #50: A Modern Cloud Data Warehouse for Everyone
Observations/Thoughts
Announcement: Rust-Edu
A Pleasing Symmetry in Rust — Sympolymathesy, by Chris Krycho
Unsafe Syntax
Almost Rules
Pitfalls of fallible Iterators
Minimalist Guide to Poem
[audio] High Assurance Rust with Tiemoko Ballo
[ZH] [audio] 004. 与迟先生聊 Rust 与数据库系统
Rust Walkthroughs
Procedural macros under the hood: Part II | The IntelliJ Rust Blog
Bare-Metal Rust on ESP32: A Brief Overview
A Rust app in a Cloudflare Worker
Runtime errors: Come again? Rust macros to the rescue
Using the Kani Rust Verifier on a Firecracker Example
[video] How AWS is building the Rust SDK and how you can use it today - Zelda Hessler
[video] Constant fun (const fn) with Rust - Rainer Stropek
Research
Flux: Liquid Types for Rust
Miscellaneous
GCC Rust Approved By Steering Committee, Likely To Land For GCC 13
Crate of the Week
This week's crate is shame, a shader EDSL for writing render and compute pipelines in rust.
Thanks to Zicklag for the suggestion!
Please submit your suggestions and votes for next week!
Call for Participation
Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
363 pull requests were merged in the last week
implement support for DWARF version 5
sess: stabilize -Zterminal-width as --diagnostic-width
macros: LintDiagnostic derive
proc_macro: fix expand_expr expansion of bool literals
shorten def_span of closures to just their header
improve spans for specialization error
do not mention private types from other crates as impl candidates
adjust dangling-int-ptr error message
highlight conflicting param-env candidates
suggest #[derive(Default)] to enums with #[default]
suggest using block for extern "abi" fn with no body
suggest adding a derive for #[default] applied to variants
fix "wrap closure in parenthesis" suggestion for async closure
don't succeed evaluate_obligation query if new opaque types were registered
lints: mostly translatable diagnostics
deny float const params even when adt_const_params is enabled
allow arithmetic and certain bitwise ops on AtomicPtr
more need_type_info improvements
miri: handle Box with allocators
improve soundness of rustc_arena
fix ProjectionElem validation
compilation speed optimization for pest-2.1.3
use less string interning
more derive output improvements
implement SourceMap::is_span_accessible
use a bitset instead of a hash map in HIR ID validator
miscellaneous inlining improvements
partially stabilize const_slice_from_raw_parts
return a FxIndexSet in is_late_bound query
split TypeVisitable from TypeFoldable
implement ExitCodeExt for Windows
implement FusedIterator for std::net::(Into)Incoming
Windows: fallback for overlapped I/O
stabilize into_future
futures: add push_front and push_back to FuturesOrdered
regex: add ExactSizeIterator to SubCaptureMatches
cargo: fix corrupted git checkout recovery
cargo: fix publishing to crates.io with -Z sparse-registry
cargo: add a cache for discovered workspace roots
rustdoc: add more semantic information to impl IDs
rustdoc: filter '_ lifetimes from ty::Generics
clippy: allow let_unit_value in more cases
clippy: extend unnecessary_lazy_eval to cover bool::then -> bool::then_some
clippy: fix ICE in sugg::DerefDelegate with (named) closures
clippy: fix needless_borrow changing called trait impls on method receivers
clippy: fix undocumented_unsafe_blocks in closures
clippy: fix span for or_fun_call
clippy: ignore into_iter in significant_drop_in_scrutinee
clippy: lint shadow_* lints in anon const blocks
clippy: lint simple expressions in manual_filter_map, manual_find_map
clippy: maybe trait bound on type repetition
rust-analyzer: complete type param/associated type in trait generic arg per arg index
rust-analyzer: implement ignore and index metavar expression
rust-analyzer: extract Function misses locals used in closures
rust-analyzer: extract function from trait impl
rust-analyzer: improve suggested names for extracted variables
rust-analyzer: use SmallVec to slightly shrink ModPath size
Rust Compiler Performance Triage
A fairly noisy week (many entries below dropped and untagged as regressions), largely driven by tt-muncher and html5ever. Our sensitivity assessment currently takes roughly a week since new noise starts to learn the noise level, so it can take some time for oscillations to stop reporting somewhat spurious results.
Otherwise, this week had a number of solid improvements, and was overall positive, with improvements across many benchmarks.
Triage done by @simulacrum. Revision range: 880646c..b3f4c3
3 Regressions, 6 Improvements, 3 Mixed; 3 of them in rollups 53 artifact comparisons made in total
For details, see the full report.
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.
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
[disposition: merge] Stabilize Windows FileTypeExt with is_symlink_dir and is_symlink_file
[disposition: merge?] Implement TryFrom<&OsStr> for &str
[disposition: merge] Tracking Issue for core::task::ready! macro
New and Updated RFCs
[new] RFC: resolve crates.io source replacement ambiguity
Upcoming Events
Rusty Events between 2022-07-13 - 2022-08-10 🦀
Virtual
2022-07-13 | Boulder, CO, US | Boulder Elixir and Rust
Monthly Meetup
2022-07-13 | Malaysia, MY | Rust Malaysia Meetup
Rust Malaysia Meetup
2022-07-14 | Nürnberg, DE | Rust Nurnberg DE
Rust Nürnberg online
2022-07-14 | San Diego, CA, US | San Diego Rust
San Diego Rust July 2022 Tele-Meetup
2022-07-16 | Vancouver, BC, CA | Vancouver Rust
Rust Study/Hack/Hang-out
2022-07-19 | Sydney, NSW, AU | Rust Australia
Rust Lightning Talks
2022-07-19 | Washington, DC, US | Rust DC
Mid-month Rustful
2022-07-20 | Cardiff, UK | Rust and C++ Cardiff
Rust Book Discussion - Building a Multithreaded Web Server
2022-07-21 | Stuttgart, DE | Rust Community Stuttgart
Rust-Meetup
2022-07-26 | Dallas, TX, US | Dallas Rust
Last Tuesday
2022-07-27 | Cardiff, UK | Rust and C++ Cardiff
Using Rust to read the Little Schemer
2022-07-29 | Minneapolis, MN, US | Minneapolis Rust Meetup
Beginner Rust Open "Office Hours"
2022-07-31 | Seattle, WA, US | Seattle Rust Meetup
Intro to Monads for Rustaceans
2022-08-02 | Buffalo, NY, US | Buffalo Rust Meetup
Buffalo Rust User Group, First Tuesdays
2022-08-03 | Indianapolis, IN, US | Indy Rust
Indy.rs - with Social Distancing
2022-08-03 | Stuttgart, DE | Rust Community Stuttgart
Rust-Meetup
Europe
2022-07-20 | Wrocław, PL | Rust Warsaw
Rust Warsaw #5
2022-07-21 | Wrocław, PL | Rust Wrocław
Rust Wrocław Meetup #27
2022-06-22 | Amsterdam, NL | Rust Developers Amsterdam Group
Rust Developers Amsterdam Group
North America
2022-07-13 | Atlanta, GA, US | Rust Atlanta
Grab a beer with fellow Rustaceans
2022-07-13 | Austin, TX, US | Rust ATX
Rust Lunch
2022-07-14 | Columbus, IL | Columbus Rust Society
Monthly Meeting
2022-07-19 | San Francisco, CA, US | San Francisco Rust Study Group
Rust Hacking in Person
2022-07-26 | Austin, TX, US | ATX Rustaceans
First Official Meetup - July 2022
2022-08-10 | Atlanta, GA, US | Rust Atlanta
Grab a beer with fellow Rustaceans
Oceania
2022-07-19 | Phillip, ACT, AU | Canberra Rust User Group
Canberra July Meetup
2022-07-28 | Brisbane, QLD, AU | Rust Brisbane
July 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
Learning Rust has taught me something - "There are really no problems, just adventure and opportunities"
– Adeoye Adefemi on rust-users
Thanks to Adeoye Adefemi and Anton Fetisov for the suggestion as well as Christopher Durham for the leniency.
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.
Email list hosting is sponsored by The Rust Foundation
Discuss on r/rust
0 notes
Text
This Week in Rust 497
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. If you find any errors in this week's issue, please submit a PR.
Updates from Rust Community
Official
On the RustConf keynote | Rust Blog
Project/Tooling Updates
rumqttd now supports MQTTv5 features like topic alias and message expiry
GlueSQL v0.14 - Schemaless data support
ratatui 0.21.0 is released! (community fork of tui-rs)
rust-analyzer Changelog #183
IntelliJ Rust Changelog #195
rustc_codegen_gcc: Progress Report #23
Statement on RustConf & Introspection
Observations/Thoughts
Paired benchmarking. How to measure performance
Pattern Extensions
A governance system, if you can keep it
[video] Why You Shouldn’t Build Your Next App in Rust
Rust Walkthroughs
How I finally understood async/await in Rust (part 1)
Serving dynamic social preview images with rust and serverless functions
Phase Locked State Machines
ESP32 Embedded Rust at the HAL: Analog Temperature Sensing using the ADC
[video] Atomics and Locks Book Club - Chapter 1 - Basics of Rust Concurrency
[video] Atomics and Locks Book Club - Chapter 2 - Atomics
[video] Deploy Rust with shuttle.rs
[video] Building WASM web UI with Rust
[video] A Practical Introduction to Derive Macros with Attributes
[video] Building an HTTP Server in Rust: Exploring TCP/IP, Socket Programming, and Asynchronous I/O
[video] Run Fast! Catch Performance Regressions in eBPF with Rust
[video] Building a Weather Forecast Command-Line App in Rust
Miscellaneous
I Am No Longer Speaking at RustConf 2023
Josh Triplett's Statement on RustConf 2023
Why I left Rust
How s2n-quic uses Kani to inspire confidence
Crate of the Week
This week's crate is progenitor, an OpenAPI client generator with support for strongly typed mock tests.
Thanks to John Vandenberg for the suggestion!
Please submit your suggestions and votes for next week!
Call for Participation
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 - Define the Mapping between ConnectorError and ApiErrorResponse using the ErrorSwitch trait
Hyperswitch - Remove redundant call to fetch payment method data
Hyperswitch - Remove redundant heap allocation (specifically string construction) in the application
Hyperswitch - Remove redundant heap allocation present in the logging framework
Ockam - Don't show a secure channel listener if it does not exist 2
Ockam - ockam secure-channel-listener list --node n1 is inconsistent 2
Ockam - Do not print that a secure channel listener was successfully deleted when it is not the case 2
Ockam - tcp-connection show command should iter all the available nodes to find the requested ID
Ockam - Define json output for ockam node create
send-file - create WiFi hotspot on Linux Operating system 1
send-file - read the device default documents directory and return an array of documents files path 1
velo - Implement Copy and Paste Functionality for bevy_cosmic_edit - Issue #128 - StaffEngineer/velo - GitHub 2
velo - Fix text height calculation for proper text alignment - Issue #131 - StaffEngineer/velo - GitHub 1
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
325 pull requests were merged in the last week
promote loongarch64-unknown-linux-gnu to Tier 2 with host tools
enable sanitizers and profiler for aarch64-unknown-linux-musl
add support for LLVM SafeStack
Expand more expressions (RFC #2011)
parse: return unpected when current token is EOF
resolve: not defined extern crate shadow_name
rustc_privacy: Cleanups and perf improvements to EmbargoVisitor
add warn-by-default lint when local binding shadows exported glob re-export item
always require closure parameters to be Sized
check opaques for mismatch during writeback
consider lint check attributes on match arms
deal with unnormalized projections when structurally resolving types with new solver
do not prefer substs relate during coherence
don't ICE if method receiver fails to unify with arbitrary_self_types
don't ICE on return-type notation when promoting trait preds to associated type bounds
don't ICE when computing PointerLike trait when region vars are in param-env
don't check for misaligned raw pointer derefs inside Rvalue::AddressOf
don't skip mir typeck if body has errors
enable MatchBranchSimplification
expose more information in get_body_with_borrowck_facts
fix for Self not respecting tuple Ctor privacy
fix re-export of doc hidden macro not showing up
fix some issues with folded AArch64 features
fix symbol conflict diagnostic mistakenly being shown instead of missing crate diagnostic
handle opaques in the new solver
improve error message for calling a method on a raw pointer with an unknown pointee
inline derived hash
leverage the interval property to precompute borrow kill points
libtest: improve error when missing -Zunstable-options
perform MIR type ops locally in new solver
preprocess and cache dominator tree
pretty-print inherent projections correctly
prevent crash when a path is not resolved in intra-doc link
rework handling of recursive panics
split out opaque collection from from type_of
stop confusing specification levels when computing expectations
use ErrorGuaranteed more in MIR type ops
MIR: opt-in normalization of BasicBlock and Local numbering
support #[global_allocator] without the allocator shim
stabilize BuildHasher::hash_one
use an unbounded lifetime in String::leak
add Median of Medians fallback to introselect
add #[inline] to array TryFrom impls
add slice::{split_, }{first, last}_chunk{, _mut}
stdarch: stabilize AArch64 AES/SHA1/SHA2 intrinsics
regex: fix complete literal optimization issue
cargo: add: Reduce the chance we re-format the user's [features] table
cargo: lints: Switch to -Zlints so stable projects can experiment
cargo: add a description of Cargo.lock conflicts in the Cargo FAQ
cargo: automatically inherit workspace fields when running cargo new/init
cargo: automatically inherit workspace lints when running cargo new/init
cargo: consider rust-version when selecting packages for cargo add
cargo: deps: remove unused features from windows-sys
cargo: warn when an edition 2021 crate is in a virtual workspace with default resolver
rustdoc: get unnormalized link destination for suggestions
rustdoc-json: Use exclusively externally tagged enums in the JSON representation
new tool rustdoc-gui-test
clippy: default_constructed_unit_structs: do not lint on type alias paths
clippy: large_stack_arrays: check array initializer expressions
clippy: add needless_else lint to check for empty else clauses
clippy: unused_async: do not consider await in nested async blocks as used
clippy: add new lint ptr_cast_constness
clippy: display the needless_return suggestion
clippy: fix redundant_pattern_match on matches! macro
clippy: fix missing block for unsafe code
clippy: fixing invalid_regex with invalid UTF8. Also, adding more test cases
clippy: ignore #[cfg]'d out code in needless_else
clippy: improve pattern printing for manual_let_else
rust-analyzer: editors/code: add markdown syntax highlighting to doc comments
rust-analyzer: allow users to override the .scip output file path
rust-analyzer: add diagnostic for incorrect _ expressions (typed holes)
rust-analyzer: assist to replace generic with impl trait
rust-analyzer: using doc aliases to search workspace symbols
rust-analyzer: fix need-mut false positive in closure capture of match scrutinee
rust-analyzer: add a toggle to disable the dependency explorer
rust-analyzer: assists no longer break indentation
rust-analyzer: change how #![cfg(FALSE)] behaves on crate root
rust-analyzer: don't try determining type of token inside macro calls
rust-analyzer: evaluate UnevaluatedConst in unify
rust-analyzer: evaluate UnevaluatedConst before trait solving
rust-analyzer: filter out unused cargo features from config
rust-analyzer: insert type vars in function arguments
rust-analyzer: use ::core instead of $crate in option_env!
rust-analyzer: implement ${count()} metavariable expression
Rust Compiler Performance Triage
A good week overall, with a broad set of improvements to many primary benchmarks. The main single source of primary regressions is from rollup PR #111869; we are in the process of narrowing that down to see if there is a root cause.
Triage done by @pnkfelix. Revision range: cda5becc..1221e43b
3 Regressions, 3 Improvements, 3 Mixed; 4 of them in rollups 26 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:
The #[diagnostic] attribute namespace
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] Return position impl Trait in traits
[disposition: merge] eRFC: single-file packages ("cargo script") integration
Tracking Issues & PRs
[disposition: merge] rustdoc: search for slices and arrays by type with []
[disposition: close] dyn Trait comparison should not include the vtable pointer
[disposition: merge] Uplift clippy::fn_null_check lint
[disposition: merge] Uplift clippy::cmp_nan lint
[disposition: merge] rustdoc: Add search result item types after their name
New and Updated RFCs
[new] Unsafe Extern Blocks
[new] RFC: Implementable trait aliases
[new] RFC: #[export] (dynamically linked crates)
[new] Generic Futures
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:
Add a [lints] table to Cargo.toml (Feature: manifest-lint)
Tracking Issue
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.
Upcoming Events
Rusty Events between 2023-05-31 - 2023-06-28 🦀
Virtual
2023-05-31 | Virtual (Chicago, IL, US) | Chicago Healthcare Cloud Technology Community
Rust for Mission-Critical AI: A Journey into Healthcare's Safest Language
2023-06-06 | Virtual (Austin, TX, US) | WebAssembly and WasmEdge
Monthly WasmEdge Community Meeting
2023-06-06 | Virtual (Berlin, DE) | OpenTechSchool Berlin
Rust Hack and Learn
2023-06-06 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
Buffalo Rust User Group, First Tuesdays
2023-06-07 | Virtual (Indianapolis, IN, US) | Indy Rust
Indy.rs - with Social Distancing
2023-06-07 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
Rust-Meetup
2023-06-08 | Virtual (Nürnberg, DE) | Rust Nuremberg
Rust Nürnberg online
2023-06-13 | Virtual (Dallas, TX, US) | Dallas Rust
Second Tuesday
2023-06-14 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
Building Spin Locks and Channels - Rust Atomics & Locks Bookclub Chapters 4 & 5
2023-06-14 | Virtual (Boulder, CO, US) | Boulder Elixir and Rust
Monthly Meetup
2023-06-15 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
Rust-Meetup
2023-06-20 | Virtual (Berlin, DE) | Berline.rs / OpenTechSchool Berlin
Rust Hack and Learn
2023-06-20 | Virtual (Washington, DC, US) | Rust DC
Mid-month Rustful
2023-06-21 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Rust Study/Hack/Hang-out
2023-06-25 | Virtual (Auckland, NZ) | ResBaz Aotearoa 2023
Research Computing With The Rust Programming Language - Tim McNamara
2023-06-27 | Virtual (Dallas, TX, US) | Dallas Rust
Last Tuesday
Asia
2023-06-10 | Kuala Lumpur, MY | GoLang Malaysia
Rust Workshop/Hack and Learn Malaysia June 2023 | Event updates Telegram | Event group chat
Europe
2023-06-03 | Plovidv, BG | AeroRust
Space Conference - Plovdiv
2023-06-04 | Plovidv, BG | AeroRust
Space Conference : Nanosatellite embedded workshop
2023-06-08 | Aarhus, DK | Rust Aarhus
Rust Aarhus meetup #2 sponsored by BRØLSTÆRK
2023-06-08 | Paris, FR | Stockly.ai
Rust Meetup in Paris - hosted by Stockly
2023-06-08 | Zurich, CH | Rust Zurich
Unsafe, Miri, SIMD - June Meetup
2023-06-16 | Stuttgart, DE | Rust Community Stuttgart
OnSite Meeting
2023-06-28 | Bratislava, SK | Bratislava Rust Meetup Group
Rust Meetup by Sonalake
North America
2023-06-01 | Mountain View, CA, US | Mountain View Rust Meetup
Rust Meetup at Hacker Dojo
2023-06-01 | Pasadena, CA, US | Pasadena Thursday Go / Rust
Weekly leetcode group (Go and Rust)
2023-06-07 | Austin, TX, US | Rust ATX
Rust Lunch
2023-06-08 | Lehi, UT, US | Utah Rust
Rust 1.70.0, Module System Deep Dive & Pizza
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
Panics are overgrown ASSERTs, not an underbuilt exception system.
– Stephan Sokolow on hacker news
Thanks to Stephan Sokolow 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
0 notes
Text
Libgccjit AOT Codegen for Rustc
https://github.com/antoyo/rustc_codegen_gcc Comments
0 notes
Text
Rustc_codegen_GCC can now run libcore’s tests and pass most of them
https://blog.antoyo.xyz/rustc_codegen_gcc-run-core-tests Comments
0 notes