Rust Lang Team
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    --- title: Triage meeting 2025-08-06 tags: ["T-lang", "triage-meeting", "minutes"] date: 2025-08-06 discussion: https://rust-lang.zulipchat.com/#narrow/channel/410673-t-lang.2Fmeetings/topic/Triage.20meeting.202025-08-06/ url: https://hackmd.io/5jp-fFeYTHeTIffmmqb6zA --- # T-lang meeting agenda - Meeting date: 2025-08-06 ## Attendance - People: TC, Niko, Scottmcm, Tomas Sedovic, Davidtwco, Josh, Eric Holk, Taylor Cramer ## Meeting roles - Driver: TC - Minutes: Tomas Sedovic ## Scheduled meetings None. Edit the schedule here: https://github.com/orgs/rust-lang/projects/31/views/7. ## Announcements or custom items (Meeting attendees, feel free to add items here!) ### Guest attendee items TC: For any guests who are present, please note in this section if you're attending for the purposes of any items on (or off) the agenda in particular. #### `inline(always)` with `target_feature` davidtwco: Would like to quickly check if something requires an RFC: `inline(always)` doesn't work with `target_feature` at the moment, we prohibit that in the compiler, because LLVM will inline even when target features are incompatible - I'm interested in changing it so that we allow `inline(always)` with `target_feature` and put the `alwaysinline` hint on callsites that are compatible rather than on the function itself for these cases, and lint otherwise - this is what Clang does (but an error instead of a lint). Lint is required for backcompat to existing `inline` functions we might want to upgrade to `inline(always)`. `target_feature` RFC intended `inline(always)` to work, but this was changed in implementation when this issue was discovered, it hasn't changed since. I can write an RFC or an compiler MCP, just want to check if t-lang wanted to make the call or not. Josh: So, instead of having inline(always) complain at the definition site, it would try, look at all the call sites. And if any call site couldn't be inline, it'd give the complaint? David: It would inline it in every call site it could and not inline where it couldn't. Would always need to codegen it for downstream crates that may not be able to inline. Amanieu: target feature is part of the public api so this makes sensee. Josh: Preliminary vibe check: this will need some manner of FCP. It is a language-level change -- whether we want to defer this type of error at call site rather than a definition site. But the concept of solving this somehow is usable. But this particular proposal needs more thought. David: We need an RFC then? TC: I suggest filing an issue on rust-lang/rust that describes this in detail and CC us on it. If we have further thoughts, we can leave them there. If our vibe there is "do it" you can open a PR and nominate it for us, and we'll do our FCP there. Scott: If it can be feature gated, just check it in feature gate and we can talk about it in stabilization. It doesn't feel like a place that needs an RFC. Vibeside: inline(always) is still just a hint everywhere, so this seems plausible to me in that sense of "we don't actually inline it always 100%". Amanieu: I was about to say the same. LLVM does have optimization marks that tell you when it fails to inline something. We could use those to warn. Josh: Agreed to the inline(always) still being technically a hint even though much stronger these days. People do rely on it though so having a mechanism to error is usable. Another thing: the reason we have target_feature considered to be unsafe is: people came up with a couple really obscure cases where you could say that an instruction sequence for one processor could be interepreted in a different way on another processor. For the vast majority of the cases this is not the case. Josh: I'd argue this is not really an unsafe/undefined behaviour. It'd crash the program. We should consider whether target_feature should be a safety concern or threat it as "you've given a hint about this processor and if you run an instruction that the processor doesn't support, that's not a safety issue" Amanieu: I disagree. It's common features are deprecated and the instruction codes are reused. I don't think we can make this safe. Josh: Sounds like it depends on some architectures but not others then. Anyway, this is a proposal for a later time. TC: David, when you file an issue for this, it can serve as a tracking issue for the nightly feature. Scott: Josh, that sounds great if we can actually do it. But if LLVM showed up next week with a flag that says don't use funky instructions, we may not be able to practically do it. Niko: This doesn't feel comparable to stack overflow or abort. It feels like a programmer bug. It's not meeting consensus. Josh: To be explicit I wasn't suggesting we have consensus. I was bringing it up to look at the documentation and see whether it all still holds. TC: There's also inline assembly. Josh: Inline assembly is inherently unsafe. ### Moving right along TC: As we've been doing recently, due to the impressive backlog, I'm going to push the pace a bit. If it's ever too fast or you need a moment before we move on, please raise a hand and we'll pause. ### Design meeting at 12:30 EST / 09:30 PST / 17:30 CET TC: Remember that we have a design/planning meeting that starts half an hour after this call ends. ### Next meeting with RfL We're next meeting with RfL on 2025-08-13 to review the status of RfL project goals. https://github.com/rust-lang/rfcs/pull/3614 ## Rust 2025 review ### Meta TC: We should start thinking about Rust 2025. Our motivating priorities are: - Make every edition a success. - Do so without requiring heroics from anyone. - ...or stressing anyone or everyone out. The tentative timeline will be: | Date | Version | Edition stage | |------------|---------------|--------------------------------| | 2025-04-03 | Release v1.86 | Checking off items... | | 2025-05-15 | Release v1.87 | Checking off items... | | 2025-06-26 | Release v1.88 | Checking off items... | | 2025-08-07 | Release v1.89 | Checking off items... | | 2025-09-12 | Branch v1.91 | Go / no go on all items | | 2025-09-18 | Release v1.90 | | | 2025-10-24 | Branch v1.92 | Stabilize Rust 2025 on nightly | | 2025-10-30 | Release v1.91 | Rust 2025 nightly beta | | 2025-12-05 | Branch v1.93 | Cut Rust 2025 to beta | | 2025-12-11 | Release v1.92 | Announce Rust 2025 is pending | | 2026-01-22 | Release v1.93 | Release Rust 2025 | None. ## Nominated RFCs, PRs, and issues ### "Don't warn on never to any `as` casts as unreachable" rust#144804 **Link:** https://github.com/rust-lang/rust/pull/144804 TC: I started an FCP. People are casting `todo!()` to some concrete type which is useful when you're [...] this stops the warning. Niko: What is this doing? Just not warning that it's unreachable? This seems good. I feel we can do more to make this less annoying but this is a starting point. Scott: I'm tempted to say it should be smarter about when it's not warning. But I don't see any need to block this. Niko: I don't thik we should still warn in other cases. I often use todo! in otherwise good code. It's annoying. Scott: I agree with todo and disagree with panic. Niko: I thought this was just todo. TC+Scott: this is for never type Josh: The only thnig this is doing is the as cast. This is still leaving code unreachable. `as` cast doesn't do anything. Niko: Yeah, I think that is reasonable. I'd be in favour of expanding more such lints but then we need to be more selective. Josh: We can have discussions about what code that's unreachable should be warned about in presence of things like todo!. But that's not this issue. ### "Port `#[link]` to the new attribute parsing infrastructure " rust#143193 **Link:** https://github.com/rust-lang/rust/pull/143193 TC: I proposed FCP on this one. We'll take the breaking change for everything except `#[link="dl"]`. That we'll keep ignore it but we'll issue a deny-by-default final compatibility warning (FCW) that reports in dependencies. Scott: yeah. This feels like the continuing saga we've doing for years on "why'd you put repr(C) on your local variable". Let's do it. Niko: +1 Josh: Ship it. TC: Three checkboxes, it'll go into FCP. ### "`c_variadic`: Add future-incompatibility warning for `...` arguments without a pattern outside of `extern` blocks" rust#143619 **Link:** https://github.com/rust-lang/rust/pull/143619 TC: I proposed FCP merge here too. TC: Outside of an extern bolck you have some function. You use `...` without specifying an argument. Without the pattern part of the parameter. Josh: And you apply macro to it so it doesn't reach rustc's verification. TC: Yes, this just adds the verification pre-expansion as well. Josh: There was only one crate that required doing this and they were very receptive to changing their syntax. This seems fine. Scott: Given that, deal. We did this for all trait methods in 2018 editions? When we started requiring the pattern? Feels good. I don't go "this is obviously something we ought to do" but I don't have any objections to it if people want to do it. Niko: +1 ### "const-eval: full support for pointer fragments" rust#144081 **Link:** https://github.com/rust-lang/rust/pull/144081 TC: We talked about it. Checked a lot of boxes, then asked Ralf to explain it better to us. He did that. What do we thing now? Josh: The answer to the question of "is this a necessary thing implementations would have to implement is: 'yes it is'". Which is fine. TC: I think it's OK. TC: The way we approach it is we disallow everything that's not specifically allowed. Could you write an implementation that allows everything in const and the things not allowed are just UB... maybe, but that's not the headspace Ralf is coming from and he's not explaining it in that context. And I don't think that matters to us today. Niko: The way I read it the answer was somewhere between yes and no. In practice yes, in theory you might change it but it's fine. Josh: You could choose a completely different strategy for const eval that met the same underlying requirement. You could imagine instead of const eval pointers being opaque values, an implementation could use concrete values and force them to be the same at runtime (by using fixed addresses). (That would be a quirky implementation for other reasons, of course.) So there isn't a hard requirement on what you implement. There's a hard requirement on the net effect that allows disassembling and assembling a pointer. TC: Are we good with Scott resolving the concern for us? Scott: I forgot I wrote the concern for this. Yeah. ### "Rewrite the new attribute argument parser" rust#144689 **Link:** https://github.com/rust-lang/rust/pull/144689 TC: This is about attributes on macro calls. You have an attribute like `inline` that you apply to a macro call. Before we weren't validating the attribute fully (unless it was a cfg attribute). We validate the abstract syntax category the macro fell in, but not the particulars for the attribute. This validates it fully. The crater run was clean; I propose we do it. Scott: unfortunate that `-1` is not a literal in macros. TC: Oli tried to fix that. It didn't get merged. Niko: This means I no longer can have a function where the inline attribute if the syntax doesn't match valid Rust syntax? TC: This is on the macro invocation. Niko: Trying to find a good test. Niko: This is being applied in the parser. TC: I asked Jonathan for clarification. Look at the last message in the thread. That's the best explanation of the current behavior compared to this change. https://github.com/rust-lang/rust/pull/144689#issuecomment-3147423610 Niko: He keeps using the example of inline. Is there something special on inline for macro calls? TC: No he's just using that as an example to distinguish what's accepted by the MetaItem vs. the inline attribute. Niko: What happens if you put attributes on the ??. Do they show up in expansion? Niko: The key thing is this is being done at parse time. When I'm parsing a call to a macro, I'll also enforce its attributes need a higher level of validity. That seems fine. You could still make your own inline if you want. I'll mark it with a question to confirm my understanding. TC: My model here for this work overall is that we're making the parsing of attributes more strict. We had been accepting things that we had no reason to accept, and these changes fix that for attributes in various positions. The position that we're fixing it in here is attributes applied to macro calls. That seems OK to me, and I'm generally in favor of parsing things more carefully. TC: With Niko's checkbox, this will move into FCP. ### "Next-Gen transmute" rfcs#3844 **Link:** https://github.com/rust-lang/rfcs/pull/3844 scottmcm: sneaking this in here for awareness and any vibes; not expecting to FCP this week or anything like that. Scott: This was vaguely based on a comment from a lang meeting two years ago. Wanted to move this to people's attention. Removing special type checks from transmute and moving to post-mono error. Josh: I think it's a great area. Having less magic in the compiler is great. The proposed `union_transmute` method should exist, but while many of us would know off the top of our head. But I'm not sure users would. I propose `transmute_unchecked`. Scott: The intrinsic is called transmute_unchecked. I put Libs API on the RFC so they can think about a good name. ### "Tracking Issue for enum access in offset_of" rust#120141 **Link:** https://github.com/rust-lang/rust/issues/120141 TC: We had decided on a plan here: do `try_offset_of` and `offset_of` (a post-mono version of `try_offset_of` where we uwrap the `Option` in a const block). fee1-dead said he would implement that, and then people had things to say. The discussion amounts to the degree that this may end up making a SemVer guarantee about the inhabitedness of various types. Josh: The inmabiteness of an enum being a semver property: yes of course. I can't come up with any scenario where you don't know enough about the enum layout where this wouldn't already be a breaking change regardless. The enum variants would effectively be public to begin with. Josh: I'm having a lot of trouble trying to understand why people think inhabitedness is not a semver guarantee. Scott: My intuition is that it's probably not a semver guarantee now. You can match an enum that's not inhabited now and it will compile. Imagine an error type like ```rust #[non_exhaustive] pub enum MyError { #[non_exhaustive] Case1(), #[non_exhaustive] Case2(), } ``` where in another version you change to: ```rust #[non_exhaustive] pub enum MyError { #[non_exhaustive] Case1(!), #[non_exhaustive] Case2(), #[non_exhaustive] Case3(), } ``` Then all the code that could have been written using `Case1` today is, I think, still something that would *compile* with the updated definition. So it'd be a behaviour change but not a compilation-*breaking* change to change `MyError` this way, even though it changes the inhabitedness of the variant. TC: Consider `pub struct W<T>(T)` vs `pub struct W<T>(Option<T>)`. What happens when you have a `Option<W<T>>`, and then you do `try_offset_of!(Option<W<!>>, Some.0)`? TC: The first struct is inhabited if and only if `T` is inhabited. In the second case it's always inhabited. Now it matters whether you have the first `W<T>` or the second `W<T>` and the argument is that the first and second are otherwise SemVer-compatible. Josh: I agree this can detect the difference between the two `W`s. My argument is what are you doing with the offset, because whatever you're doing will already require knowing what W is. You're either reading it or writing it -- and then you need to know what it is. TC: To be clear, I'm arguing the case for the thread here, though I still think we should do it. To complete the argument, look at Ralf's pseudo-code here: https://github.com/rust-lang/rust/issues/120141#issuecomment-3143110885 TC: You're deserializing the `Option<W<T>`. You're not poking the innards of the `W<T>` -- you're getting an offset for the outer `Option`. But the inhabitedness of the `W<T>` ends up affecting that. Josh: I'm looking at the example and struggling to find why it doesn't already need to know the type in question. Niko: I'm looking at Ralf's example and it makes sense. But: why are we going down this road again? Because it's useful to say that if you have can't have a partially-initialized enum variant. Scott: In struct you can't shrink the size of an uninhabited struct. But for enums it makes sense depending on whether you have space. Josh: And it's important to know that you have space to write to. Niko: That's not the problem of offset_of. It could return a number and it's your problem to not factor it. Scott: I was thinking that everyone would immediately pass this to byte add and it'd be UB. Niko: I don't know why you would want the offset. Ralfs point is mostly that this function is returning None. There's nothing wrong here with the code Ralf wrote here. TC: He's arguing that the `None` that's returned implies that it should be unreachable. Niko: I don't think that follows. I feel like the `None` should simply be unreachable. Full stop. Josh: I think that's the point, yeah. Niko: So what's the problem? Why is this different other than any other variant index that's invalid? Niko: I think what Ralf's writing is not true. You have to assume the input is trusted. I'd expect this: ```rust fn deserialize_into(result_ptr: *mut Result<T, E>, input: &mut &[u8]) -> Result<(), DeserError> { match input.next_byte() { 0 => { // Ok variant ... } 1 => { // Err variant match try_offset_of!(/* Err's field */) { Some(o) => { E::deserialize_into(result_ptr.byte_add(o).cast::<E>(), input)?; /* set discriminant to Err */ Ok(()) } // invalid input: this should never have happened, but no different than... None => Err(...), } _ => Err(...), // <-- ...this case where you have an invalid discriminant } } ``` Niko: What would be the difference here? You can't have this variant just like you can't have a variant that doesn't exist. TC: Another question, what are we expecting `try_offset_of` to return here? E.g., given `W<T>(Option<T>)` vs `W<T>(T)`... what do we expect for `try_offset_of!(Option<W<!>>, Some.0)`? It could conservatively return `None` for both cases, or it could expose the actual inhabitedness. Niko: I was expecting it to leak this information like size_of. Josh: Yeah. If you're relying on size_of you're probably doing something beyond the guarantees of the library to begin with, unless the library has made an explicit guarantee. Niko: That's my thought. You can't rely on that not to change for a minor semver update. You can rely on the type not to change but not the value. (The meeting ended here.) --- ## "`rustc_const_eval`: respect `target.min_global_align`" rust#142198 **Link:** https://github.com/rust-lang/rust/pull/142198 ### "Stabilize the `breakpoint` function" rust#142325 **Link:** https://github.com/rust-lang/rust/pull/142325 ## On radar RFCs, PRs, and issues ### "Fallback `{float}` to `f32` when `f32: From<{float}>` and add `impl From<f16> for f32`" rust#139087 **Link:** https://github.com/rust-lang/rust/pull/139087 ### "[WIP] Forbid object lifetime changing pointer casts" rust#136776 **Link:** https://github.com/rust-lang/rust/pull/136776 ### "Tracking issue for `cfg_select` (formerly `cfg_match`)" rust#115585 **Link:** https://github.com/rust-lang/rust/issues/115585 ### "Split elided_lifetime_in_paths into finer-grained lints" rust#120808 **Link:** https://github.com/rust-lang/rust/pull/120808 ### "Arbitrary self types v2: stabilize" rust#135881 **Link:** https://github.com/rust-lang/rust/pull/135881 ### "Stabilize return type notation (RFC 3654)" rust#138424 **Link:** https://github.com/rust-lang/rust/pull/138424 ### "`#[target_feature]` mismatch on unsafe trait fn vs its impl causes sneaky UB" rust#139368 **Link:** https://github.com/rust-lang/rust/issues/139368 ### "Spurious irrefutable_let_patterns warning with let-chain" rust#139369 **Link:** https://github.com/rust-lang/rust/issues/139369 ### "Stabilize `fn_align`: `#[align(N)]` on functions" rust#140261 **Link:** https://github.com/rust-lang/rust/pull/140261 ### "`core::marker::NoCell` in bounds (previously known an `Freeze`)" rfcs#3633 **Link:** https://github.com/rust-lang/rfcs/pull/3633 ### "Unsafe derives and attributes" rfcs#3715 **Link:** https://github.com/rust-lang/rfcs/pull/3715 ### "[RFC] Allow packed types to transitively contain aligned types" rfcs#3718 **Link:** https://github.com/rust-lang/rfcs/pull/3718 ### "RFC: Add an attribute for raising the alignment of various items" rfcs#3806 **Link:** https://github.com/rust-lang/rfcs/pull/3806 ### "Tracking issue for RFC 2523, `#[cfg(version(..))]`" rust#64796 **Link:** https://github.com/rust-lang/rust/issues/64796 ### "Tracking issue: Support for pointers with `asm_const`" rust#128464 **Link:** https://github.com/rust-lang/rust/issues/128464 ### "lexer: Treat more floats with empty exponent as valid tokens" rust#131656 **Link:** https://github.com/rust-lang/rust/pull/131656 ### "An unsafe const fn being used to compute an array length or const generic is incorrectly described as being an "item"." rust#133441 **Link:** https://github.com/rust-lang/rust/issues/133441 ### "Stabilize `derive(CoercePointee)`" rust#133820 **Link:** https://github.com/rust-lang/rust/pull/133820 ### "experiment with relaxing the orphan rule" rust#136979 **Link:** https://github.com/rust-lang/rust/issues/136979 ### "Tracking issue for unsupported_calling_conventions (cdecl, stdcall, fastcall)" rust#137018 **Link:** https://github.com/rust-lang/rust/issues/137018 ### "Oddity with lifetime elision and type aliases" rust#140611 **Link:** https://github.com/rust-lang/rust/issues/140611 ### "Add `core::ptr::assume_moved`" rfcs#3700 **Link:** https://github.com/rust-lang/rfcs/pull/3700 ### "#[deprecated] lint doesn't trigger when overriding deprecated method" rust#98990 **Link:** https://github.com/rust-lang/rust/issues/98990 ### "Tracking Issue for unicode and escape codes in literals" rust#116907 **Link:** https://github.com/rust-lang/rust/issues/116907 ### "Tracking Issue for enum access in offset_of" rust#120141 **Link:** https://github.com/rust-lang/rust/issues/120141 ### "sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets" rust#123617 **Link:** https://github.com/rust-lang/rust/pull/123617 ### "Built-in attributes are treated differently vs prelude attributes, unstable built-in attributes can name-collide with stable macro, and built-in attributes can break back-compat" rust#134963 **Link:** https://github.com/rust-lang/rust/issues/134963 ### "Decide on behavior of `anonymous_lifetime_in_impl_trait`" rust#137575 **Link:** https://github.com/rust-lang/rust/issues/137575 ### "`rustc_const_eval`: respect `target.min_global_align`" rust#142198 **Link:** https://github.com/rust-lang/rust/pull/142198 ### "[RFC] Add `#[export_ordinal(n)]` attribute" rfcs#3641 **Link:** https://github.com/rust-lang/rfcs/pull/3641 ### "RFC: No (opsem) Magic Boxes" rfcs#3712 **Link:** https://github.com/rust-lang/rfcs/pull/3712 ### "Tracking Issue: Procedural Macro Diagnostics (RFC 1566)" rust#54140 **Link:** https://github.com/rust-lang/rust/issues/54140 ### "Remove unstable cfg `target(...)` compact feature" rust#130780 **Link:** https://github.com/rust-lang/rust/pull/130780 ### "Strengthen the follow-set rule for macros" rust#131025 **Link:** https://github.com/rust-lang/rust/issues/131025 ### "Warn about C-style octal literals" rust#131309 **Link:** https://github.com/rust-lang/rust/pull/131309 ### "Add lint against (some) interior mutable consts" rust#132146 **Link:** https://github.com/rust-lang/rust/pull/132146 ### "RFC: Improved State Machine Codegen" rfcs#3720 **Link:** https://github.com/rust-lang/rfcs/pull/3720 ### "Add `must-use-output` attribute" rfcs#3773 **Link:** https://github.com/rust-lang/rfcs/pull/3773 ### "Effective breakage to `jiff` due to `ambiguous_negative_literals`" rust#128287 **Link:** https://github.com/rust-lang/rust/issues/128287 ### "Simplify lightweight clones, including into closures and async blocks" rfcs#3680 **Link:** https://github.com/rust-lang/rfcs/pull/3680 ### "Macro fragment fields" rfcs#3714 **Link:** https://github.com/rust-lang/rfcs/pull/3714 ### "Add `homogeneous_try_blocks` RFC" rfcs#3721 **Link:** https://github.com/rust-lang/rfcs/pull/3721 ### "Elided lifetime changes in `rust_2018_idioms` lint is very noisy and results in dramatically degraded APIs for Bevy" rust#131725 **Link:** https://github.com/rust-lang/rust/issues/131725 ### "Coercing &mut to *const should not create a shared reference" rust#56604 **Link:** https://github.com/rust-lang/rust/issues/56604 ### "#[cold] on match arms" rust#120193 **Link:** https://github.com/rust-lang/rust/pull/120193 ### "`is` operator for pattern-matching and binding" rfcs#3573 **Link:** https://github.com/rust-lang/rfcs/pull/3573 ### "Unsafe fields" rfcs#3458 **Link:** https://github.com/rust-lang/rfcs/pull/3458 ### "RFC: Allow symbol re-export in cdylib crate from linked staticlib" rfcs#3556 **Link:** https://github.com/rust-lang/rfcs/pull/3556 ### "Hierarchy of Sized traits" rfcs#3729 **Link:** https://github.com/rust-lang/rfcs/pull/3729 ### "Language vs. implementation threat models and implications for TypeId collision resistance" rust#129030 **Link:** https://github.com/rust-lang/rust/issues/129030 ### "RFC: inherent trait implementation" rfcs#2375 **Link:** https://github.com/rust-lang/rfcs/pull/2375 ### "Raw Keywords" rfcs#3098 **Link:** https://github.com/rust-lang/rfcs/pull/3098 ### "RFC: Implementable trait aliases" rfcs#3437 **Link:** https://github.com/rust-lang/rfcs/pull/3437 ### "Should Rust still ignore SIGPIPE by default?" rust#62569 **Link:** https://github.com/rust-lang/rust/issues/62569 ### "types team / lang team interaction" rust#116557 **Link:** https://github.com/rust-lang/rust/issues/116557 ### "Trait method impl restrictions" rfcs#3678 **Link:** https://github.com/rust-lang/rfcs/pull/3678 ### "Closing issues relevant to T-lang on this repo" rfcs#3756 **Link:** https://github.com/rust-lang/rfcs/issues/3756 ### "Implement `PartialOrd` and `Ord` for `Discriminant`" rust#106418 **Link:** https://github.com/rust-lang/rust/pull/106418 ### "Fallout from expansion of redundant import checking" rust#121708 **Link:** https://github.com/rust-lang/rust/issues/121708 ### "What are the guarantees around which constants (and callees) in a function get monomorphized?" rust#122301 **Link:** https://github.com/rust-lang/rust/issues/122301 ### "Policy for lint expansions" rust#122759 **Link:** https://github.com/rust-lang/rust/issues/122759 ### "Decide on path forward for attributes on expressions" rust#127436 **Link:** https://github.com/rust-lang/rust/issues/127436 ### "`continue` expressions in loop conditions" rust#118673 **Link:** https://github.com/rust-lang/rust/issues/118673 ### "Tracking Issue for `breakpoint` feature (`core::arch::breakpoint`)" rust#133724 **Link:** https://github.com/rust-lang/rust/issues/133724 ### "`fn_cast!` macro" rust#140803 **Link:** https://github.com/rust-lang/rust/issues/140803 ### "Permit duplicate imports" rust#141043 **Link:** https://github.com/rust-lang/rust/pull/141043 ### "Stabilize `if let` guards (`feature(if_let_guard)`)" rust#141295 **Link:** https://github.com/rust-lang/rust/pull/141295 ### "RFC: Allow type inference for const or static" rfcs#3546 **Link:** https://github.com/rust-lang/rfcs/pull/3546 ### "RFC: Unsafe Set Enum Discriminants" rfcs#3727 **Link:** https://github.com/rust-lang/rfcs/pull/3727 ### "RFC: naming groups of configuration with `cfg_alias`" rfcs#3804 **Link:** https://github.com/rust-lang/rfcs/pull/3804 ### "de-RFC: Remove unsized_locals" rfcs#3829 **Link:** https://github.com/rust-lang/rfcs/pull/3829 ### "Tracking Issue for `const fn` `type_id`" rust#77125 **Link:** https://github.com/rust-lang/rust/issues/77125 ### "Reject relaxed bounds inside associated type bounds (ATB)" rust#135331 **Link:** https://github.com/rust-lang/rust/pull/135331 ### "Decide what we want about `macro_metavar_expr`" rust#137581 **Link:** https://github.com/rust-lang/rust/issues/137581 ### "Original `pin!()` macro behavior cannot be expressed in Rust 2024" rust#138718 **Link:** https://github.com/rust-lang/rust/issues/138718 ### "Allow while let chains on all editions" rust#140204 **Link:** https://github.com/rust-lang/rust/pull/140204 ### "Lang proposal: Allow `#[cfg(...)]` within `asm!`" rust#140279 **Link:** https://github.com/rust-lang/rust/issues/140279 ### "Add new `function_casts_as_integer` lint" rust#141470 **Link:** https://github.com/rust-lang/rust/pull/141470 ### "Consider folkertdev's `c_variadic` proposal" rust#141524 **Link:** https://github.com/rust-lang/rust/issues/141524 ### "Permit attributes on `use` items" rust#141704 **Link:** https://github.com/rust-lang/rust/issues/141704 ### "Stabilize `#[cfg(version(...))]`, take 2" rust#141766 **Link:** https://github.com/rust-lang/rust/pull/141766 ### "Should a `[..]` slice pattern constitute a discriminant read" rust#141825 **Link:** https://github.com/rust-lang/rust/issues/141825 ### "drop-checking is more permissive when `let` statements have an `else` block" rust#142056 **Link:** https://github.com/rust-lang/rust/issues/142056 ### "Decision: Use the condition name `rust_version` for RFC 2523" rust#142651 **Link:** https://github.com/rust-lang/rust/issues/142651 ### "Stabilize `-Cmin-function-alignment`" rust#142824 **Link:** https://github.com/rust-lang/rust/pull/142824 ### "Warn or error on duplicate attributes" rust#142836 **Link:** https://github.com/rust-lang/rust/issues/142836 ### "A path towards erroring on nonsense attributes" rust#142838 **Link:** https://github.com/rust-lang/rust/issues/142838 ### "emit `StorageLive` and schedule `StorageDead` for `let`-`else`'s bindings after matching" rust#143028 **Link:** https://github.com/rust-lang/rust/pull/143028 ### "const-eval can construct uninhabited values via recursive static initialization" rust#143047 **Link:** https://github.com/rust-lang/rust/issues/143047 ### "add a scope for `if let` guard temporaries and bindings" rust#143376 **Link:** https://github.com/rust-lang/rust/pull/143376 ### "Nested panics and `std::thread::panicking`" rust#143612 **Link:** https://github.com/rust-lang/rust/issues/143612 ### "lower pattern bindings in the order they're written and base drop order on primary bindings' order" rust#143764 **Link:** https://github.com/rust-lang/rust/pull/143764 ### "Should_panic can be applied to non-tests" rust#143799 **Link:** https://github.com/rust-lang/rust/issues/143799 ### "Port `#[should_panic]` to the new attribute parsing infrastructure " rust#143808 **Link:** https://github.com/rust-lang/rust/pull/143808 ### "Port #[macro_export] to the new attribute parsing infrastructure" rust#143857 **Link:** https://github.com/rust-lang/rust/pull/143857 ### "Mark all deprecation lints in name resolution as deny-by-default and report-in-deps" rust#143929 **Link:** https://github.com/rust-lang/rust/pull/143929 ### "stabilize c-style varargs for system, sysv64, win64, efiapi, aapcs" rust#144066 **Link:** https://github.com/rust-lang/rust/pull/144066 ### "Stabilize const TypeId::of" rust#144133 **Link:** https://github.com/rust-lang/rust/pull/144133 ### "Extract TraitImplHeader in AST/HIR" rust#144386 **Link:** https://github.com/rust-lang/rust/pull/144386 ### "Stabilize loongarch32 inline asm" rust#144402 **Link:** https://github.com/rust-lang/rust/pull/144402 ### "Add lint against integer to pointer transmutes" rust#144531 **Link:** https://github.com/rust-lang/rust/pull/144531 ### "Stabilize `sse4a` and `tbm` target features" rust#144542 **Link:** https://github.com/rust-lang/rust/pull/144542 ### "Start reporting future breakage for `ILL_FORMED_ATTRIBUTE_INPUT` in dependencies" rust#144544 **Link:** https://github.com/rust-lang/rust/pull/144544 ## Action item review - [Action items list](https://hackmd.io/gstfhtXYTHa3Jv-P_2RK7A) ## Pending lang team project proposals None. ## PRs on the lang-team repo ### "Frequently requested changes: add bypassing visibility" lang-team#323 **Link:** https://github.com/rust-lang/lang-team/pull/323 ### "Add soqb`s design doc to variadics notes" lang-team#236 **Link:** https://github.com/rust-lang/lang-team/pull/236 ### "Update auto traits design notes with recent discussion" lang-team#237 **Link:** https://github.com/rust-lang/lang-team/pull/237 ### "Update hackmd link to a public link" lang-team#258 **Link:** https://github.com/rust-lang/lang-team/pull/258 ### "Adding a link to "how to add a feature gate" in the experimenting how-to" lang-team#267 **Link:** https://github.com/rust-lang/lang-team/pull/267 ### "text describing how other teams are enabled to make decisions." lang-team#290 **Link:** https://github.com/rust-lang/lang-team/pull/290 ### "Fix link to agenda template" lang-team#315 **Link:** https://github.com/rust-lang/lang-team/pull/315 ### "new decision process" lang-team#326 **Link:** https://github.com/rust-lang/lang-team/pull/326 ### "Clarify that taking input in coroutines currently uses 'yield expressions'" lang-team#328 **Link:** https://github.com/rust-lang/lang-team/pull/328 ### "Document experimental `P-lang-drag-[0-4]` and `I-lang-easy-decision`" lang-team#330 **Link:** https://github.com/rust-lang/lang-team/pull/330 ## RFCs waiting to be merged ### "[RFC] Add `#[export_ordinal(n)]` attribute" rfcs#3641 **Link:** https://github.com/rust-lang/rfcs/pull/3641 ### "Closing issues relevant to T-lang on this repo" rfcs#3756 **Link:** https://github.com/rust-lang/rfcs/issues/3756 ## `S-waiting-on-team` ### "Fallback `{float}` to `f32` when `f32: From<{float}>` and add `impl From<f16> for f32`" rust#139087 **Link:** https://github.com/rust-lang/rust/pull/139087 ### "Stabilize `fn_align`: `#[align(N)]` on functions" rust#140261 **Link:** https://github.com/rust-lang/rust/pull/140261 ### "lexer: Treat more floats with empty exponent as valid tokens" rust#131656 **Link:** https://github.com/rust-lang/rust/pull/131656 ### "`repr(tag = ...)` for type aliases" rfcs#3659 **Link:** https://github.com/rust-lang/rfcs/pull/3659 ### "Remove unstable cfg `target(...)` compact feature" rust#130780 **Link:** https://github.com/rust-lang/rust/pull/130780 ### "Add lint against (some) interior mutable consts" rust#132146 **Link:** https://github.com/rust-lang/rust/pull/132146 ### "Stabilize the `breakpoint` function" rust#142325 **Link:** https://github.com/rust-lang/rust/pull/142325 ### "#[cold] on match arms" rust#120193 **Link:** https://github.com/rust-lang/rust/pull/120193 ### "Permit duplicate imports" rust#141043 **Link:** https://github.com/rust-lang/rust/pull/141043 ### "Stabilize `if let` guards (`feature(if_let_guard)`)" rust#141295 **Link:** https://github.com/rust-lang/rust/pull/141295 ### "Permissions" rfcs#3380 **Link:** https://github.com/rust-lang/rfcs/pull/3380 ### "Rename `AsyncIterator` back to `Stream`, introduce an AFIT-based `AsyncIterator` trait" rust#119550 **Link:** https://github.com/rust-lang/rust/pull/119550 ### "Tracking Issue for `bare_link_kind`" rust#132061 **Link:** https://github.com/rust-lang/rust/issues/132061 ### "Add compiler support for namespaced crates" rust#140271 **Link:** https://github.com/rust-lang/rust/pull/140271 ### "Add new `function_casts_as_integer` lint" rust#141470 **Link:** https://github.com/rust-lang/rust/pull/141470 ### "Stabilize `-Cmin-function-alignment`" rust#142824 **Link:** https://github.com/rust-lang/rust/pull/142824 ### "Add debuginfo_transparent attribute for structs" rust#144223 **Link:** https://github.com/rust-lang/rust/pull/144223 ## Proposed FCPs **Check your boxes!** ### "Fallback `{float}` to `f32` when `f32: From<{float}>` and add `impl From<f16> for f32`" rust#139087 **Link:** https://github.com/rust-lang/rust/pull/139087 ### "[WIP] Forbid object lifetime changing pointer casts" rust#136776 **Link:** https://github.com/rust-lang/rust/pull/136776 ### "Don't warn on never to any `as` casts as unreachable" rust#144804 **Link:** https://github.com/rust-lang/rust/pull/144804 ### "Arbitrary self types v2: stabilize" rust#135881 **Link:** https://github.com/rust-lang/rust/pull/135881 ### "Stabilize return type notation (RFC 3654)" rust#138424 **Link:** https://github.com/rust-lang/rust/pull/138424 ### "Port `#[link]` to the new attribute parsing infrastructure " rust#143193 **Link:** https://github.com/rust-lang/rust/pull/143193 ### "`c_variadic`: Add future-incompatibility warning for `...` arguments without a pattern outside of `extern` blocks" rust#143619 **Link:** https://github.com/rust-lang/rust/pull/143619 ### "const-eval: full support for pointer fragments" rust#144081 **Link:** https://github.com/rust-lang/rust/pull/144081 ### "Rewrite the new attribute argument parser" rust#144689 **Link:** https://github.com/rust-lang/rust/pull/144689 ### "`core::marker::NoCell` in bounds (previously known an `Freeze`)" rfcs#3633 **Link:** https://github.com/rust-lang/rfcs/pull/3633 ### "Unsafe derives and attributes" rfcs#3715 **Link:** https://github.com/rust-lang/rfcs/pull/3715 ### "RFC: Add an attribute for raising the alignment of various items" rfcs#3806 **Link:** https://github.com/rust-lang/rfcs/pull/3806 ### "sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets" rust#123617 **Link:** https://github.com/rust-lang/rust/pull/123617 ### "RFC: No (opsem) Magic Boxes" rfcs#3712 **Link:** https://github.com/rust-lang/rfcs/pull/3712 ### "Remove unstable cfg `target(...)` compact feature" rust#130780 **Link:** https://github.com/rust-lang/rust/pull/130780 ### "Warn about C-style octal literals" rust#131309 **Link:** https://github.com/rust-lang/rust/pull/131309 ### "Stabilize the `breakpoint` function" rust#142325 **Link:** https://github.com/rust-lang/rust/pull/142325 ### "Unsafe fields" rfcs#3458 **Link:** https://github.com/rust-lang/rfcs/pull/3458 ### "[RFC] externally implementable functions" rfcs#3632 **Link:** https://github.com/rust-lang/rfcs/pull/3632 ### "Implement `PartialOrd` and `Ord` for `Discriminant`" rust#106418 **Link:** https://github.com/rust-lang/rust/pull/106418 ### "Policy for lint expansions" rust#122759 **Link:** https://github.com/rust-lang/rust/issues/122759 ### "Decide on path forward for attributes on expressions" rust#127436 **Link:** https://github.com/rust-lang/rust/issues/127436 ### "Stabilize `if let` guards (`feature(if_let_guard)`)" rust#141295 **Link:** https://github.com/rust-lang/rust/pull/141295 ### "RFC: Allow type inference for const or static" rfcs#3546 **Link:** https://github.com/rust-lang/rfcs/pull/3546 ### "Allow `&&`, `||`, and `!` in `cfg`" rfcs#3796 **Link:** https://github.com/rust-lang/rfcs/pull/3796 ### "de-RFC: Remove unsized_locals" rfcs#3829 **Link:** https://github.com/rust-lang/rfcs/pull/3829 ### "Stabilize associated type position impl Trait (ATPIT)" rust#120700 **Link:** https://github.com/rust-lang/rust/pull/120700 ### "Allow while let chains on all editions" rust#140204 **Link:** https://github.com/rust-lang/rust/pull/140204 ### "Stabilize `#[cfg(version(...))]`, take 2" rust#141766 **Link:** https://github.com/rust-lang/rust/pull/141766 ### "Decision: Use the condition name `rust_version` for RFC 2523" rust#142651 **Link:** https://github.com/rust-lang/rust/issues/142651 ### "new decision process" lang-team#326 **Link:** https://github.com/rust-lang/lang-team/pull/326 ## Active FCPs ### "Reject relaxed bounds inside associated type bounds (ATB)" rust#135331 **Link:** https://github.com/rust-lang/rust/pull/135331 ### "emit `StorageLive` and schedule `StorageDead` for `let`-`else`'s bindings after matching" rust#143028 **Link:** https://github.com/rust-lang/rust/pull/143028 ### "Port `#[should_panic]` to the new attribute parsing infrastructure " rust#143808 **Link:** https://github.com/rust-lang/rust/pull/143808 ### "stabilize c-style varargs for system, sysv64, win64, efiapi, aapcs" rust#144066 **Link:** https://github.com/rust-lang/rust/pull/144066 ### "Extract TraitImplHeader in AST/HIR" rust#144386 **Link:** https://github.com/rust-lang/rust/pull/144386 ### "Stabilize loongarch32 inline asm" rust#144402 **Link:** https://github.com/rust-lang/rust/pull/144402 ### "Add lint against integer to pointer transmutes" rust#144531 **Link:** https://github.com/rust-lang/rust/pull/144531 ### "Stabilize `sse4a` and `tbm` target features" rust#144542 **Link:** https://github.com/rust-lang/rust/pull/144542 ### "Start reporting future breakage for `ILL_FORMED_ATTRIBUTE_INPUT` in dependencies" rust#144544 **Link:** https://github.com/rust-lang/rust/pull/144544 ## P-critical issues None.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully