<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_middle/src/middle, branch beta</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=beta</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=beta'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-09-04T00:01:55+00:00</updated>
<entry>
<title>Rollup merge of #145932 - JamieCunliffe:target-feature-inlining, r=jackh726</title>
<updated>2025-09-04T00:01:55+00:00</updated>
<author>
<name>Stuart Cook</name>
<email>Zalathar@users.noreply.github.com</email>
</author>
<published>2025-09-04T00:01:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f90cc353b808d9a1a1e6cc9748dc10e7a20ee211'/>
<id>urn:sha1:f90cc353b808d9a1a1e6cc9748dc10e7a20ee211</id>
<content type='text'>
Allow `inline(always)` with a target feature behind a unstable feature `target_feature_inline_always`.

Rather than adding the inline always attribute to the function definition, we add it to the callsite. We can then check that the target features match and that the call would be safe to inline. If the function isn't inlined due to a mismatch, we emit a warning informing the user that the function can't be inlined due to the target feature mismatch.

See tracking issue rust-lang/rust#145574
</content>
</entry>
<entry>
<title>Rollup merge of #145342 - dianne:if-let-super-let, r=nnethercote</title>
<updated>2025-09-04T00:01:53+00:00</updated>
<author>
<name>Stuart Cook</name>
<email>Zalathar@users.noreply.github.com</email>
</author>
<published>2025-09-04T00:01:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cd59ee791f9a1c8c41a585c3781c4c02c3128c08'/>
<id>urn:sha1:cd59ee791f9a1c8c41a585c3781c4c02c3128c08</id>
<content type='text'>
fix drop scope for `super let` bindings within `if let`

Fixes rust-lang/rust#145328 by making non-lifetime-extended `super let` reuse the logic used to compute drop scopes for non-lifetime-extended temporaries.

Also fixes rust-lang/rust#145374, which regressed due to rust-lang/rust#143376 introducing `if let`-like scopes for match arms with guards.

Tracking issue for `super let`: rust-lang/rust#139076

This is a regression fix / breaking change for macros stably exposing `super let`, including `pin!` and `format_args!`.
Nominating to be discussed alongside rust-lang/rust#145328: ```@rustbot``` label +I-lang-nominated +I-libs-api-nominated
</content>
</entry>
<entry>
<title>inline at the callsite &amp; warn when target features mismatch</title>
<updated>2025-08-27T13:45:01+00:00</updated>
<author>
<name>James Barford-Evans</name>
<email>james.barford-evans@arm.com</email>
</author>
<published>2025-08-21T13:32:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bcfc9b5073a92bbb4b1e4db2eab535357d8973ad'/>
<id>urn:sha1:bcfc9b5073a92bbb4b1e4db2eab535357d8973ad</id>
<content type='text'>
Co-authored-by: Jamie Cunliffe &lt;Jamie.Cunliffe@arm.com&gt;
</content>
</entry>
<entry>
<title>add a flag to codegen fn attrs for foreign items</title>
<updated>2025-08-26T11:05:51+00:00</updated>
<author>
<name>Jana Dönszelmann</name>
<email>jana@donsz.nl</email>
</author>
<published>2025-08-25T16:52:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d66ca530000af040a6f0a53c48e3ee35ae96f86b'/>
<id>urn:sha1:d66ca530000af040a6f0a53c48e3ee35ae96f86b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #145747 - joshtriplett:builtin-diag-dyn, r=jdonszelmann</title>
<updated>2025-08-23T02:00:59+00:00</updated>
<author>
<name>Jacob Pratt</name>
<email>jacob@jhpratt.dev</email>
</author>
<published>2025-08-23T02:00:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d3c9908a8a91e8d732201caac2c809d4e96d0027'/>
<id>urn:sha1:d3c9908a8a91e8d732201caac2c809d4e96d0027</id>
<content type='text'>
Refactor lint buffering to avoid requiring a giant enum

Lint buffering currently relies on a giant enum `BuiltinLintDiag` containing all the lints that might potentially get buffered. In addition to being an unwieldy enum in a central crate, this also makes `rustc_lint_defs` a build bottleneck: it depends on various types from various crates (with a steady pressure to add more), and many crates depend on it.

Having all of these variants in a separate crate also prevents detecting when a variant becomes unused, which we can do with a dedicated type defined and used in the same crate.

Refactor this to use a dyn trait, to allow using `LintDiagnostic` types directly.

Because the existing `BuiltinLintDiag` requires some additional types in order to decorate some variants, which are only available later in `rustc_lint`, use an enum `DecorateDiagCompat` to handle both the `dyn LintDiagnostic` case and the `BuiltinLintDiag` case.

---

With the infrastructure in place, use it to migrate three of the enum variants to use `LintDiagnostic` directly, as a proof of concept and to demonstrate that the net result is a reduction in code size and a removal of a boilerplate-heavy layer of indirection.

Also remove an unused `BuiltinLintDiag` variant.
</content>
</entry>
<entry>
<title>Refactor lint buffering to avoid requiring a giant enum</title>
<updated>2025-08-22T08:59:56+00:00</updated>
<author>
<name>Josh Triplett</name>
<email>josh@joshtriplett.org</email>
</author>
<published>2025-08-22T03:30:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c99320156dfeea98836fe7dad97d16f67c4d879e'/>
<id>urn:sha1:c99320156dfeea98836fe7dad97d16f67c4d879e</id>
<content type='text'>
Lint buffering currently relies on a giant enum `BuiltinLintDiag`
containing all the lints that might potentially get buffered. In
addition to being an unwieldy enum in a central crate, this also makes
`rustc_lint_defs` a build bottleneck: it depends on various types from
various crates (with a steady pressure to add more), and many crates
depend on it.

Having all of these variants in a separate crate also prevents detecting
when a variant becomes unused, which we can do with a dedicated type
defined and used in the same crate.

Refactor this to use a dyn trait, to allow using `LintDiagnostic` types
directly.

This requires boxing, but all of this is already on the slow path
(emitting an error).

Because the existing `BuiltinLintDiag` requires some additional types in
order to decorate some variants, which are only available later in
`rustc_lint`, use an enum `DecorateDiagCompat` to handle both the `dyn
LintDiagnostic` case and the `BuiltinLintDiag` case.
</content>
</entry>
<entry>
<title>Add an experimental unsafe(force_target_feature) attribute.</title>
<updated>2025-08-21T23:26:26+00:00</updated>
<author>
<name>Luca Versari</name>
<email>veluca@google.com</email>
</author>
<published>2025-08-18T13:09:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=291da71b2ae2e5d313739a7d6a8ffa634f408db5'/>
<id>urn:sha1:291da71b2ae2e5d313739a7d6a8ffa634f408db5</id>
<content type='text'>
This uses the feature gate for
https://github.com/rust-lang/rust/issues/143352, but is described in
https://github.com/rust-lang/rfcs/pull/3820 which is strongly tied to
the experiment.
</content>
</entry>
<entry>
<title>Rollup merge of #145429 - bjorn3:codegen_fn_attrs_improvements, r=jdonszelmann</title>
<updated>2025-08-19T11:45:31+00:00</updated>
<author>
<name>许杰友 Jieyou Xu (Joe)</name>
<email>39484203+jieyouxu@users.noreply.github.com</email>
</author>
<published>2025-08-19T11:45:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=62227334ae04429f4b1196c8f852d666ae56204b'/>
<id>urn:sha1:62227334ae04429f4b1196c8f852d666ae56204b</id>
<content type='text'>
Couple of codegen_fn_attrs improvements

As noted in https://github.com/rust-lang/rust/pull/144678#discussion_r2245060329 here is no need to keep link_name and export_name separate, which the third commit fixes by merging them. The second commit removes some dead code and the first commit merges two ifs with equivalent conditions. The last commit is an unrelated change which removes an unused `feature(autodiff)`.
</content>
</entry>
<entry>
<title>Remove the no_sanitize attribute in favor of sanitize</title>
<updated>2025-08-18T08:45:28+00:00</updated>
<author>
<name>Bastian Kersting</name>
<email>bkersting@google.com</email>
</author>
<published>2025-06-18T13:47:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=95bdb34494ad795f552cab7a0eb7bfd2e98ef033'/>
<id>urn:sha1:95bdb34494ad795f552cab7a0eb7bfd2e98ef033</id>
<content type='text'>
This removes the #[no_sanitize] attribute, which was behind an unstable
feature named no_sanitize. Instead, we introduce the sanitize attribute
which is more powerful and allows to be extended in the future (instead
of just focusing on turning sanitizers off).

This also makes sanitize(kernel_address = ..) attribute work with
-Zsanitize=address

To do it the same as how clang disables address sanitizer, we now
disable ASAN on sanitize(kernel_address = "off") and KASAN on
sanitize(address = "off").

The same was added to clang in https://reviews.llvm.org/D44981.
</content>
</entry>
<entry>
<title>Merge link_name and export_name</title>
<updated>2025-08-15T10:04:04+00:00</updated>
<author>
<name>bjorn3</name>
<email>17426603+bjorn3@users.noreply.github.com</email>
</author>
<published>2025-08-15T09:37:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=460519a7f509756d07dcf187e671a11fde7b3fca'/>
<id>urn:sha1:460519a7f509756d07dcf187e671a11fde7b3fca</id>
<content type='text'>
</content>
</entry>
</feed>
