Rust Libs
      • 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
      • Invitee
    • 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
    • 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 Sharing URL Help
Menu
Options
Versions and GitHub Sync 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
Invitee
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: Libs-API Meeting 2025-10-21 tags: ["T-libs-api", "Libs Meetings", "triage-meeting", "minutes"] date: 2025-10-21 discussion: https://rust-lang.zulipchat.com/#narrow/channel/259402-t-libs.2Fmeetings/topic/Meeting.202025-10-.7B21.2C22.7D/with/546289012 url: https://hackmd.io/-3EwglvOR2W-jXGyPEoUXQ --- # Libs-API Meeting 2025-10-21 ###### tags: `Libs Meetings` `Minutes` **Meeting Link**: https://meet.jit.si/rust-libs-meeting-crxoz2at8hiccp7b3ixf89qgxfymlbwr **Attendees**: Josh, The 8472, Chris, Tomas Meeting notes: Tomas ## Agenda - Triage - Anything else? ## Triage ### FCPs 18 rust-lang/rust T-libs-api FCPs - merge rust.tf/80437 *Tracking Issue for \`box\_into\_inner\`* - (1 checkboxes left) - merge rust.tf/146792 *Implement \`TryFrom\<char\>\` for \`usize\`.* - (3 checkboxes left) - merge rust.tf/85122 *Tracking Issue for inherent unchecked integer methods* - (3 checkboxes left) - merge rust.tf/106418 *Implement \`PartialOrd\` and \`Ord\` for \`Discriminant\`* - (2 checkboxes left) - merge rust.tf/146560 *Add the \`cpuid\` target feature* - (5 checkboxes left) - merge rust.tf/116258 *Tracking Issue for explicit\-endian String::from\_utf16* - (1 checkboxes left) - merge rust.tf/139087 *Fallback \`{float}\` to \`f32\` when \`f32: From\<{float}\>\` and add \`impl From\<f16\> for f32\`* - (4 checkboxes left) - merge rust.tf/145656 *Stabilize s390x \`vector\` target feature and \`is\_s390x\_feature\_detected!\` macro* - (3 checkboxes left) - close rust.tf/136638 *warn on empty precision* - (3 checkboxes left) - merge rust.tf/145948 *Stabilize 29 RISC\-V target features (\`riscv\_ratified\_v2\`)* - (3 checkboxes left) - merge rust.tf/75027 *Tracking Issue for slice::array\_windows* - (3 checkboxes left) - merge rust.tf/146660 *Tracking issue for release notes of #146410: Iterator repeat: no infinite loop for \`last\` and \`count\`* - (0 checkboxes left) - merge rust.tf/141994 *add Iterator::contains* - (3 checkboxes left) - merge rust.tf/129333 *Tracking Issue for \`lazy\_get\`* - (3 checkboxes left) - merge rust.tf/140808 *Implement Default for &Option* - (2 checkboxes left) - merge rust.tf/63569 * Tracking issue for \`#!\[feature(maybe\_uninit\_slice)\]\`* - (3 checkboxes left) - merge rust.tf/65816 *Tracking issue for \`vec\_into\_raw\_parts\`* - (3 checkboxes left) - merge rust.tf/139201 *Tracking Issue for \`Duration::from\_nanos\_u128\`* - (4 checkboxes left) 1 rust-lang/stdarch T-libs-api FCPs - merge github.com/rust-lang/stdarch/issues/1935 *Make \`cpuid\` safe and update docs* - (5 checkboxes left) [jackh726 (1)](https://rfcbot.rs/fcp/jackh726), [the8472 (14)](https://rfcbot.rs/fcp/the8472), [traviscross (1)](https://rfcbot.rs/fcp/traviscross), [dtolnay (2)](https://rfcbot.rs/fcp/dtolnay), [nikomatsakis (3)](https://rfcbot.rs/fcp/nikomatsakis), [scottmcm (5)](https://rfcbot.rs/fcp/scottmcm), [BurntSushi (15)](https://rfcbot.rs/fcp/BurntSushi), [joshtriplett (9)](https://rfcbot.rs/fcp/joshtriplett), [Amanieu (4)](https://rfcbot.rs/fcp/Amanieu) ### (nominated) rust.tf/libs506 *In\-place \`String::replace\_first\` and \`String::replace\_last\`* The 8472: There's a PR open, requesting to prioritise this ACP. https://github.com/rust-lang/rust/pull/134316 Josh: This mentions `replace_first` and `replace_last`. I'm wondering to what extent people may want `replace_all`. The 8472: Didn't we discuss that last week? The 8472: There can't be an in-place replacement. If the replacement is long it would.. Josh: It's using `replace_range`. If you allocate a new chunk of memory and replace something in the memory, you'd have to replace in the end. The 8472: If you do replace_all, you have to do something clever to avoid multiple reallocations. Josh: I've seen logic that tries to do exactly that and attempts to not repeatedly move the end of the string. So it moves any given piece of the string only once. That seems sensible but it's not something we have logic for. Josh: Here's a possible proposed `replace_in_place`. That's interesting but as the author mentioned, you still want `replace_first` and `replace_last`. The 8472: Do we want that or point people to some sort of rope? Josh: We already have `replace_range` and this is just using match indicies and `replace_range`. These are very reasonable additions. The 8472: BurntSushi was pinged, but did not reply. Josh: That was ten months ago. The 8472: We probably should have `Pattern` for the needle. The proposal has a needle `str` Josh: The PR takes a `Pattern` for a `from` The 8472: Then that's about as good as we can do. Josh: Approve the ACP and r+ the PR? The 8472: Sounds sensible. ### (nominated) rust.tf/55724 *Tracking issue for alloc\_layout\_extra* The 8472: We already discussed this. It's in ACP. We can un-nominate it. ### (nominated) rust.tf/79995 *Tracking Issue for maybe\_uninit\_write\_slice* The 8472: Nominated for FCP. The 8472: I think we should check the bigger picture. What the other `MaybeUninit<T>` slice methods do. The 8472: We have a bunch of other methods on slice. So these are in the right place. https://doc.rust-lang.org/nightly/std/primitive.slice.html#impl-%5BMaybeUninit%3CT%3E%5D Josh: Naming bikesheds aside these seem fine to me. I'm all for having safe methods for this. The 8472: We have the `write_filled`, `write_copy_from_slice` and `write_clone_from_slice` Josh: Ship it. The 8472: FCP it. ### (nominated) rust.tf/139201 *Tracking Issue for \`Duration::from\_nanos\_u128\`* Josh: Yes please. The 8472: BurntSushi already FCPd it, we can unnominate it. Josh: Checking a box. ### (nominated) rust.tf/139911 *Tracking Issue for \`exact\_div\`* The 8472: Still nominated from the previous discussion. Josh: Amanieu mentioned renaming it to put `_exact` at the end and that makes sense in hindsight. Given we have `div_ceil`, `div_floor`, `div_euclid` this makes sense. The 8472: I don't disagree with the change. We can un-nominate this. Josh: We can un-nominate it and let the PRs goforward. ### (nominated) rust.tf/141445 *Add \`FromIterator\` impls for \`ascii::Char\`s to \`String\`s* The 8472: I think Amanieu or someone didn't like the `char` API in general that much. Josh: I feel that's something that's fine to go ahead and approve on the basis that all of ascii chr is currently unstable and we can review the API in more detail when it's up for stabilization. The 8472: I guess. That's more work later. Josh: It is but I don't think this tips the scale in that regard. We can go ahead and approve this. The 8472: Do we want the one for `Cow` too? Josh: I'm all for it. The 8472: We have an equivalent for String. The 8472: Not opposed for the `Cow` case but it feels closer to filling in the box. Josh: That may be but I feel anythnig we offer for `String` we want to offer for `Cow<str>` The 8472: Can we r+ this? Josh: Yes, especially since this is asking for `ascii::chr` which is unstable. Chris: Mention it in the tracking issue so we've got all the APIs in one place. Josh: I'm wondering about adding FromIterator for ascii::char for char too. And we should have one for `Box<str>`. The 8472: Should we keep the PR open? Josh: No, we should r+ and leave a comment. ### (nominated) rust.tf/144336 *Tracking Issue for checked bitshifts* The 8472: Related to the `exact_div` naming. Was discussed, previously, we'll unnominate it for now. ### (nominated) rust.tf/145628 *\[std\]\[BTree\] Fix behavior of \`::append\` to match documentation, \`::insert\`, and \`::extend\`* The 8472: It's in FCP, Amanieu nominated it last week. Josh: I guess it was about "please take a look at the crater run". Yeah we drop the nomination, we're done. The only reason to leave this nominated is that it needs r+ once the FCP is over. But we can do that during triage. ### (nominated) rust.tf/146553 *add trait impls to proc\_macro::Ident* Josh: The thing nominated here was an `add trait impls` PR. There was also an ACP. https://github.com/rust-lang/libs-team/issues/573 Josh: The `PartialEq` implementation for ident is written as `PartialEq<T>` for any T that's `AsRef<str>`. The symbol part seems fine but doing this for all `T: AsRef<str>` is enough of a blanket impl that it would stop people from writing their own `PartialEq` for their own types. The 8472: They would have to impl never for `AsRef<str>` Josh: Yes. And they would also ?? memoization check. I get the impression we avoid blanket impl T when we can. Josh: We have a lot of reflexive impls -- those are all fine. We have blanket impls on `PartialEq` on references and that's fine. We `PartialEq` for any F where F is a `fn` pointer. We have a `PartalEq` for `[U]` for `[T]`. Josh: We don't have a single blanket impl that's an `impl PartialEq<T>`. This seems like it would be unfortunate. The 8472: Comment if you want but I think we should leave this for next week. Josh: Agreed. ### (nominated) rust.tf/147068 `P-lang-drag-1` *Move CoercePointee to core::ops* The 8472: Amanieu wanted someone else to decide where it goes. Someone needs to come up with a plan where we put things. Right now we have the marker traits module and the ops module. Josh: I'd still vote for the `ptr` module where the pointee currently is. The 8472: Tmandry mention CoercePointee, CoerceUnsized etc. Josh: Fair, they should be in one place. The main thing that came out of the lang meeting was that this is a Libs call and that someone should decide which thing should go to what module. The 8472: What do we do. Should we have a discussion on the tracking issue, zulip thread, once we have a week with more people attending. Josh: Last time we talked no one had a strong opinion. I'm looking at the experimental things in `core::ops`. The majority are things for which we have a dedicated operator. The top of the module and summary says "overloadable operators". Out of the list of things that are stable, as far as I can tell the only one that's not an overloaded operator is `RangeBounds`. Josh: If you look at the unstable ones, it's `FromResidual` which is related to `Try`. Things like `IntoBounds` for ranges, not an op. `DerefPure` which is a marker trait not an op. Half of these are arguably operators and half are arguably not. Josh: We should have a documentation of "should this be only for things associated with operators" or "should this be more broadly where most traits live". The 8472: We could also say that operators go to `core::ops` and associated traits could go to a submodule (`core::ops::traits` or `core::ops::markers`). Josh: I'd rather if there's a good name to have a top module of that name rather than submodules. The 8472: Should we ask for volunteers about bikeshedding this? Josh: Yes, ask who in libs-api is interested in the outcome in this. It would also be nice if going in we had a quick run of a tool that runs the `pub` traits of the standard library and where they currently live. The 8472: Yes, an overview might help us with a general understanding of what our strategy is. Josh: we can do that in rustdoc: https://doc.rust-lang.org/core/all.html#traits Josh: That gives a list of every trait in the standard library. Josh: RangeBounds is actually duplicated in `core::range` for the new range API. That's interesting in that that can be the canonical place for it and `ops` can just be a re-export. Given that I'd be inclided that `ops` is for operators with some historical re-exports. `marker` is for marker traits (and we need to define what a marker trait is) and we should figure out what to do with traits that are neither. Josh: Interestingly, `core::sync` is where `Atomic` and `Exclusive` live, but we don't put `Send` and `Sync` in there. The 8472: `Send` is not necessarily for synchronization. ### (waiting on team) rust.tf/136732 *Implement \`Random\` for array* Tomas: discussed two weeks ago, sent a reply with the next steps: https://github.com/rust-lang/rust/pull/136732#issuecomment-3378060391 Tomas: Remove `waiting-on-libs-api`? removed label since josh replied ### (waiting on team) rust.tf/145504 *Add some conversion trait impls* Tomas: Author responded to the request, removed the two impls we asked them to drop. Ready for the libs-api team to take another look? The 8472: Needs FCP The 8472: Last week we said to remove the first two and the rest is okay. Josh: They marked those two as unstable in the top comment. They removed the impls, the comment should just be updated. I've updated it. Josh: This seems fine, shall we FCP it? ### (waiting on team) rust.tf/146009 *Implement \`Receiver\` for \`Exclusive\`* The 8472: Did we come to a conclusion? Josh: We came to a conclusion that it doesn't cause any behaviour change. It's an unstable impl on unstable trait on an unstable type. It's fine if we add it, it's fine if we don't. Josh: We don't want to stabilize this unless we want to implement `DerefMut`. It only exists if we want to implement that. I'm not sure we actually want to make that change. It seems very invasive and very strange for a type that's `DerefMut` but not `Deref`. When will we have another type like that. Josh: I think we should not add this. Can you name one other type that will ever have DerefMut and not Deref? It seems like a specific use for this specific type. The 8472: The `&mut` for `!Sync` type isn't `Send`, right? The 8472: There's an explicit `Send` impl for ?? but it isn't implemented for `&mut`. If the documentation is correct, it should be always Send. Josh: It says `&mut T` is `Send` if and only if `T` is `Send`; it doesn't have to be `Sync`. And same for `Sync`, `&mut T` is `Sync` if `T` is `Sync`. The 8472: If we're not going to add this DerefMut and the Receiver only exists to keep that possibility open, I don't think it's worth adding it. I agree. Josh: More to the point, I don't think there's value in separating the two. This can be trivially added in the future. So if we hypothetically implemented `DerefMut` in the future, we could add the `Receiver` then. The 8472: But with `Receive` you could still use the arbitrary self types feature, right? Josh: You could use it if we stabilized it. So yes, you could potentially write something that uses exclusive for this. But it seems the person adding this said they want it to use `DerefMut` in the future. If someone had the use case for that, then we can talk about it then. Josh: I don't think we should make the type less usable to allow for a future `DerefMut`. Because I don't think we should add the future `DerefMut`. The 8472: Looking at the Exclusive tracking issue. The 8472: There's Amanieu's objection regarding the get_mut method: https://github.com/rust-lang/rust/issues/98407#issuecomment-3378398343. The 8472: Should we FCP the Exclusive type itself? Josh: Has it actually been there that long? The 8472: We added it in June. Josh: Ok, seems fine. The 8472: There's a stabilisation report from August. People are using handrolled options of it. The only question is the `AsMut` and that can be implemented later. The 8472: Yeah, I guess we can FCP it. I'll write a comment. ### (waiting on team) rust.tf/147400 *TryFrom\<integer\> for bool* Josh: This one seems somewhat straightforward to me. We rejected this in 2018 on the basis that it is ambiguous. The minor reason is convention differences: most of the time people want 0: false, 1: true but it's unclear what people want for the rest. And then there's the UNIX convention where 0 means success. And someone can misinterpret the value here. Josh: The only argument I can see for this is having to write the "if 0 ... if 1 ... otherwise error" code. The 8472: Our `TryFrom` are never modifying the value. If it maps, it should be round-trippable. Josh: The definition of From and TryFrom mention that the conversion is obvious: the only reasonable conversion for each type. The 8472: We have the `as` cast that interprets 0 false and 1 to true. Josh: And we also have a `From<bool>`. The question is if we want to go the other direction. The 8472: But if we can enable round trip, we should. We have this for integers, `char`. Josh: And if you think of `bool` as an enum, this is similar to `TryFrom` to various enums. The 8472: Even alignment can be from a `NonZero<usize>` Josh: Alright, no objections. This will need an FCP to overrule the previous decline from 7 years ago. We should have the team explicitly show changing our minds. The 8472 to reply and start and fcp ### (new change proposal) rust.tf/libs680 *`{str|slice}::strip_affixes`* The 8472: I don't like the `strip` variant at the first glance. It returns an `Option` and it's unclear what it means: do both ends match or only one end? Josh: Checking the rarity of the word: ```text /usr/share/dict/scowl/english-words.20:prefix /usr/share/dict/scowl/english-words.20:suffix /usr/share/dict/scowl/english-words.35:affix ``` Josh: if you search for "affix" in a code search, every result is the verb. As in "I want to affix this to some other data structure". Josh: Ignoring the bikeshed for the moment, they're trying to solve the problem of wanting to strip the prefix and the suffix. The 8472: I was seeing it in computer games e.g. Diablo 2. The prefix and suffix were called affix together. Josh: In CS specifically, "circumfix" might be reasonably more accurate here. Josh: Strip affixes could also be interpreted as stripping *either* instead of *both*. Strip "circumfix" sounds like it will strip both. The 8472: Though that sounds awfully close to "parsing HTML with regexes". Josh: Looking at the examples providing, those seem to be valid use cases. I think I buy this. I think it's a slight readability improvement. The 8472: But it also seems kind of niche. Josh: It's absolutely niche. The 8472: If you're parsing complex data then maybe you should use an actual parser. Josh: We had the exact argument when strip_prefix and strip_suffix were introduced. I don't disagree with the point that when you're doing anything nontrivial you should pull in winnow something. But for the simple cases you don't need that. The Cargo example linked should not be replaced by a parser library or a regex. The 8472: Is that a fast path? Josh: It's not a fast path, it's a check. It distinguishes between two separate cases: `target.'cfg(windows)'.build-dependencies` vs.`x86_64-pc-windows-msvc` The 8472: I think this is still too niche. Josh: I think the fact that we have three different examples across three different Rust codebases suggests it's not that rare. The 8472: I want to see clear signs of usage before we stabilize. Josh: That sounds like let's approve the ACP and evaluate the usage before stabilization. The 8472: Ok. Josh: Are you fine with the name `circumfix` The 8472: I think it's clearer than `affix` even though the name is more obscure. Josh: I think we should decline the `trim_` variant. We already have `trim` which does that for the more specific case. You have to call `trim_matches` if you want all prefixes and suffixes you specify. But you can also just need to do `.trim_prefix(...).trim_suffix(...)`. For `strip_` it's more awkward because you have to do the `.and_then` or two `let`s. ### (new change proposal) rust.tf/libs679 *ACP: Freezable Mutex Guards* The 8472: I looked at it last week. I thougth they wanted an `Arc<Mutex>` but they say that's not what they want. Josh: The talk about locking and unlocking is also not just about performance, but it could make the code less correct. Josh: FreezeGuard is an unlock call lock. What they want is the ability to unlock a mutex temporarily to call a function given you have a MutexGuard. The 8472: But given the MutexGuard, you could Arc lock it, do something and then lock it again. Josh: In this case this feels like it's just a condition variable? The 8472: They brought that up. The top-level comment was updated so the example should hopefully be fixed already. Josh: One of the complaints they had here was they wanted the ability to do this using a mutable reference. And it doesn't seem like the problem of "call an arbitrary function" is as important. I'm wondering if we could just add a function to `condvar` that does a wait MutRef. But then I'm wondering whether that would break scopes and etc. Josh: It seems like you could have a `wait(&mut MutexGuard)` and returns a mutable unit. That seems like that would solve their problem if what they want is a condvar. The 8472: If you pass it to the method, the other method could deref it and mutate the data. ... What can you assume about the mutex guard? The 8472: MutexGuard is not Send. In the meantime the value can't be accessed by different threads while it's held. Josh: But you can already unlock the MutexGuard by passing it in value. The 8472: But if you unlock it, another thread can lock it and mutate the value. Josh: But that's exactly what condvar does. The 8472: But you can't do that when you pass a `&mut` to the function. Josh: We should add this as unstable, draw attention to it and see if it breaks any assumptions. The 8472: We have the `!Send` impl for the MutexGuard. So the code can currently assume that if it holds the MutexGuard, you can assume no other thread will touch this value in the meantime even if you hand out mutable references to it. The 8472: You could put teh `&mut` reference into a scoped thread right. That would work. So maybe this isn't as solid an assumption. The 8472: So the alternative proposal is to have a special method on condvar? Josh: Yeah, have a wait method that takes a `&mut ScopeGuard` rather than an owned `ScopedGuard`. The 8472: That makes sense. Josh: With Tokio's Mutex, the MutexGuard has a method to get a reference to the Mutex. The 8472: Maybe. Josh: I wrote a comment. The 8472: Sounds good. ### (new change proposal) rust.tf/libs677 *ACP: \`std::fs::read\_dir\_all\`* The 8472: This is a simplified walkdir. Josh: I though this was `read_dir.collect()`. Josh: The fact that it's a recursive read_dir is isterenting. I want this. I think we should do this. I would add a big chunk of walkdir to the standard library. But I think that a portion can't be added easily in isolation. The 8472: There are several crates for filesystem traversal and I've used all of them in different usecases. Josh: There's walkdir, ignore (walkdir plus filtering) and there's jwalk which is walkdir in parallel. And there's also async-walkdir. Josh: But that one will be useful if we added get_dense into iouring. The 8472: Same. Josh: I genuinely think it would be fun to have a synchronous target that's x86-64-unknown-linux-uring where the entire implementation is supposed to run on iouring. The 8472: Interesting. I don't think it would speed things up that much. Josh: The rationale is it could use thread pool to do this for you. You would have one uring shared across all the threads inthe process. The 8472: You're talking about just synchronous std api, right? Josh: Part of the rationalle is you wouldn't have to make actual syscalls, you could just do polling. The 8472: Doesn't that require root? Josh: I think some of it may be available to non-root? 5.11 and newer allows you use non-root if you have CAP_SYS_NICE and as of 5.13 you can do SQ_POLL with no privileges. The 8472: And it's not polling all the time, it stops polling at some point, right? And you'll need to re-arm it. Josh: There is a thread_idle_ms that you can set. But you can in theory set that for a large number of milliseconds. The 8472: I found myself wanting the multithreading, filtering, skipping entire subtrees. Josh: I've used a half-a-dozen features of walkdir and a trivial implementation walkdir is not sufficient The 8472: In the std we have been conservative about every time you call metadata you get fresh metadata. And a crate has more flexibility to be efficient. Josh: That's true. There's also a limit in how many file descriptors you can have at one time. Walkdir has logic where it can close things and reopen them later. The 8472: And it also has loop detection. Josh: You need that only if follow_links is true. The 8472: That's complicated that I'm sceptical we'll want this in the standard library. Josh: I still want it, but a single ACP isn't enough and a single function with no parameters is enough. Josh: Close the ACP and say that the thing we'd consider is a more fully-featured walkdir. The 8472: I think this is above our complexity threshold that we'll get done any time soon. Josh: I'd prioritize this below the rewrite of `Path`. The 8472: For practical reasons, we should not encourage someone to run off and do a lot of design work. Josh: I agree. I'd phrase it as: we don't want to do the simple case, this would require a lot more design work and we would not recommend doing this without talking to us first. The 8472: Agreed. The 8472: And I think the ecosystem crates do the job just fine. They're not abandoned. Josh: The crates in the ecosystem are just fine. This is more of a: "if something has a hundreds of millions of the ecosystem we should consider whether it's stable enough". I'm trying to push Random in. This seems easier. I want to push bitflags. The 8472: random I agree, it's complex. I'm not sure we should be doing this for bitflags. Josh: For bitflags I'm not sure if that's a library or language feature. ### (new change proposal) rust.tf/libs676 *\`only\` on iterators* ### (new change proposal) rust.tf/libs674 *Vec::recycle* ### (new change proposal) rust.tf/libs661 *ACP: More float constants* ### (new change proposal) rust.tf/libs660 *ACP: std::rc::RcUninit for deferred initialization and await\-safe cyclic construction* ### (new change proposal) rust.tf/libs659 *Generalize ExactSizeIterator to QuantifiedIterator* ### (new change proposal) rust.tf/libs656 *implement Default for more iterators* ### (new change proposal) rust.tf/libs653 *ACP: Add 1 type parameter to \`RangeBounds\<Start, End = Start\>\` and all existing range types* ### (stalled change proposal) rust.tf/libs347 *Context reactor hook* ### (stalled change proposal) rust.tf/libs296 *ACP: Designing an alternative \`FromStr\`* ### (stalled change proposal) rust.tf/libs457 *APC: split\_pattern on slices* ### (stalled change proposal) rust.tf/libs371 *ACP: primitive numeric traits* ### (stalled change proposal) rust.tf/libs504 *Implement Read and Write for Arc\<T\> for types where &T implements Read and Write, \*and\* it is safe to do so.* ### (stalled change proposal) rust.tf/libs304 *ACP: Avoid the common mistake of \`for x in 0u8..\`* ### (stalled change proposal) rust.tf/libs395 *\`impl core::str::Pattern for \[&str; N\]\`* ### (stalled change proposal) rust.tf/libs348 *std::os::unix::env::{argc, argv}* ### (stalled change proposal) rust.tf/libs111 *Restructure ptr\_metadata to minimal support* ### (stalled change proposal) rust.tf/libs336 *Add \`or\_try\_\*\` variants for HashMap and BTreeMap Entry APIs* _Generated by [fully-automatic-rust-libs-team-triage-meeting-agenda-generator](https://github.com/rust-lang/libs-team/tree/main/tools/agenda-generator)_

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