<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/library/core/src/task, branch 1.87.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.87.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.87.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-03-06T21:21:59+00:00</updated>
<entry>
<title>Remove #[cfg(not(test))] gates in core</title>
<updated>2025-03-06T21:21:59+00:00</updated>
<author>
<name>Thalia Archibald</name>
<email>thalia@archibald.dev</email>
</author>
<published>2025-03-06T02:14:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=638b226a6ab5c5c784955068f57ae249e0ed0f92'/>
<id>urn:sha1:638b226a6ab5c5c784955068f57ae249e0ed0f92</id>
<content type='text'>
These gates are unnecessary now that unit tests for `core` are in a
separate package, `coretests`, instead of in the same files as the
source code. They previously prevented the two `core` versions from
conflicting with each other.
</content>
</entry>
<entry>
<title>docs: fix broken intra-doc links that never worked</title>
<updated>2025-02-15T19:21:38+00:00</updated>
<author>
<name>Michael Howell</name>
<email>michael@notriddle.com</email>
</author>
<published>2025-01-31T21:28:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4d551dd754477bb81ddef0829121ca90c8a8b286'/>
<id>urn:sha1:4d551dd754477bb81ddef0829121ca90c8a8b286</id>
<content type='text'>
</content>
</entry>
<entry>
<title>update version placeholders</title>
<updated>2025-01-08T19:02:18+00:00</updated>
<author>
<name>Pietro Albini</name>
<email>pietro@pietroalbini.org</email>
</author>
<published>2025-01-06T19:28:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4ae92b7adbafd018bf0c829a4691ffbb3933d8f0'/>
<id>urn:sha1:4ae92b7adbafd018bf0c829a4691ffbb3933d8f0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use field init shorthand where possible</title>
<updated>2024-12-17T22:33:10+00:00</updated>
<author>
<name>Josh Triplett</name>
<email>josh@joshtriplett.org</email>
</author>
<published>2024-12-17T22:33:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a105cd606628b07e79ab343cc183a176e278c809'/>
<id>urn:sha1:a105cd606628b07e79ab343cc183a176e278c809</id>
<content type='text'>
Field init shorthand allows writing initializers like `tcx: tcx` as
`tcx`. The compiler already uses it extensively. Fix the last few places
where it isn't yet used.
</content>
</entry>
<entry>
<title>Remove rustc_const_stable attribute on const NOOP</title>
<updated>2024-12-09T23:08:30+00:00</updated>
<author>
<name>Eric Holk</name>
<email>ericholk@microsoft.com</email>
</author>
<published>2024-12-09T23:08:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b9afc78585fe1cbda5d6a3aed665338e7381ae79'/>
<id>urn:sha1:b9afc78585fe1cbda5d6a3aed665338e7381ae79</id>
<content type='text'>
This was accidentally reintroduced while editing #133089.
</content>
</entry>
<entry>
<title>Stabilize noop_waker</title>
<updated>2024-12-05T22:14:17+00:00</updated>
<author>
<name>Eric Holk</name>
<email>ericholk@microsoft.com</email>
</author>
<published>2024-11-16T01:42:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=72ce1ab42f3be927f6f039a592222e054a0b0eaf'/>
<id>urn:sha1:72ce1ab42f3be927f6f039a592222e054a0b0eaf</id>
<content type='text'>
Co-authored-by: zachs18 &lt;8355914+zachs18@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>update cfgs</title>
<updated>2024-11-27T15:14:54+00:00</updated>
<author>
<name>Boxy</name>
<email>rust@boxyuwu.dev</email>
</author>
<published>2024-11-27T15:14:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=22998f078588cf479530ff93e4a66ab4bb666398'/>
<id>urn:sha1:22998f078588cf479530ff93e4a66ab4bb666398</id>
<content type='text'>
</content>
</entry>
<entry>
<title>get rid of a whole bunch of unnecessary rustc_const_unstable attributes</title>
<updated>2024-11-02T08:59:55+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2024-11-02T08:59:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=66351a61844aaabe76173c7c790c1a9adbc3d4a8'/>
<id>urn:sha1:66351a61844aaabe76173c7c790c1a9adbc3d4a8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Re-do recursive const stability checks</title>
<updated>2024-10-25T18:31:40+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2024-10-06T17:59:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a0215d8e46aab41219dea0bb1cbaaf97dafe2f89'/>
<id>urn:sha1:a0215d8e46aab41219dea0bb1cbaaf97dafe2f89</id>
<content type='text'>
Fundamentally, we have *three* disjoint categories of functions:
1. const-stable functions
2. private/unstable functions that are meant to be callable from const-stable functions
3. functions that can make use of unstable const features

This PR implements the following system:
- `#[rustc_const_stable]` puts functions in the first category. It may only be applied to `#[stable]` functions.
- `#[rustc_const_unstable]` by default puts functions in the third category. The new attribute `#[rustc_const_stable_indirect]` can be added to such a function to move it into the second category.
- `const fn` without a const stability marker are in the second category if they are still unstable. They automatically inherit the feature gate for regular calls, it can now also be used for const-calls.

Also, several holes in recursive const stability checking are being closed.
There's still one potential hole that is hard to avoid, which is when MIR
building automatically inserts calls to a particular function in stable
functions -- which happens in the panic machinery. Those need to *not* be
`rustc_const_unstable` (or manually get a `rustc_const_stable_indirect`) to be
sure they follow recursive const stability. But that's a fairly rare and special
case so IMO it's fine.

The net effect of this is that a `#[unstable]` or unmarked function can be
constified simply by marking it as `const fn`, and it will then be
const-callable from stable `const fn` and subject to recursive const stability
requirements. If it is publicly reachable (which implies it cannot be unmarked),
it will be const-unstable under the same feature gate. Only if the function ever
becomes `#[stable]` does it need a `#[rustc_const_unstable]` or
`#[rustc_const_stable]` marker to decide if this should also imply
const-stability.

Adding `#[rustc_const_unstable]` is only needed for (a) functions that need to
use unstable const lang features (including intrinsics), or (b) `#[stable]`
functions that are not yet intended to be const-stable. Adding
`#[rustc_const_stable]` is only needed for functions that are actually meant to
be directly callable from stable const code. `#[rustc_const_stable_indirect]` is
used to mark intrinsics as const-callable and for `#[rustc_const_unstable]`
functions that are actually called from other, exposed-on-stable `const fn`. No
other attributes are required.
</content>
</entry>
<entry>
<title>replace placeholder version</title>
<updated>2024-10-16T03:13:55+00:00</updated>
<author>
<name>Josh Stone</name>
<email>jistone@redhat.com</email>
</author>
<published>2024-10-14T17:22:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f204e2c23b20f3052acaec7e0e231deb4ee23e50'/>
<id>urn:sha1:f204e2c23b20f3052acaec7e0e231deb4ee23e50</id>
<content type='text'>
(cherry picked from commit 567fd9610cbfd220844443487059335d7e1ff021)
</content>
</entry>
</feed>
