Skip to content

Commit e6114bd

Browse files
Merge branch 'master' into master
2 parents 443e345 + f317f85 commit e6114bd

File tree

1 file changed

+115
-70
lines changed

1 file changed

+115
-70
lines changed

draft/2025-09-17-this-week-in-rust.md

Lines changed: 115 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ and just ask the editors to select the category.
3838
-->
3939

4040
### Official
41+
* [crates.io phishing campaign](https://blog.rust-lang.org/2025/09/12/crates-io-phishing-campaign/)
4142

4243
### Foundation
4344

@@ -46,79 +47,66 @@ and just ask the editors to select the category.
4647
* [Rust Trends Issue #70: Foundation Moves and Performance Breakthroughs](https://rust-trends.com/newsletter/rust-foundation-performance-breakthroughs-2025)
4748

4849
### Project/Tooling Updates
50+
* [Announcing Pingoo: The fast and secure Load Balancer / API Gateway with built-in service discovery and WAF](https://kerkour.com/announcing-pingoo)
4951
* [Cot v0.4: Particularly Lazy](https://mackow.ski/blog/cot-v04-particularly-lazy/)
5052
* [Announcing Diesel 2.3](https://diesel.rs/news/2_3_0_release.html)
53+
* [Rerun 0.25.0 - Syntax highlighting, table filtering, transparent objects](https://github.com/rerun-io/rerun/releases/tag/0.25.0)
54+
* [Introducing Obelisk 0.24.1](https://obeli.sk/blog/introducing-obelisk-0-24-1/)
55+
* [Introducing CurveForge](https://smartnets.etrovub.be/posts/introducing-curveforge/)
56+
* [hotpath 0.2.5 - a simple performance and memory profiler](https://github.com/pawurb/hotpath)
57+
* [Swiftide 0.31](https://blog.bosun.ai/swiftide-0-31/)
5158

5259
### Observations/Thoughts
53-
5460
* [The pirate-based logic of Rust shared references](http://ais523.me.uk/blog/logic-of-shared-references.html)
61+
* [Embedded async debugging and inspect-embassy](https://tweedegolf.nl/en/blog/161/embedded-async-debugging-and-inspect-embassy)
62+
* [Be Simple](https://corrode.dev/blog/simple/)
63+
* [Why We Built Our Own SQL Parser From Scratch: A Rust Implementation Story](https://www.databend.com/blog/category-engineering/2025-09-10-query-parser/)
64+
* [Comparing transitive dependency version resolution in Rust and Java](https://blog.frankel.ch/dependency-version-resolution-rust-java/)
65+
* [Trade-offs in designing DSLs](https://forgestream.idverse.com/blog/20250916-dsl-trade-offs/)
66+
* [Rust Algorithm Bites – Validating a Binary Search Tree](https://d34dl0ck.me/rust-algorithm-bites-validate-bst/index.html)
67+
* [Rust on Android - Lessons from the Edge](https://greptime.com/blogs/2025-04-14-rust-in-android-edge-based-practice)
5568

5669
### Rust Walkthroughs
5770
* [Axum Backend Series: Docker, Database and Connection Pooling](https://blog.0xshadow.dev/posts/backend-engineering-with-axum/axum-database-setup-using-docker/)
5871
* [The Hidden Rules Behind Rust Functions & Closures](https://blog.cuongle.dev/p/the-hidden-rules-behind-rust-functions)
72+
* [Rust unit testing: asynchronous code](https://jorgeortiz.dev/posts/rust_unit_testing_async_code/)
5973
* [Ray Tracing in One Weekend - In Rust](https://buttondown.com/dabeaz/archive/new-video-ray-tracing-in-one-weekend-in-rust/)
74+
* [New Schematic - How to save $327.6 million using Rust](https://newschematic.org/blog/how-to-save-327-6-million-using-rust/)
6075
* [series] [Real Time Clock - Rust Embedded Drivers Book](https://red.implrust.com/rtc/index.html)
6176

6277
### Research
6378

6479
### Miscellaneous
80+
* [audio] [Netstack.FM — A Podcast About Networking and Rust](https://netstack.fm/#episode-5)
81+
* [video] [Jan David Nose Interview, Rust Infrastructure Team (Rust Project Content @ RustConf 2025)](https://www.youtube.com/watch?v=r7i-2wHtNjw)
6582
* [August 2025 Rust Jobs Report](https://filtra.io/rust/jobs-report/aug-25)
83+
* [The Symbiosis Of Rust And Arm: A Conversation With David Wood](https://filtra.io/rust/interviews/arm-sep-25)
6684

6785
## Crate of the Week
6886

69-
<!-- COTW goes here -->
87+
This week's crate is [asciinema](https://crates.io/crates/asciinema), a well-known command-line tool for recording, replaying and streaming terminal sessions recently rewritten in Rust.
88+
89+
Despite a lack of suggestions, llogiq is plenty happy with his choice.
7090

7191
[Please submit your suggestions and votes for next week][submit_crate]!
7292

7393
[submit_crate]: https://users.rust-lang.org/t/crate-of-the-week/2704
7494

7595
## Calls for Testing
76-
An important step for feature implementation is for people to experiment with the
96+
An important step for RFC implementation is for people to experiment with the
7797
implementation and give feedback, especially before stabilization.
7898

79-
If you are a feature implementer and would like your feature to appear in this list, add a
99+
If you are a feature implementer and would like your RFC to appear in this list, add a
80100
`call-for-testing` label to your RFC along with a comment providing testing instructions and/or
81101
guidance on which aspect(s) of the feature need testing.
82102

83-
<!-- If there are new CfT items this week, use: -->
84-
<!--
85-
[Repo Name](Repo URL)
86-
* [<Feature name>](<Feature URL>)
87-
* [Testing steps](<Testing Steps URL>)
88-
-->
89-
<!-- where `Repo Name` and `Repo URL` are one of:
90-
[Rust](https://github.com/rust-lang/rust/labels/call-for-testing),
91-
[Rust language RFCs](https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing),
92-
[Cargo](https://github.com/rust-lang/cargo/labels/call-for-testing) or
93-
[Rustup](https://github.com/rust-lang/rustup/labels/call-for-testing)
94-
-->
95-
96-
<!-- For all `Repo Names` with no new CfT items this week: use (removing the repos for which new
97-
CfT items did appear, of course) -->
98-
<!--
99103
* *No calls for testing were issued this week by
100104
[Rust](https://github.com/rust-lang/rust/labels/call-for-testing),
101105
[Rust language RFCs](https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing),
102106
[Cargo](https://github.com/rust-lang/cargo/labels/call-for-testing) or
103107
[Rustup](https://github.com/rust-lang/rustup/labels/call-for-testing).*
104-
-->
105-
* *No calls for testing were issued this week by [Rust](https://github.com/rust-lang/rust/labels/call-for-testing),
106-
[Rust language RFCs](https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing),
107-
[Cargo](https://github.com/rust-lang/cargo/labels/call-for-testing) or
108-
[Rustup](https://github.com/rust-lang/rustup/labels/call-for-testing).*
109108

110109
[Let us know](https://github.com/rust-lang/this-week-in-rust/issues) if you would like your feature to be tracked as a part of this list.
111-
-->
112-
113-
### [RFCs](https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing)
114-
115-
### [Rust](https://github.com/rust-lang/rust/labels/call-for-testing)
116-
117-
### [Rustup](https://github.com/rust-lang/rustup/labels/call-for-testing)
118-
119-
If you are a feature implementer and would like your RFC to appear on the above list, add the new `call-for-testing`
120-
label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature
121-
need testing.
122110

123111
## Call for Participation; projects and speakers
124112

@@ -143,13 +131,78 @@ If you are a Rust project owner and are looking for contributors, please submit
143131
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.
144132

145133
<!-- CFPs go here, use this format: * [**event name**](URL to CFP)| Date CFP closes in YYYY-MM-DD | city,state,country | Date of event in YYYY-MM-DD -->
146-
<!-- or if none - *No Calls for papers or presentations were submitted this week.* -->
134+
*No Calls for papers or presentations were submitted this week.*
147135

148136
If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a [PR to TWiR](https://github.com/rust-lang/this-week-in-rust) or by reaching out on [X (formerly Twitter)](https://x.com/ThisWeekInRust) or [Mastodon](https://mastodon.social/@thisweekinrust)!
149137

150138
## Updates from the Rust Project
151139

152-
<!-- Rust updates go here -->
140+
379 pull requests were [merged in the last week][merged]
141+
142+
[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2025-09-09..2025-09-16
143+
144+
#### Compiler
145+
* [implement `#[rustc_align_static(N)]` on `static`s](https://github.com/rust-lang/rust/pull/146178)
146+
* [move more early buffered lints to dyn lint diagnostics](https://github.com/rust-lang/rust/pull/145881)
147+
* [make `AssocItem` aware of its impl kind](https://github.com/rust-lang/rust/pull/145186)
148+
* [match clang's `va_arg` assembly on arm targets](https://github.com/rust-lang/rust/pull/144549)
149+
* [reject invalid literal suffixes in tuple indexing, tuple `struct` indexing, and `struct` field name position](https://github.com/rust-lang/rust/pull/145463)
150+
* [sort array trait implementation suggestions correctly](https://github.com/rust-lang/rust/pull/146403)
151+
* [strip frontmatter in fewer places](https://github.com/rust-lang/rust/pull/146340)
152+
* [miri: fix release/scquire synchonization for loads from the store buffer](https://github.com/rust-lang/miri/pull/4577)
153+
* [miri: make a basic hello world work on wasip2](https://github.com/rust-lang/miri/pull/4582)
154+
155+
#### Library
156+
* [constify Eq, Ord, PartialOrd](https://github.com/rust-lang/rust/pull/144847)
157+
* [implement `Sum` and `Product` for `f16` and `f128`](https://github.com/rust-lang/rust/pull/146300)
158+
* [inclusive `Range`s: change `end` to `last`](https://github.com/rust-lang/rust/pull/144765)
159+
* [make `Barrier` `RefUnwindSafe` again](https://github.com/rust-lang/rust/pull/146322)
160+
* [stabilize `BTree{Map,Set}::extract_if`](https://github.com/rust-lang/rust/pull/145471)
161+
* [support integer literals in `${concat()}`](https://github.com/rust-lang/rust/pull/146308)
162+
163+
#### Cargo
164+
* [cli: Allow completions for third-party subcommand names](https://github.com/rust-lang/cargo/pull/15961)
165+
* [completer: Added completion for `--features` flag](https://github.com/rust-lang/cargo/pull/15309)
166+
* [complete: Show local crates/features over other members](https://github.com/rust-lang/cargo/pull/15956)
167+
* [frontmatter: Try alternative len code fences](https://github.com/rust-lang/cargo/pull/15952)
168+
* [manifest: Show error source to users](https://github.com/rust-lang/cargo/pull/15939)
169+
* [publish: Switch the 'ctrl-c on wait' line to a help message](https://github.com/rust-lang/cargo/pull/15942)
170+
171+
#### Rustdoc
172+
* [Correctly handle literal search on paths](https://github.com/rust-lang/rust/pull/146448)
173+
174+
#### Clippy
175+
* [`elidable_lifetime_names`: avoid overlapping spans in suggestions](https://github.com/rust-lang/rust-clippy/pull/15667)
176+
* [`len_zero`: don't eagerly call `GenericArgs::type_at`](https://github.com/rust-lang/rust-clippy/pull/15660)
177+
* [`multiple_unsafe_ops_per_block`: ignore unsafe ops from `.await` desugaring](https://github.com/rust-lang/rust-clippy/pull/15654)
178+
* [`needless_closure`: don't lint on `AsyncFn*`s](https://github.com/rust-lang/rust-clippy/pull/15649)
179+
* [`needless_return`: fix false positive with `cfg`d code after return](https://github.com/rust-lang/rust-clippy/pull/15669)
180+
* [`ref_option`: don't lint in external and proc-macros](https://github.com/rust-lang/rust-clippy/pull/15668)
181+
* [`semicolon_inside_block`: don't lint if block is in parens](https://github.com/rust-lang/rust-clippy/pull/15626)
182+
* [`use_self`: don't early-return if the outer type has no lifetimes](https://github.com/rust-lang/rust-clippy/pull/15611)
183+
* [add suggestion to `cast_sign_loss` and `cast_possible_wrap` using the `cast_{un,}signed()` methods](https://github.com/rust-lang/rust-clippy/pull/15384)
184+
* [fix `as_underscore` to only suggest when it's suggestable](https://github.com/rust-lang/rust-clippy/pull/15652)
185+
* [fix `invalid_upcast_comparisons` wrongly unmangled macros](https://github.com/rust-lang/rust-clippy/pull/15663)
186+
* [fix `useless_attribute` false positive on `deprecated_in_future`](https://github.com/rust-lang/rust-clippy/pull/15645)
187+
* [recognize canonical `?` pattern with `Result`](https://github.com/rust-lang/rust-clippy/pull/15680)
188+
189+
#### Rust-Analyzer
190+
* [add more workaround hacks for incorrect startup diagnostics](https://github.com/rust-lang/rust-analyzer/pull/20402)
191+
* [fix `LifetimeParam::lifetime_bounds` invalid implement](https://github.com/rust-lang/rust-analyzer/pull/20624)
192+
* [fix extra semicolon before else in let-stmt](https://github.com/rust-lang/rust-analyzer/pull/20657)
193+
* [fix indent for `unresolved_field` fixes](https://github.com/rust-lang/rust-analyzer/pull/20613)
194+
* [always coerce in a cast, even when there are unknown types](https://github.com/rust-lang/rust-analyzer/pull/20649)
195+
* [don't mark unknown type as implementing every notable trait](https://github.com/rust-lang/rust-analyzer/pull/20665)
196+
* [don't output an empty generic parameters list in `generate_function`](https://github.com/rust-lang/rust-analyzer/pull/20653)
197+
* [don't trigger two flychecks when saving files that are part of targets](https://github.com/rust-lang/rust-analyzer/pull/20635)
198+
* [fix expand macro recursively not working correctly for nested macro calls](https://github.com/rust-lang/rust-analyzer/pull/20612)
199+
* [fix normalization in the new solver](https://github.com/rust-lang/rust-analyzer/pull/20647)
200+
* [infinite loop while elaborting predicates](https://github.com/rust-lang/rust-analyzer/pull/20654)
201+
* [make `#[target_feature]` always safe on WASM](https://github.com/rust-lang/rust-analyzer/pull/20642)
202+
* [more precise clause filtering for `explicit_*_predicates_of`](https://github.com/rust-lang/rust-analyzer/pull/20671)
203+
* [only compute unstable paths on nightly toolchains for IDE features](https://github.com/rust-lang/rust-analyzer/pull/20517)
204+
* [resolve paths to snapshot test libraries absolutely](https://github.com/rust-lang/rust-analyzer/pull/20639)
205+
* [migrate `InferenceTable` into next-solver](https://github.com/rust-lang/rust-analyzer/pull/20578)
153206

154207
### Rust Compiler Performance Triage
155208

@@ -179,47 +232,35 @@ Revision range: [f13ef0d7..52618eb3](https://perf.rust-lang.org/?start=f13ef0d75
179232
Changes to Rust follow the Rust [RFC (request for comments) process](https://github.com/rust-lang/rfcs#rust-rfcs). These
180233
are the RFCs that were approved for implementation this week:
181234

182-
<!-- Approved RFCs go here, use this format: * [Topic](URL) -->
183-
<!-- or if none were approved this week, use: * *No RFCs were approved this week.* -->
184-
<!-- * []() -->
185-
186-
<!--
187-
### [Approved Major Change Proposals (MCP)](https://forge.rust-lang.org/compiler/mcp.html)
188-
<!~~ MCPs occur infrequently, so this section is commented out by default. ~~>
189-
<!~~ MCPs which have been approved or rejected this week go here, use this format: * [major change accepted|rejected] [Topic](URL) ~~>
190-
-->
235+
* *No RFCs were approved this week.*
191236

192237
### Final Comment Period
193238

194239
Every week, [the team](https://www.rust-lang.org/team.html) announces the 'final comment period' for RFCs and key PRs
195240
which are reaching a decision. Express your opinions now.
196241

197-
#### [RFCs](https://github.com/rust-lang/rfcs/labels/final-comment-period)
198-
<!-- RFCs which have entered FCP go here, use this format: * [disposition: merge|close] [Topic](URL) -->
199-
<!-- or if none entered FCP this week, use: * *No RFCs entered Final Comment Period this week.* -->
200-
<!-- * [disposition: ] []() -->
201-
202242
#### Tracking Issues & PRs
203-
<!-- Tracking Issues which have entered FCP go here, use this format: * [disposition: merge|close] [Topic](URL) -->
204-
<!-- or if none entered FCP this week, use: -->
205-
<!-- * *No Tracking Issues or PRs entered Final Comment Period this week.* -->
206-
<!-- * [disposition: ] []() -->
207-
208243
##### [Rust](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc)
209-
210-
##### [Cargo](https://github.com/rust-lang/cargo/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc)
211-
212-
##### [Language Team](https://github.com/rust-lang/lang-team/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc+)
213-
214-
##### [Language Reference](https://github.com/rust-lang/reference/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc)
215-
216-
##### [Unsafe Code Guidelines](https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc)
244+
* [Allow &raw `[mut | const]` for union field in safe code](https://github.com/rust-lang/rust/pull/141469)
245+
* [Deny-by-default never type lints](https://github.com/rust-lang/rust/pull/146167)
246+
* [Opportunistically split `!=` to successfully parse never type](https://github.com/rust-lang/rust/pull/145536)
247+
* [Allow specifying multiple bounds for same associated item, except in trait objects](https://github.com/rust-lang/rust/pull/146593)
248+
* [rustdoc: hide `#[repr]` if it isn't part of the public ABI](https://github.com/rust-lang/rust/pull/116882)
249+
250+
*No Items entered Final Comment Period this week for
251+
[Rust RFCs](https://github.com/rust-lang/rfcs/labels/final-comment-period),
252+
[Cargo](https://github.com/rust-lang/cargo/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc),
253+
[Language Team](https://github.com/rust-lang/lang-team/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc+),
254+
[Language Reference](https://github.com/rust-lang/reference/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc),
255+
[Leadership Council](https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period) or
256+
[Unsafe Code Guidelines](https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc).*
257+
258+
Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.
217259

218260
#### [New and Updated RFCs](https://github.com/rust-lang/rfcs/pulls)
219-
<!-- New or updated RFCs go here, use this format: * [new|updated] [Topic](URL) -->
220-
<!-- or if there are no new or updated RFCs this week, use: -->
221-
<!-- * *No New or Updated RFCs were created this week.* -->
222-
<!-- * [new|updated] []() -->
261+
* [RFC: `#[cfg(since(rust, "1.95"))]` for Rust-version conditional compilation](https://github.com/rust-lang/rfcs/pull/3857)
262+
* [Mitigation enforcement](https://github.com/rust-lang/rfcs/pull/3855)
263+
* [RFC for `#[stable(since)]`](https://github.com/rust-lang/rfcs/pull/3854)
223264

224265
## Upcoming Events
225266

@@ -343,7 +384,11 @@ Please see the latest [Who's Hiring thread on r/rust](INSERT_LINK_HERE)
343384

344385
# Quote of the Week
345386

346-
<!-- QOTW goes here -->
387+
> **Real Question:** is an array a struct/tuple, or is it an enum?
388+
389+
[Lokathor on github](https://github.com/rust-lang/rust/pull/146509#discussion_r2346807413)
390+
391+
Thanks to [Theemathas](https://users.rust-lang.org/t/twir-quote-of-the-week/328/1716) for the suggestion!
347392

348393
[Please submit quotes and vote for next week!](https://users.rust-lang.org/t/twir-quote-of-the-week/328)
349394

0 commit comments

Comments
 (0)