Skip to content

Commit 2e2ee84

Browse files
authored
Merge branch 'master' into master
2 parents c4b9fd8 + 54796ea commit 2e2ee84

File tree

5 files changed

+174
-37
lines changed

5 files changed

+174
-37
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 & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +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
51-
- [Rust Unit Testing Test Doubles: Fakes](https://jorgeortiz.dev/posts/rust_unit_testing_test_doubles_fake/)
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)
5263

5364
### Research
5465

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

5769
## Crate of the Week
5870

59-
<!-- 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!
6074

6175
[Please submit your suggestions and votes for next week][submit_crate]!
6276

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

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

126142
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)!
@@ -134,15 +150,104 @@ Are you a new or experienced speaker looking for a place to share something cool
134150
<!-- 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 -->
135151
<!-- or if none - *No Calls for papers or presentations were submitted this week.* -->
136152

153+
* [**TokioConf 2026**](https://tokio.rs/blog/2025-09-26-announcing-tokio-conf-cfp)| CFP closes 2025-12-08 | Portland, Oregon, USA | 2026-04-20
154+
137155
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)!
138156

139157
## Updates from the Rust Project
140158

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

143229
### Rust Compiler Performance Triage
144230

145-
<!-- Perf results go here -->
231+
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.
232+
233+
Triage done by **@kobzol**.
234+
235+
Revision range: [23fced0f..35ebdf9b](https://perf.rust-lang.org/?start=23fced0fcc5e0ec260d25f04a8b78b269e5e90f0&end=35ebdf9ba1414456dfe1cb6a6b13ebae80e99734&absolute=false&stat=instructions%3Au)
236+
237+
**Summary**:
238+
239+
| (instructions:u) | mean | range | count |
240+
|:----------------------------------:|:-----:|:---------------:|:-----:|
241+
| Regressions ❌ <br /> (primary) | 0.8% | [0.1%, 2.9%] | 22 |
242+
| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.7%] | 48 |
243+
| Improvements ✅ <br /> (primary) | -2.8% | [-16.4%, -0.1%] | 102 |
244+
| Improvements ✅ <br /> (secondary) | -1.9% | [-8.0%, -0.1%] | 51 |
245+
| All ❌✅ (primary) | -2.1% | [-16.4%, 2.9%] | 124 |
246+
247+
4 Regressions, 6 Improvements, 7 Mixed; 7 of them in rollups
248+
36 artifact comparisons made in total
249+
250+
[Full report here](https://github.com/rust-lang/rustc-perf/blob/057eaab3021d6bc301bba06b69e7e1cfdb4f9c3d/triage/2025/2025-11-03.md).
146251

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

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

361466
# Quote of the Week
362467

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

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

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)