Skip to content

Commit 64b18bf

Browse files
committed
merge master
2 parents 5b31dde + 4de9f1f commit 64b18bf

File tree

5 files changed

+174
-36
lines changed

5 files changed

+174
-36
lines changed

README.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,21 @@ Use the included `new_contribs.sh` script:
187187

188188
## Building
189189

190-
To ensure consistency across development setups, we use a [Docker](https://www.docker.com) container-based
191-
workflow for building the website and email newsletter. Similarly, we use a `makefile` to ensure you have Docker installed on your system if
192-
you intend to build the website or email newsletter.
190+
To ensure consistency across development setups, we use a
191+
[Docker](https://www.docker.com) container-based workflow for building the
192+
website and email newsletter. Similarly, we use [Just](https://just.systems/) to
193+
ensure you have Docker installed on your system if you intend to build the
194+
website or email newsletter.
195+
196+
### Install Just
197+
198+
To install Just you have
199+
[many options](https://just.systems/man/en/packages.html); we recommend using
200+
Cargo:
201+
202+
```sh
203+
cargo install just
204+
```
193205

194206
### Building the website
195207

@@ -207,7 +219,7 @@ cd publishing
207219
- Run the Docker build and website local-host command:
208220

209221
```sh
210-
make website
222+
just website
211223
```
212224

213225
- View the website locally at default
@@ -237,7 +249,7 @@ cd publishing
237249
- Run the Docker build and website local-host command:
238250

239251
```sh
240-
make email
252+
just email
241253
```
242254

243255
- View the email newsletter formatting of specific posts at

content/2025-10-29-this-week-in-rust.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,6 @@ which are reaching a decision. Express your opinions now.
281281
* [target tier 3 support for hexagon-unknown-qurt](https://github.com/rust-lang/compiler-team/issues/919)
282282
* [Proposal for a dedicated test suite for the parallel frontend](https://github.com/rust-lang/compiler-team/issues/906)
283283
* [Give integer literals a sign instead of relying on negation expressions](https://github.com/rust-lang/compiler-team/issues/835)
284-
* [Also enable ICE file dumps on stable](https://github.com/rust-lang/compiler-team/issues/809)
285284
* [New Tier-3 target proposal: `loongarch64-linux-android`](https://github.com/rust-lang/compiler-team/issues/806)
286285

287286
##### [Leadership Council](https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period)

draft/2025-11-05-this-week-in-rust.md

Lines changed: 115 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,35 @@ and just ask the editors to select the category.
4242
### Foundation
4343

4444
### Newsletters
45+
* [Rust Trends Issue #71: Production Rust at Internet Scale](https://rust-trends.com/newsletter/production-rust-internet-scale)
4546

4647
### Project/Tooling Updates
48+
* [Developing UEFI in Rust with Patina](https://opendevicepartnership.github.io/patina/introduction.html)
49+
50+
* [`esp-hal` 1.0.0 release announcement](https://developer.espressif.com/blog/2025/10/esp-hal-1/)
4751

4852
### Observations/Thoughts
53+
- [Ghosts in the Compilation](https://predr.ag/blog/ghosts-in-the-compilation/)
54+
55+
* [audio] [Netstack.FM Episode 12 – Oxide Networking with Ryan Goodfellow](https://netstack.fm/#episode-12)
4956

5057
### Rust Walkthroughs
58+
* [Rust Unit Testing Test Doubles: Fakes](https://jorgeortiz.dev/posts/rust_unit_testing_test_doubles_fake/)
59+
* [Building a Coding Agent in Rust: Implementing Chat Feature](https://blog.0xshadow.dev/posts/coding-agent-in-rust/coding-agent-in-rust-chat/)
60+
* [Image Classification in Rust with Tch-rs (Torch bindings)](https://www.djamware.com/post/690864cde87a290bcfebeebe/image-classification-in-rust-with-tchrs-torch-bindings)
61+
* [video] [Building Coding Agent in Rust | Implement Chat CLI | Part-2](https://www.youtube.com/watch?v=N21aCBICHLU)
62+
* [Inside Rust's std and parking_lot mutexes - who wins?](https://blog.cuongle.dev/p/inside-rusts-std-and-parking-lot-mutexes-who-win)
5163

5264
### Research
5365

5466
### Miscellaneous
67+
* [Building Next Generation Rail Systems With Rust: Tom Praderio of Parallel](https://filtra.io/rust/interviews/parallel-nov-25)
5568

5669
## Crate of the Week
5770

58-
<!-- COTW goes here -->
71+
This week's crate is [dioxus](https://docs.rs/dioxus), a framework for building cross-platform apps.
72+
73+
Thanks to [llogiq](https://users.rust-lang.org/t/crate-of-the-week/2704/1484) for the suggestion!
5974

6075
[Please submit your suggestions and votes for next week][submit_crate]!
6176

@@ -98,7 +113,9 @@ Every week we highlight some tasks from the Rust community for you to pick and g
98113
Some of these tasks may also have mentors available, visit the task page for more information.
99114

100115
<!-- CFPs go here, use this format: * [project name - title of issue](URL to issue) -->
101-
<!-- * [ - ]() -->
116+
* [Motor OS - Improve rush (the shell in Motor OS)](https://github.com/moturus/motor-os/issues/33)
117+
* [Motor OS - Make imager configurable](https://github.com/moturus/motor-os/issues/24)
118+
* [Motor OS - Port libc/llvm/rustc](https://github.com/moturus/motor-os/issues/26)
102119
<!-- or if none - *No Calls for participation were submitted this week.* -->
103120

104121
If you are a Rust project owner and are looking for contributors, please submit tasks [here][guidelines] or through a [PR to TWiR](https://github.com/rust-lang/this-week-in-rust) or by reaching out on [Bluesky](https://bsky.app/profile/thisweekinrust.bsky.social) or [Mastodon](https://mastodon.social/@thisweekinrust)!
@@ -112,15 +129,104 @@ Are you a new or experienced speaker looking for a place to share something cool
112129
<!-- 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 -->
113130
<!-- or if none - *No Calls for papers or presentations were submitted this week.* -->
114131

132+
* [**TokioConf 2026**](https://tokio.rs/blog/2025-09-26-announcing-tokio-conf-cfp)| CFP closes 2025-12-08 | Portland, Oregon, USA | 2026-04-20
133+
115134
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 [Bluesky](https://bsky.app/profile/thisweekinrust.bsky.social) or [Mastodon](https://mastodon.social/@thisweekinrust)!
116135

117136
## Updates from the Rust Project
118137

119-
<!-- Rust updates go here -->
138+
480 pull requests were [merged in the last week][merged]
139+
140+
[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2025-10-28..2025-11-04
141+
142+
#### Compiler
143+
* [`rustc_codegen`: fix musttail returns for cast/indirect ABIs](https://github.com/rust-lang/rust/pull/148240)
144+
* [accept trivial consts based on trivial consts](https://github.com/rust-lang/rust/pull/148182)
145+
* [add LLVM range attributes to slice length parameters](https://github.com/rust-lang/rust/pull/148350)
146+
* [adjust successor iterators](https://github.com/rust-lang/rust/pull/148157)
147+
* [allow check builds with binaries for the dummy codegen backend](https://github.com/rust-lang/rust/pull/148299)
148+
* [allow codegen backends to indicate which crate types they support](https://github.com/rust-lang/rust/pull/148177)
149+
* [better warning message for crate type unsupported by codegen backend](https://github.com/rust-lang/rust/pull/148400)
150+
* [contract variable declarations](https://github.com/rust-lang/rust/pull/144444)
151+
* [fix deferred cast checks using the wrong body for determining constness](https://github.com/rust-lang/rust/pull/148287)
152+
* [fix types being marked as dead when they are inferred generic arguments](https://github.com/rust-lang/rust/pull/148262)
153+
* [implement pin-project in pattern matching for `&pin mut|const T`](https://github.com/rust-lang/rust/pull/139751)
154+
* [miscellaneous const-generics-related fixes](https://github.com/rust-lang/rust/pull/147642)
155+
* [remove `QPath::LangItem`](https://github.com/rust-lang/rust/pull/148193)
156+
* [stabilize -Zno-jump-tables into -Cjump-tables=bool](https://github.com/rust-lang/rust/pull/145974)
157+
* [when a trait isn't implemented, but another similar impl is found, point at it](https://github.com/rust-lang/rust/pull/145640)
158+
159+
#### Library
160+
* [add `from_fn_ptr` to `Waker` and `LocalWaker`](https://github.com/rust-lang/rust/pull/146057)
161+
* [add SliceIndex wrapper types Last and `Clamp<Idx>`](https://github.com/rust-lang/rust/pull/146260)
162+
* [constify Range functions](https://github.com/rust-lang/rust/pull/146573)
163+
* [constify trait aliases](https://github.com/rust-lang/rust/pull/144291)
164+
* [implement VecDeque `extend_from_within` and `prepend_from_within`](https://github.com/rust-lang/rust/pull/147161)
165+
* [implement `VecDeque::extract_if`](https://github.com/rust-lang/rust/pull/147780)
166+
* [implement `strip_circumfix` lib feature](https://github.com/rust-lang/rust/pull/147947)
167+
* [smart pointer `(try_)map`](https://github.com/rust-lang/rust/pull/144420)
168+
* [stabilize `fmt::from_fn`](https://github.com/rust-lang/rust/pull/145915)
169+
170+
#### Cargo
171+
* [`build-analysis`: JSONL-based logging infra](https://github.com/rust-lang/cargo/pull/16150)
172+
* [`build-analysis`: emit timing-info log](https://github.com/rust-lang/cargo/pull/16179)
173+
* [`config-include`: add optional field support](https://github.com/rust-lang/cargo/pull/16180)
174+
* [`config-include`: support inline and array of tables](https://github.com/rust-lang/cargo/pull/16174)
175+
* [support array of any types in Cargo config](https://github.com/rust-lang/cargo/pull/16103)
176+
177+
#### Rustdoc
178+
* [search: Include extern crates when filtering on `import`](https://github.com/rust-lang/rust/pull/148301)
179+
* [Include attribute and derive macros when filtering on "macros"](https://github.com/rust-lang/rust/pull/148176)
180+
* [use configured target modifiers when collecting doctests](https://github.com/rust-lang/rust/pull/148068)
181+
182+
#### Clippy
183+
* [`search_is_some`: Fix when the closure spans multiple lines](https://github.com/rust-lang/rust-clippy/pull/15902)
184+
* [`double_parens`: don't lint in proc-macros](https://github.com/rust-lang/rust-clippy/pull/15939)
185+
* [`let_and_return`: disallow `_any_` text between let and return](https://github.com/rust-lang/rust-clippy/pull/16006)
186+
* [`use_debug`: don't get confused by nested `Debug` impls](https://github.com/rust-lang/rust-clippy/pull/15946)
187+
* [`incompatible_msrv`: Don't check the const MSRV for uncalled functions](https://github.com/rust-lang/rust-clippy/pull/15795)
188+
* [`manual_unwrap_or(_default)`: don't lint if not safe to move scrutinee](https://github.com/rust-lang/rust-clippy/pull/15817)
189+
* [extend `needless_collect`](https://github.com/rust-lang/rust-clippy/pull/14361)
190+
* [fix `replace_box` false positive when the box is moved](https://github.com/rust-lang/rust-clippy/pull/15984)
191+
* [improve doc comment code language tag parsing, don't use a full parser](https://github.com/rust-lang/rust-clippy/pull/15967)
192+
193+
#### Rust-Analyzer
194+
* [add ide-assist: `convert_range_for_to_while`](https://github.com/rust-lang/rust-analyzer/pull/20565)
195+
* [support memory profiling with dhat](https://github.com/rust-lang/rust-analyzer/pull/20927)
196+
* [fix missing other assoc items for `generate_blanket_trait_impl`](https://github.com/rust-lang/rust-analyzer/pull/20957)
197+
* [fix not applicable on while for `replace_is_method_with_if_let_method`](https://github.com/rust-lang/rust-analyzer/pull/20915)
198+
* [canonicalize `custom-target.json` paths when fetching sysroot metadata](https://github.com/rust-lang/rust-analyzer/pull/20964)
199+
* [consider more expression types as `in_value`](https://github.com/rust-lang/rust-analyzer/pull/20961)
200+
* [expand literals with wrong suffixes into `LitKind::Err`](https://github.com/rust-lang/rust-analyzer/pull/20963)
201+
* [false positive syntax errors on frontmatter](https://github.com/rust-lang/rust-analyzer/pull/20942)
202+
* [fix handling of blocks modules that are not the root module](https://github.com/rust-lang/rust-analyzer/pull/20930)
203+
* [improve error recovery when parsing malformed function return types](https://github.com/rust-lang/rust-analyzer/pull/20934)
204+
* [properly support opaques](https://github.com/rust-lang/rust-analyzer/pull/20906)
205+
* [resolve `target-dir` more precisely](https://github.com/rust-lang/rust-analyzer/pull/20920)
206+
* [show proper async function signatures in the signature help](https://github.com/rust-lang/rust-analyzer/pull/20931)
120207

121208
### Rust Compiler Performance Triage
122209

123-
<!-- Perf results go here -->
210+
Mostly positive week. We saw a great performance win implemented by [#148040](https://github.com/rust-lang/rust/pull/148040) and [#148182](https://github.com/rust-lang/rust/pull/148182), which optimizes crates with a lot of trivial constants.
211+
212+
Triage done by **@kobzol**.
213+
214+
Revision range: [23fced0f..35ebdf9b](https://perf.rust-lang.org/?start=23fced0fcc5e0ec260d25f04a8b78b269e5e90f0&end=35ebdf9ba1414456dfe1cb6a6b13ebae80e99734&absolute=false&stat=instructions%3Au)
215+
216+
**Summary**:
217+
218+
| (instructions:u) | mean | range | count |
219+
|:----------------------------------:|:-----:|:---------------:|:-----:|
220+
| Regressions ❌ <br /> (primary) | 0.8% | [0.1%, 2.9%] | 22 |
221+
| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.7%] | 48 |
222+
| Improvements ✅ <br /> (primary) | -2.8% | [-16.4%, -0.1%] | 102 |
223+
| Improvements ✅ <br /> (secondary) | -1.9% | [-8.0%, -0.1%] | 51 |
224+
| All ❌✅ (primary) | -2.1% | [-16.4%, 2.9%] | 124 |
225+
226+
4 Regressions, 6 Improvements, 7 Mixed; 7 of them in rollups
227+
36 artifact comparisons made in total
228+
229+
[Full report here](https://github.com/rust-lang/rustc-perf/blob/057eaab3021d6bc301bba06b69e7e1cfdb4f9c3d/triage/2025/2025-11-03.md).
124230

125231
### [Approved RFCs](https://github.com/rust-lang/rfcs/commits/master)
126232

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

336442
# Quote of the Week
337443

338-
<!-- QOTW goes here -->
444+
> If someone opens a PR introducing C++ to your Rust project, that code is free as in "use after"
445+
446+
[Predrag Gruevski on Mastodon]()
447+
448+
Thanks to [Brett Witty](https://users.rust-lang.org/t/twir-quote-of-the-week/328/1726) for the suggestion!
339449

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

publishing/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM python:3.8.16-slim
22

3-
# Must run from base `twir` directory... Makefile takes care of this.
3+
# Must run from base `twir` directory... justfile takes care of this.
44
WORKDIR /usr/twir
55

66
# Install deps and set locales
@@ -35,7 +35,7 @@ COPY plugins plugins
3535
COPY themes themes
3636
COPY pelicanconf.py pelicanconf.py
3737

38-
# make build && make generate-website && make host-website needs these scripts
38+
# just website && just email needs these scripts
3939
COPY publishing/*.sh .
4040
RUN chmod +x *.sh
4141

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
#!/bin/sh
2-
1+
# This Week in Rust - Publishing Tools
32
# TODO: Make sure running from latest "main" branch commit
43

4+
# Show available recipes
5+
help:
6+
@just --list
7+
58
# Typical flows:
69
#
7-
# 1. `make website`
10+
# 1. `just website`
811
# The first workflow will generate the desired website, landing
9-
# the end contents in the local "output-website/" directory. This is the
12+
# the end contents in the local "output-website/" directory. This is the
1013
# equivalent of running `pelican --delete-output-directory content`
1114
# from a properly instantantiated environment.
1215
#
@@ -16,62 +19,76 @@
1619
#
1720
# Output: `output-website/`
1821
#
19-
# 2. `make copy-website-contents`
22+
# 2. `just copy-website-contents`
2023
# This workflow will sync the `output-website/` directory from above, and sync
2124
# it with the directory passed to it. Used for syncing state with
2225
# this-week-in-rust.github.io repo.
2326
#
24-
# 3. `make email`
27+
# 3. `just email`
2528
# This workflow will generate the desired email template, landing
26-
# the end contents in the local "email/" directory. This is the
29+
# the end contents in the local "email/" directory. This is the
2730
# equivalent of running `USE_EMAIL_THEME=1 pelican --delete-output-directory content`
2831
# from a properly instantantiated environment, and running
2932
# `juice --web-resources-images false /juice/in.html /juice/out.html` on the latest content post.
30-
#
33+
#
3134
# $ build clean generate-email optimize-email
3235
#
3336
# Output: `email/<NUMBER>-<YEAR>-<MONTH>-<DAY>-email.html`
3437
#
3538

39+
# Generate and host website locally
3640
website: generate-website host-website
41+
42+
# Copy website contents to this-week-in-rust.github.io repo
3743
copy-website-contents:
38-
@./copy_website_content_to_repo.sh
44+
./copy_website_content_to_repo.sh
45+
46+
# Generate and optimize email template
3947
email: generate-email optimize-email
4048

41-
build:
49+
# Build Docker image
50+
docker-build:
4251
cd .. && docker build -t twir -f publishing/Dockerfile . && cd -
4352

53+
# Clean website output directories
4454
clean-website:
45-
@rm -rf output/ && rm -rf output-website/ && rm -rf juice/
55+
rm -rf output/ output-website/ juice/
56+
57+
# Clean email output directories
4658
clean-email:
47-
@rm -rf output/ && rm -rf output-email-format/ && rm -rf email/ && rm -rf juice/
59+
rm -rf output/ output-email-format/ email/ juice/
4860

49-
generate-website: build clean-website
61+
# Generate website content
62+
generate-website: docker-build clean-website
5063
@echo "Generating website..."
51-
@docker run -it \
52-
-v $(shell pwd)/output-website:/usr/twir/output \
53-
twir:latest
64+
docker run -it \
65+
-v {{justfile_directory()}}/output-website:/usr/twir/output \
66+
twir:latest
5467
@echo "Finished generating website."
5568

69+
# Host website locally on port 8000
5670
host-website:
5771
@echo "Hosting website..."
58-
@docker run -it \
72+
docker run -it \
5973
-p 8000:8000 \
60-
-v $(shell pwd)/output-website:/usr/twir/output:ro \
74+
-v {{justfile_directory()}}/output-website:/usr/twir/output:ro \
6175
-it \
6276
twir:latest \
6377
bash run_server.sh
6478
@echo "Finished hosting website."
6579
@echo ""
66-
@echo "To sync contents with your local 'this-week-in-rust.github.io' repo, run \033[1;33m'make copy-website-contents'\033[0m"
80+
@echo "To sync contents with your local 'this-week-in-rust.github.io' repo, run 'just copy-website-contents'"
6781

68-
generate-email: build clean-email
82+
# Generate email content
83+
generate-email: docker-build clean-email
6984
@echo "Generating email..."
70-
@docker run -it \
85+
mkdir -p output-email-format
86+
docker run -it \
7187
-e USE_EMAIL_THEME=1 \
72-
-v $(shell pwd)/output-email-format:/usr/twir/output \
88+
-v {{justfile_directory()}}/output-email-format:/usr/twir/output \
7389
twir:latest
7490

91+
# Optimize email HTML for delivery
7592
optimize-email:
7693
@echo "Generating optimized email..."
77-
@OUTPUT_PREFIX=output-email-format ./create_optimized_email.sh
94+
OUTPUT_PREFIX=output-email-format ./create_optimized_email.sh

0 commit comments

Comments
 (0)