Skip to content

Commit a6cca36

Browse files
committed
C/QotW and notable changes
1 parent d92adef commit a6cca36

File tree

1 file changed

+115
-3
lines changed

1 file changed

+115
-3
lines changed

draft/2024-12-11-this-week-in-rust.md

Lines changed: 115 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ and just ask the editors to select the category.
4747

4848
## Crate of the Week
4949

50-
<!-- COTW goes here -->
50+
This week's crate is [include-utils](https://github.com/alekseysidorov/include-utils), a more powerful replacement for the standard library's `include_str` macro.
51+
52+
Thanks to [Aleksey Sidorov](https://users.rust-lang.org/t/crate-of-the-week/2704/1381) for the self-suggestion!
5153

5254
[Please submit your suggestions and votes for next week][submit_crate]!
5355

@@ -106,7 +108,111 @@ If you are an event organizer hoping to expand the reach of your event, please s
106108

107109
## Updates from the Rust Project
108110

109-
<!-- Rust updates go here -->
111+
462 pull requests were [merged in the last week][merged]
112+
113+
[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2024-12-03..2024-12-10
114+
115+
* [`dataflow_const_prop`: do not eval a ptr address in SwitchInt](https://github.com/rust-lang/rust/pull/134073)
116+
* [`fn_sig_for_fn_abi` should return a `ty::FnSig`, no need for a binder](https://github.com/rust-lang/rust/pull/133874)
117+
* [`rust_for_linux`: -Zreg-struct-return commandline flag for X86](https://github.com/rust-lang/rust/pull/130777)
118+
* [actually walk into lifetimes and attrs in `EarlyContextAndPass`](https://github.com/rust-lang/rust/pull/133992)
119+
* [add `allocate_bytes` and refactor `allocate_str` in InterpCx for raw byte…](https://github.com/rust-lang/rust/pull/133861)
120+
* [add context to "const in pattern" errors](https://github.com/rust-lang/rust/pull/133233)
121+
* [add lint against function pointer comparisons](https://github.com/rust-lang/rust/pull/118833)
122+
* [add more info on type/trait mismatches for different crate versions](https://github.com/rust-lang/rust/pull/133767)
123+
* [avoid `opaque type not constrained` errors in the presence of other errors](https://github.com/rust-lang/rust/pull/133850)
124+
* [avoid fetching the anon const hir node that is already available](https://github.com/rust-lang/rust/pull/133936)
125+
* [deeply normalize when computing implied outlives bounds](https://github.com/rust-lang/rust/pull/133517)
126+
* [do not implement unsafe auto traits for types with unsafe fields](https://github.com/rust-lang/rust/pull/133934)
127+
* [don't suggest restricting bound with unstable traits on stable and mention it's unstable on nightly](https://github.com/rust-lang/rust/pull/133522)
128+
* [don't use a SyntheticProvider for literally every type](https://github.com/rust-lang/rust/pull/133134)
129+
* [fix MutVisitor's default implementations to visit Stmt's and BinOp's spans](https://github.com/rust-lang/rust/pull/133784)
130+
* [fix suggestion when shorthand `self` has erroneous type](https://github.com/rust-lang/rust/pull/122161)
131+
* [gate async fn trait bound modifier on `async_trait_bounds`](https://github.com/rust-lang/rust/pull/132612)
132+
* [handle `--json-output` properly](https://github.com/rust-lang/rust/pull/133875)
133+
* [hide errors whose suggestions would contain error constants or types](https://github.com/rust-lang/rust/pull/133954)
134+
* [implement checks for tail calls](https://github.com/rust-lang/rust/pull/133607)
135+
* [improve `TagEncoding::Niche` docs, sanity check, and UB checks](https://github.com/rust-lang/rust/pull/133681)
136+
* [include LLDB and GDB visualizers in MSVC distribution](https://github.com/rust-lang/rust/pull/133737)
137+
* [introduce `default_field_values` feature](https://github.com/rust-lang/rust/pull/129514)
138+
* [lint against `Symbol::intern` on a string literal](https://github.com/rust-lang/rust/pull/133545)
139+
* [lint: change help for pointers to dyn types in FFI](https://github.com/rust-lang/rust/pull/131669)
140+
* [make CoercePointee errors translatable](https://github.com/rust-lang/rust/pull/133774)
141+
* [make sure to record deps from cached task in new solver on first run](https://github.com/rust-lang/rust/pull/133828)
142+
* [move most tests for `-l` and `#[link(..)]` into `tests/ui/link-native-libs`](https://github.com/rust-lang/rust/pull/133996)
143+
* [no need to create placeholders for GAT args in `confirm_object_candidate`](https://github.com/rust-lang/rust/pull/133872)
144+
* [only allow `PassMode::Direct` for aggregates on wasm when using the C ABI](https://github.com/rust-lang/rust/pull/133931)
145+
* [parse guard patterns](https://github.com/rust-lang/rust/pull/133424)
146+
* [reduce false positives on some common cases from if-let-rescope lint](https://github.com/rust-lang/rust/pull/133753)
147+
* [reimplement `~const` trait specialization](https://github.com/rust-lang/rust/pull/133325)
148+
* [structurally resolve in `adjust_for_branches`](https://github.com/rust-lang/rust/pull/133559)
149+
* [structurally resolve in `probe_adt`](https://github.com/rust-lang/rust/pull/133558)
150+
* [unify `sysroot_target_{bin,lib}dir` handling](https://github.com/rust-lang/rust/pull/132723)
151+
* [use correct `hir_id` for array const arg infers](https://github.com/rust-lang/rust/pull/133779)
152+
* [miri: cleanup: avoid passing byte slice to `anonsocket_read`](https://github.com/rust-lang/miri/pull/4074)
153+
* [miri: fix SC fence logic](https://github.com/rust-lang/miri/pull/4076)
154+
* [miri: fix weak memory emulation to avoid generating behaviors that are forbidden under C++ 20](https://github.com/rust-lang/miri/pull/4057)
155+
* [miri: implement `simd_relaxed_fma`](https://github.com/rust-lang/miri/pull/4071)
156+
* [extend Miri to correctly pass mutable pointers through FFI](https://github.com/rust-lang/rust/pull/133211)
157+
* [remove polymorphization](https://github.com/rust-lang/rust/pull/133883)
158+
* [introduce `MixedBitSet`](https://github.com/rust-lang/rust/pull/133891)
159+
* [stabilize `const_collections_with_hasher` and `build_hasher_default_const_new`](https://github.com/rust-lang/rust/pull/133696)
160+
* [stabilize `const_{size,align}_of_val`](https://github.com/rust-lang/rust/pull/133762)
161+
* [stabilize `noop_waker`](https://github.com/rust-lang/rust/pull/133089)
162+
* [stabilize `std::io::ErrorKind::CrossesDevices`](https://github.com/rust-lang/rust/pull/130209)
163+
* [stabilize `std::io::ErrorKind::QuotaExceeded`](https://github.com/rust-lang/rust/pull/130254)
164+
* [add `core::arch::breakpoint` and test](https://github.com/rust-lang/rust/pull/133726)
165+
* [implementation of `fmt::FormattingOptions`](https://github.com/rust-lang/rust/pull/118159)
166+
* [add Extend impls for tuples of arity 1 through 12](https://github.com/rust-lang/rust/pull/132187)
167+
* [cargo: `docs(fingerprint)`: cargo-rustc extra flags do not affect the metadata](https://github.com/rust-lang/cargo/pull/14898)
168+
* [cargo: `feat(build-rs)`: Add the 'error' directive](https://github.com/rust-lang/cargo/pull/14910)
169+
* [cargo: `fix(add)`: Don't select yanked versions when normalizing names](https://github.com/rust-lang/cargo/pull/14895)
170+
* [cargo: `fix(build-rs)`: Correctly refer to the item in assert](https://github.com/rust-lang/cargo/pull/14913)
171+
* [cargo: `fix(build-std)`: determine root crates by target spec `std:bool`](https://github.com/rust-lang/cargo/pull/14899)
172+
* [cargo: `fix(fingerprint)`: Don't throwaway the cache on RUSTFLAGS changes](https://github.com/rust-lang/cargo/pull/14830)
173+
* [cargo: `fix(fix)`: Migrate workspace dependencies](https://github.com/rust-lang/cargo/pull/14890)
174+
* [cargo: `test(build-std)`: make mock-std closer to real world](https://github.com/rust-lang/cargo/pull/14896)
175+
* [cargo: fix(build-rs)!: remove meaningless `'cargo_cfg_debug_assertions'`](https://github.com/rust-lang/cargo/pull/14901)
176+
* [cargo: refactor: use `Path::push` to construct remap-path-prefix](https://github.com/rust-lang/cargo/pull/14908)
177+
* [cargo: semVer: add section on RPIT capturing](https://github.com/rust-lang/cargo/pull/14849)
178+
* [rustdoc: remove eq for `clean::Attributes`](https://github.com/rust-lang/rust/pull/133960)
179+
* [rustdoc: rename `issue-\d+.rs` tests to have meaningful names (part 10)](https://github.com/rust-lang/rust/pull/134053)
180+
* [rustdoc: rename `set_back_info` to `restore_module_data`](https://github.com/rust-lang/rust/pull/133764)
181+
* [rustdoc: always display first line of impl blocks even when collapsed](https://github.com/rust-lang/rust/pull/132155)
182+
* [improve code for FileName retrieval in rustdoc](https://github.com/rust-lang/rust/pull/133804)
183+
* [clippy: `doc_lazy_continuation`: Correctly count indent with backslashes](https://github.com/rust-lang/rust-clippy/pull/13742)
184+
* [clippy: extend `precedence` for bitmasking and shift](https://github.com/rust-lang/rust-clippy/pull/13743)
185+
* [clippy: new lint for `as *const _` and `as *mut _` pointer casts](https://github.com/rust-lang/rust-clippy/pull/13251)
186+
* [rust-analyzer: add Configurable Option to Exclude Trigger Characters for Typing Assists](https://github.com/rust-lang/rust-analyzer/pull/18522)
187+
* [rust-analyzer: add implict unsafety inlay hints for extern blocks](https://github.com/rust-lang/rust-analyzer/pull/18610)
188+
* [rust-analyzer: add typing handler for param list pipe](https://github.com/rust-lang/rust-analyzer/pull/18628)
189+
* [rust-analyzer: complete derive helper attributes](https://github.com/rust-lang/rust-analyzer/pull/18604)
190+
* [rust-analyzer: complete diagnostics in ty lowering groundwork and serve a first diagnostic 🎉](https://github.com/rust-lang/rust-analyzer/pull/18541)
191+
* [rust-analyzer: extend reported unsafe operations](https://github.com/rust-lang/rust-analyzer/pull/18609)
192+
* [rust-analyzer: support `AsyncFnX` traits](https://github.com/rust-lang/rust-analyzer/pull/18594)
193+
* [rust-analyzer: fix parsing of parenthesized type args and RTN](https://github.com/rust-lang/rust-analyzer/pull/18593)
194+
* [rust-analyzer: better parser recovery for paths](https://github.com/rust-lang/rust-analyzer/pull/18608)
195+
* [rust-analyzer: coerce two `FnDef`s to fn pointers even if they are the same, if they are subtypes](https://github.com/rust-lang/rust-analyzer/pull/18633)
196+
* [rust-analyzer: disable `<` typing handler again](https://github.com/rust-lang/rust-analyzer/pull/18616)
197+
* [rust-analyzer: do not report warnings from proc macros, ever](https://github.com/rust-lang/rust-analyzer/pull/18611)
198+
* [rust-analyzer: fix a bug when synthetic AST node were searched in the AST ID map and caused panics](https://github.com/rust-lang/rust-analyzer/pull/18555)
199+
* [rust-analyzer: fix parser getting stuck for bad asm expressions](https://github.com/rust-lang/rust-analyzer/pull/18625)
200+
* [rust-analyzer: fix parsing of dyn T in generic arg on 2015 edition](https://github.com/rust-lang/rust-analyzer/pull/18622)
201+
* [rust-analyzer: fix parsing of integer/keyword name refs in various places](https://github.com/rust-lang/rust-analyzer/pull/18618)
202+
* [rust-analyzer: fix shadowing of record `enum` variant in patterns](https://github.com/rust-lang/rust-analyzer/pull/18607)
203+
* [rust-analyzer: fixed another bug with glob imports](https://github.com/rust-lang/rust-analyzer/pull/18605)
204+
* [rust-analyzer: map new replacement nodes to their mutable equivalents in `SyntaxEditor`](https://github.com/rust-lang/rust-analyzer/pull/18531)
205+
* [rust-analyzer: non-exhaustive structs may be empty](https://github.com/rust-lang/rust-analyzer/pull/18645)
206+
* [rust-analyzer: panic when displaying generic params with defaults](https://github.com/rust-lang/rust-analyzer/pull/18619)
207+
* [rust-analyzer: parse lifetime bounds in lifetime param into TypeBoundList](https://github.com/rust-lang/rust-analyzer/pull/18620)
208+
* [rust-analyzer: resolve generic parameters within use captures](https://github.com/rust-lang/rust-analyzer/pull/18621)
209+
* [rust-analyzer: temporarily disable completion resolve support for helix and neovim](https://github.com/rust-lang/rust-analyzer/pull/18630)
210+
* [rust-analyzer: improve heuristics for on typing semicolon insertion](https://github.com/rust-lang/rust-analyzer/pull/18627)
211+
* [rust-analyzer: make bracket typing handler work on more things](https://github.com/rust-lang/rust-analyzer/pull/18474)
212+
* [rust-analyzer: migrate `add_turbo_fish` to `SyntaxEditor`](https://github.com/rust-lang/rust-analyzer/pull/18551)
213+
* [rust-analyzer: migrate `introduce_named_generic` Assist to Use `SyntaxFactory`](https://github.com/rust-lang/rust-analyzer/pull/18483)
214+
* [rust-analyzer: migrate `sort_items` Assist to Use `SyntaxFactory`](https://github.com/rust-lang/rust-analyzer/pull/18538)
215+
* [rust-analyzer: vscode: only show status bar item in relevant files](https://github.com/rust-lang/rust-analyzer/pull/18592)
110216

111217
### Rust Compiler Performance Triage
112218

@@ -287,7 +393,13 @@ Please see the latest [Who's Hiring thread on r/rust](INSERT_LINK_HERE)
287393

288394
# Quote of the Week
289395

290-
<!-- QOTW goes here -->
396+
> Memory-safe implementations of PNG ([png](https://crates.io/crates/png), [zune-png](https://crates.io/crates/zune-png), [wuffs](https://github.com/google/wuffs/)) now dramatically outperform memory-unsafe ones ([libpng](http://www.libpng.org/), [spng](https://libspng.org/), [stb_image](https://github.com/nothings/stb)) when decoding images.
397+
>
398+
> Rust [png](https://crates.io/crates/png) crate that tops our benchmark shows **1.8x** improvement over `libpng` on x86 and **1.5x** improvement on ARM.
399+
400+
[Shnatsel on /r/rust](https://www.reddit.com/r/rust/comments/1ha7uyi/memorysafe_png_decoders_now_vastly_outperform_c/)
401+
402+
Thanks to [Anton Fetisov](https://users.rust-lang.org/t/twir-quote-of-the-week/328/1641) for the suggestion!
291403

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

0 commit comments

Comments
 (0)